2 Feign远程调用 在前后端分离架构中,服务层被拆分成了很多的微服务,服务与服务之间难免发生交互,比如:课程发布需要调用 CMS服务生成课程静态化页面,本节研究微服务远程调用所使用的技术. 下图是课程管理服务远程调用CMS服务的流程图: 1.cms服务将自己注册到注册中心. 2.课程管理服务从注册中心获取cms服务的地址. 3.课程管理服务远程调用cms服务. 2.1 Ribbon 2.1.1 Ribbon介绍 Ribbon是Netflix公司开源的一个负载均衡的项目(https://git…
cms相当于客户端 配置客户端的信息 后面加逗号分隔开 50102表示向两台eureka服务上报服务,如果有一台死掉了 那么还可以上另外的一台去注册服务 直接把ip注册到eureka 启动类加注解 重启cms的服务.eureka的注册列表内 就可以看到cms的微服务了 eureka2也有了 课程管理也注册到微服务 先加入依赖.然后刷新包 启动类加注解 配置文件内 client端的配置 启动课程管理的微服务 日志级别改成info 因为启动控制台 输出了太多的信息 结束…
5.3 CMS添加页面接口 cms服务对外提供添加页面接口,实现:如果不存在页面则添加,否则就更新页面信息. 此接口由课程管理服务在课程预览时调用. 接口方法.:页面没有就添加.有了更新数据 之前的接口定义的直接就是新增 定义api接口 所以建议单独定义保存页面的接口 实现接口 然后在Service内实现这个接口 页面有一个页面索引是 pageName+webPath+siteId组成 结束…
5.2 CMS页面预览测试 CMS已经提供了页面预览功能,课程预览功能要使用CMS页面预览接口实现,下边通过cms页面预览接口测试课 程预览的效果. 1.向cms_page表插入一条页面记录或者从cms_page找一个页面进行测试. 注意:页面配置一定要正确,需设置正确的模板id和dataUrl. 站点id用课程详情的这个站点id { "_id" : ObjectId("5b3469f794db44269cb2bff1"), "_class" :…
5 课程预览功能开发 5.1 需求分析 课程预览功能将使用cms系统提供的页面预览功能,业务流程如下: 1.用户进入课程管理页面,点击课程预览,请求到课程管理服务 2.课程管理服务远程调用cms添加页面接口向cms添加课程详情页面 3.课程管理服务得到cms返回课程详情页面id,并拼接生成课程预览Url 4.课程管理服务将课程预览Url给前端返回 5.用户在前端页面请求课程预览Url,打开新窗口显示课程详情内容 这是页面 预览的接口 静态化,然后把数据返回给浏览器 获取数据.获取模板,然后静态化…
3.2.1 技术需求 课程详情页面是向用户展示课程信息的窗口,课程相当于网站的商品,本页面的访问量会非常大.此页面的内容设 计不仅要展示出课程核心重要的内容而且用户访问页面的速度要有保证,有统计显示打开一个页面超过4秒用户就 走掉了,所以本页面的性能要求是本页面的重要需求. 本页面另一个需求就是SEO,要非常有利于爬虫抓取页面上信息,并且生成页面快照,利于用户通过搜索引擎搜索 课程信息. 3.2.2 解决方案 如何在保证SEO的前提下提高页面的访问速度 : 方案1: 对于信息获取类的需求,要想提…
我们先搭建单机环境 govern是治理的意思, 这样就把工程创建好了 创建包 创建SpringBoot的启动类. 在父工程里面已经确定了Spring Cloud的版本了.相当于锁定了版本 接下里只需要在子工程内引入eureka的包.那么这一些列相关的依赖jar包就自动的引进来.并且版本也 不用你管了.因为父工程已经锁定了Sring Cloud的版本. 引入后刷新一下包 spring cloud全部是基于Spring boot进行的开发,所以我们引入了Spring Cloud 后,springBo…
1 Eureka注册中心 1.1 需求分析 在前后端分离架构中,服务层被拆分成了很多的微服务,微服务的信息如何管理?Spring Cloud中提供服务注册中 心来管理微服务信息. 为什么 要用注册中心? 1.微服务数量众多,要进行远程调用就需要知道服务端的ip地址和端口,注册中心帮助我们管理这些服务的ip和 端口. 2.微服务会实时上报自己的状态,注册中心统一管理这些微服务的状态,将存在问题的服务踢出服务列表,客户 端获取到可用的服务进行调用. A要想调用B的服务就必须知道服务的地址 ip和端口…
cms和课程的微服务重启 从数据库内找一条数据 进入到了断点 拼装课程信息 ,然后进行远程调用 抛出异常 可能是开了两个cms服务的事,负载均衡 到了另外一个服务里面 ,关掉一个 把02关掉,重启cms01 eureka服务也重启下,因为刚才关掉了一个cms的服务 如果要远程调用,需要增加无参构造方法.所以必须在这里个里面增加一个无参的构造方法 再次重启 课程的服务 远程调用后页面返回了null 在cms服务里面加断点测试 更新的时候id为null了. cmsPage这个对象为空了 这里变量写错…
测试模板 页面的模板已经做好了 直接那来用 测试模板,把这个模板copy到这个测试freemarker的resources目录 远程调用 获取数据 返回模板的文件名 tomcat不支持ssr.nginx支持 ssr文件页面的合并 4.3.3 模板保存 模板编写并测试通过后要在数据库保存: 1.模板信息保存在xc_cms数据库(mongodb)的cms_template表 2.模板文件保存在mongodb的GridFS中. 第一步:将模板文件上传到GridFS中 由于本教学项目中模板管理模块没有开…