学成在线(第9天)课程预览EurekaFeign桃花换了酒钱

在前后端分离架构中,服务层被拆分成了很多的微服务,微服务的信息如何管理?SpringCloud中提供服务注册中心来管理微服务信息。为什么要用注册中心?1、微服务数量众多,要进行远程调用就需要知道服务端的ip地址和端口,注册中心帮助我们管理这些服务的ip和端口。2、微服务会实时上报自己的状态,注册中心统一管理这些微服务的状态,将存在问题的服务踢出服务列表,客户端获取到可用的服务进行调用。

SpringCloudEureka是对Netflix公司的Eureka的二次封装,它实现了服务治理的功能,SpringCloudEureka提供服务端与客户端,服务端即是Eureka服务注册中心,客户端完成微服务向Eureka服务的注册与发现。服务端和客户端均采用Java语言编写。下图显示了EurekaServer与EurekaClient的关系:

1、EurekaServer是服务端,负责管理各各微服务结点的信息和状态。

2、在微服务上部署EurekaClient程序,远程访问EurekaServer将自己注册在EurekaServer。3、微服务需要调用另一个微服务时从EurekaServer中获取服务调用地址,进行远程调用。

EurekaServer高可用环境需要部署两个Eurekaserver,它们互相向对方注册。如果在本机启动两个Eureka需要注意两个EurekaServer的端口要设置不一样,这里我们部署一个EurekaServer工程,将端口可配置,制作两个EurekaServer启动脚本,启动不同的端口,如下图:

包结构:com.xuecheng.govern.center

在EurekaServer工程添加:

org.springframework.cloudspring‐cloud‐starter‐netflix‐eureka‐server3、启动类@EnableEurekaServer//标识这是一个Eureka服务,开启服务@SpringBootApplicationpublicclassGovernCenterApplication{publicstaticvoidmain(String[]args){SpringApplication.run(GovernCenterApplication.class,args);}}4、@EnableEurekaServer需要在启动类上用@EnableEurekaServer标识此服务为Eureka服务

启动2:

在前后端分离架构中,服务层被拆分成了很多的微服务,服务与服务之间难免发生交互,比如:课程发布需要调用CMS服务生成课程静态化页面,本节研究微服务远程调用所使用的技术。下图是课程管理服务远程调用CMS服务的流程图:

工作流程如下:

1、cms服务将自己注册到注册中心。2、课程管理服务从注册中心获取cms服务的地址。3、课程管理服务远程调用cms服务。

负载均衡是微服务架构中必须使用的技术,通过负载均衡来实现系统的高可用、集群扩容等功能。负载均衡可通过硬件设备及软件来实现,硬件比如:F5、Array等,软件比如:LVS、Nginx等。如下图是负载均衡的架构图:

上图是服务端负载均衡,客户端负载均衡与服务端负载均衡的区别在于客户端要维护一份服务列表,Ribbon从EurekaServer获取服务列表,Ribbon根据负载均衡算法直接请求到具体的微服务,中间省去了负载均衡服务。如下图是Ribbon负载均衡的流程图:

1、在消费微服务中使用Ribbon实现负载均衡,Ribbon先从EurekaServer中获取服务列表。2、Ribbon根据负载均衡的算法去调用微服务。

1、在客户端添加Ribbon依赖:这里在课程管理服务配置ribbon依赖

1)启动两个cms服务,注意端口要不一致

2)定义RestTemplate,使用@LoadBalanced注解在课程管理服务的启动类中定义RestTemplate

@Bean@LoadBalancedpublicRestTemplaterestTemplate(){returnnewRestTemplate(newOkHttp3ClientHttpRequestFactory());}3)测试代码在课程管理服务工程创建单元测试代码,远程调用cms的查询页面接口:

Feign是Netflix公司开源的轻量级rest客户端,使用Feign可以非常方便的实现Http客户端。SpringCloud引入Feign并且集成了Ribbon实现客户端负载均衡调用。

1、在客户端添加依赖在课程管理服务添加下边的依赖:

@FeignClient(value=XcServiceList.XC_SERVICE_MANAGE_CMS)publicinterfaceCmsPageClient{@GetMapping("/cms/page/get/{id}")publicCmsPagefindById(@PathVariable("id")Stringid);}3、启动类添加@EnableFeignClients注解

4、测试

@RunWith(SpringRunner.class)@SpringBootTestpublicclassFeignTest{@AutowiredCmsPageClientcmsPageClient;@TestpublicvoidtestFeign(){//通过服务id调用cms的查询页面接口CmsPagecmsPage=cmsPageClient.findById("5a754adf6abb500ad05688d9");System.out.println(cmsPage);}}Feign工作原理如下:1、启动类添加@EnableFeignClients注解,Spring会扫描标记了@FeignClient注解的接口,并生成此接口的代理对象2、@FeignClient(value=XcServiceList.XC_SERVICE_MANAGE_CMS)即指定了cms的服务名称,Feign会从注册中心获取cms服务列表,并通过负载均衡算法进行服务调用。3、在接口方法中使用注解@GetMapping("/cms/page/get/{id}"),指定调用的url,Feign将根据url进行远程调用。

我们在编写一个页面时需要知道哪些信息是静态信息,哪些信息为动态信息,下图是页面的设计图:

1、配置静态资源虚拟主机静态资源虚拟主机负责处理课程详情、公司信息、老师信息、统计信息等页面的请求:将课程资料中的“静态页面目录”中的目录拷贝到F:/develop/xuecheng/static下在nginx中配置静态虚拟主机如下:

#静态资源服务upstreamstatic_server_pool{server127.0.0.1:91weight=10;}门户静态资源路径门户中的一些图片、样式等静态资源统一通过/static路径对外提供服务,在www.xuecheng.com虚拟主机中配置如下:

1、响应结果类型

@Data@ToString@NoArgsConstructorpublicclassCourseViewimplementsSerializable{CourseBasecourseBase;//基础信息CourseMarketcourseMarket;//课程营销CoursePiccoursePic;//课程图片TeachplanNodeTeachplanNode;//教学计划}2、请求类型

String:课程id

3、接口定义如下

@ApiOperation("课程视图查询")publicCourseViewcourseview(Stringid);Dao需要对course_base、course_market、course_pic、teachplan等信息进行查询,新建课程营销的dao,其它dao已经存在不用再建。

使用test-freemarker工程测试模板编写模板过程采用test-freemarker工程测试模板。将course.ftl拷贝到test-freemarker工程的resources/templates下,并在test-freemarker工程的controller中添加测试方法

第一步:将模板文件上传到GridFS中由于本教学项目中模板管理模块没有开发,所以我们使用Junit代码向GridFS中保存:

//文件存储2@TestpublicvoidtestStore2()throwsFileNotFoundException{Filefile=newFile("C:\\Users\\admin\\Desktop\\course.ftl");FileInputStreaminputStream=newFileInputStream(file);//保存模版文件内容GridFSFilegridFSFile=gridFsTemplate.store(inputStream,"课程详情模板文件","");StringfileId=gridFSFile.getId().toString();System.out.println(fileId);}保存成功需要记录模板文件的id,即上边代码中的fileId。第二步:向cms_template表添加模板记录(请不要重复添加)使用Studio3T连接mongodb,向cms_template添加记录:

课程预览功能将使用cms系统提供的页面预览功能,业务流程如下:1、用户进入课程管理页面,点击课程预览,请求到课程管理服务2、课程管理服务远程调用cms添加页面接口向cms添加课程详情页面3、课程管理服务得到cms返回课程详情页面id,并拼接生成课程预览Url4、课程管理服务将课程预览Url给前端返回5、用户在前端页面请求课程预览Url,打开新窗口显示课程详情内容

CMS已经提供了页面预览功能,课程预览功能要使用CMS页面预览接口实现,下边通过cms页面预览接口测试课程预览的效果。1、向cms_page表插入一条页面记录或者从cms_page找一个页面进行测试。注意:页面配置一定要正确,需设置正确的模板id和dataUrl。如下,是一条页面的记录。

由于Nginx先请求cms的课程预览功能得到html页面,再解析页面中的ssi标签,这里必须保证cms页面预览返回的页面的Content-Type为text/html;charset=utf-8在cms页面预览的controller方法中添加:

cms服务对外提供添加页面接口,实现:如果不存在页面则添加,否则就更新页面信息。此接口由课程管理服务在课程预览时调用。

@ApiOperation("保存页面")publicCmsPageResultsave(CmsPagecmsPage);Service//添加页面,如果已存在则更新页面publicCmsPageResultsave(CmsPagecmsPage){//校验页面是否存在,根据页面名称、站点Id、页面webpath查询CmsPagecmsPage1=cmsPageRepository.findByPageNameAndSiteIdAndPageWebPath(cmsPage.getPageName(),cmsPage.getSiteId(),cmsPage.getPageWebPath());if(cmsPage1!=null){//更新returnthis.update(cmsPage1.getPageId(),cmsPage);}else{//添加returnthis.add(cmsPage);}}Controller@Override@PostMapping("/save")publicCmsPageResultsave(@RequestBodyCmsPagecmsPage){returnpageService.save(cmsPage);}课程预览服务端Api定义此Api是课程管理前端请求服务端进行课程预览的Api请求:课程Id响应:课程预览Url

1、定义响应类型

@Data@ToString@NoArgsConstructorpublicclassCoursePublishResultextendsResponseResult{StringpreviewUrl;publicCoursePublishResult(ResultCoderesultCode,StringpreviewUrl){super(resultCode);this.previewUrl=previewUrl;}}2、接口定义如下

@ApiOperation("预览课程")publicCoursePublishResultpreview(Stringid);创建FeignClient在课程管理工程创建CMS服务的FeignClient,通过此Client远程请求cms添加页面。

@FeignClient(value=XcServiceList.XC_SERVICE_MANAGE_CMS)publicinterfaceCmsPageClient{//保存页面@PostMapping("/cms/page/save")publicCmsPageResultsave(@RequestBodyCmsPagecmsPage);}

THE END
1.Epic登录失败怎么办epic无法登录登录不进去的解决方法来了多余进程可能包括一些自动更新程序、后台下载任务或者不常用的软件服务等。关闭它们后,系统能够将更多的 CPU、内存等资源集中分配给 Epic 平台,使其能够更高效地与服务器进行交互,从而提升登录成功的几率,让你不再被登录失败的困扰所阻碍。 解决方法三:重置网络连接 https://www.qiyou.cn/games/149694.html
2.Epic注册遇错别慌,几招教你轻松搞定关注Epic游戏平台的官方公告,了解活动或新游戏的发布时间。尽量避免在活动发布后的第一时间内进行登录和注册。可以选择在非工作时间或深夜进行登录和注册,以避开高峰期。通过错峰登录,你可以有效避免服务器拥堵,提高注册成功率。四、检查系统环境,确保兼容性 此外,还有一些其他因素可能会导致Epic注册时出现错误提示,https://baijiahao.baidu.com/s?id=1817709210565001116&wfr=spider&for=pc
3.如何联系Epic支持如果您并未拥有 Epic Games 账户,也并未使用我们的服务,但仍然需要我们的帮助: 选择我没有账户,但我需要支持选项并填写必要信息,之后点击提交。 如果您无法登录,请尝试下列操作: 在您网页浏览器的无痕浏览/私密模式下打开一个标签页 前往Epic Games 帮助页面:https://www.epicgames.com/help https://www.epicgames.com/help/zh-CN/c-Category_TechnicalSupport/c-TechnicalSupport_GeneralSupport/how-to-contact-epic-support-a000085836
4.Epic客户端安装在非C盘(系统盘)时安装在线服务失败的解决方法Epic 客户端已修复该问题 把客户端安装在 C 盘(系统盘)是一定能成功的。 因为msi 安装包默认情况下没有权限在C:\Program Files (x86)目录下创建新目录, 所以我们只需要手动创建C:\Program Files (x86)\Epic Games这个目录即可使在线服务安装成功。https://blog.csdn.net/maxsky/article/details/120446589
5.Epic宣布两项在线服务更新:免费EasyAntiEpic今天宣布了其在线服务的两项重大更新:免费开放Easy Anti-Cheat(以下简称EAC)反作弊系统和跨平台语音聊天系统。 Epic于2018年收购了EAC反作弊系统,目前这项反作弊系统已经在多款游戏中应用,包括《APEX英雄》、《黎明杀机》、《骑士精神2》等游戏。 Epic的跨平台语音聊天系统使用的是与《堡垒之夜》跨平台语音聊天https://www.gamersky.com/news/202106/1399872.shtml
6.如何设置Epic在线服务(EOS)如果你错过了本系列的第一篇文章《Epic在线服务(EOS)简介》,请先将其快速浏览一遍,了解什么是Epic在线服务,以及它在你的游戏开发过程中能提供什么价值。在这篇文章中,我们将介绍Epic Games开发者门户中的账户设置,包括: 一些说明 注册开发者门户 访问产品设置 https://www.d-arts.cn/article/article_info/key/MTIwMTgwMjY5NjWDuZ9ksHa0cw.html
7.硅谷风投推荐的2024人工智能创业公司(内含商业模式)公司业务:Braintrust为企业AI产品提供基础设施堆栈,帮助企业客户进行AI开发,支持评估、日志记录、数据管理,并通过API提供访问顶级AI模型的服务。 入选原因:Braintrust是Zapier、Coda、Airtable和Instacart等领先科技公司的关键基础设施,能够将AI的准确性提高30%以上。其创始人兼CEO安库尔·戈亚尔(Ankur Goyal)是二次创业者,http://www.360doc.com/content/24/0911/19/47115229_1133747381.shtml
8.ASP.NETCore适用于.NET的开源Web框架启用服务器和客户端之间的实时双向通信 人工智能和 ML 使用C#、OpenAI 和 Azure 构建智能应用 什么是 ASP.NET Core? .NET 是一个开发人员平台,由工具、编程语言、库组成,用于构建许多不同类型的应用程序。 ASP.NET Core 通过专门用于生成 web 应用的工具和库扩展了.NET 开发人员平台。 https://asp.net/
9.高温傅里叶红外污染源排放连续在线监测系统新闻仪器信息网高温傅里叶红外污染源排放连续在线监测系统专题为您提供2024年最新高温傅里叶红外污染源排放连续在线监测系统价格报价、厂家品牌的相关信息, 包括高温傅里叶红外污染源排放连续在线监测系统参数、型号等,不管是国产,还是进口品牌的高温傅里叶红外污染源排放连续在线监测系统您都可以在这里找到。 除此之外,仪器信https://www.instrument.com.cn/zhuti/87159/news.html
10.uniapp小程序实现微信在线聊天功能(私聊/群聊)javascript技巧之前学习使用uni-app简单实现一个在线聊天的功能,今天记录一下项目核心功能的实现过程。页面UI以及功能逻辑全部来源于微信,即时聊天业务的实现使用socket.io,前端使用uni-app开发,后端服务器基于node实现,数据库选择mongoDB。 首先在系统中注册两个用户,将对方添加为好友后,开始正常聊天,先简单看一下聊天功能的效果图,https://www.jb51.net/article/275706.htm
11.近6成网友赞成,马斯克或卸任推特CEO;小米回应年底裁员:规模不大;谷此外,杭州、上海、南京等多地三级公立互联网医院也已接入专区,医生 24 小时在线,向患者提供在线咨询或复诊开方、配药到家服务,更多公立医院还在陆续接入中。(来源:上海证券报) Epic Games 与 FTC 和解,5.2 亿美元摆平两起诉讼 据报道,《堡垒之夜》开发商 Epic Games12 月 19 日与美国联邦贸易委员会(FTC)达成一https://www.geekpark.net/news/312816
12.应用系统&QuotEpic在线&Quot产品视频(AppliedSystems"Epic爱给网提供海量的创意片库资源素材免费下载, 本次作品为mp4 格式的应用系统&Quot Epic在线&Quot产品视频(Applied Systems "Epic Online" Product Video), 本站编号40096912, 该创意片库素材大小为40m, 时长为01分 36秒, 分辨率为1280*720, 作者为gonzalezfrajaz, 更多精彩创意片库素材,尽在爱给网。 https://www.aigei.com/item/applied_systems_1.html
13.安全事件周报(08.3109.06)包括浏览器、邮件客户端、vpn、远程桌面等在内的个人应用程序,应及时更新到最新版本 及时对系统及各个服务组件进行版本升级和补丁更新 不轻信网络消息,不浏览不良网站、不随意打开邮件附件,不随意运行可执行程序 注重内部员工安全培训 网段之间进行隔离,避免造成大规模感染 https://cert.360.cn/warning/detail?id=bb2c38672c55d388cab8ba1f8d41e2b4
14.GTA5辅助GTA5安全稳定辅助GTA5科技GTA5线上辅助安全稳定我们的售后服务怎么样 ? 一对一客服 每个人都会分配一个客服 并且把你的QQ号录入数据库 以后方便辨认 售后群内不禁言 各位客户可以交流评价 是永久售后 并且包您满意! 可以换电脑使用吗?可以换steam/epic账号使用吗? 可以随意更换电脑使用 在新的电脑上登陆即可 也可以更换steam或者epic使用 顾名思义 你可以用别https://www.gta5.vip/
15.三星电子中国三星手机电视显示器固态硬盘冰箱洗衣*Galaxy AI功能的可用性可能因操作系统、Samsung One UI版本、设备型号和手机运营商不同而异。 *Galaxy AI服务及对AI的使用年龄限制可能因地区、国家不同而异。 *三星商城专属颜色仅在三星直销平台有售,如三星商城(官网)、京东三星官方旗舰店(三星商城专供)。 http://samsung.com/