首页 完美整合SpringCloud与异构微服务的框架SpringCloudWii开源啦

完美整合SpringCloud与异构微服务的框架SpringCloudWii开源啦

举报
开通vip

完美整合SpringCloud与异构微服务的框架SpringCloudWii开源啦     完美整合SpringCloud与异构微服务的框架SpringCloudWii开源啦                  SpringCloudWii是一个用来快速整合SpringCloud与异构微服务的框架,灵感来自SpringCloudNetflixSidecar[1]。目前支持的服务发现组件:•Nacos•Consul术语异构微服务非SpringCloud应用,统称异构微服务。比如你的遗留项目,或者非JVM应用。“完美整合”的三层含义•享受服务发现的优势•有负载均衡•有断路器为什么要造这个轮子?原因有两...

完美整合SpringCloud与异构微服务的框架SpringCloudWii开源啦
     完美整合SpringCloud与异构微服务的框架SpringCloudWii开源啦                  SpringCloudWii是一个用来快速整合SpringCloud与异构微服务的框架,灵感来自SpringCloudNetflixSidecar[1]。目前支持的服务发现组件:•Nacos•Consul术语异构微服务非SpringCloud应用,统称异构微服务。比如你的遗留项目,或者非JVM应用。“完美整合”的三层含义•享受服务发现的优势•有负载均衡•有断路器为什么要造这个轮子?原因有两点:•SpringCloud子项目SpringCloudNetflixSidecar是可以快速整合异构微服务的。然而,Sidecar只支持使用Eureka作为服务发现,如果使用其他服务发现组件就抓瞎了。•Sidecar是基于Zuul1.x的,SpringCloud官方明确声明,未来将会逐步淘汰Zuul。今年早些时候,我有给SpringCloud官方提出需求,希望官方实现一个基于SpringCloudGateway的新一代Sidecar,然而官方 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示并没有该计划。详见:https://github.com/spring-cloud/spring-cloud-gateway/issues/735[2]既然没有,索性自己写了。原理•Wii根据配置的异构微服务的IP、端口等信息,将异构微服务的IP/端口注册到服务发现组件上。•Wii实现了健康检查,Wii会定时检测异构微服务是否健康。如果发现异构微服务不健康,Wii会自动将代表异构微服务的Wii实例下线;如果异构微服务恢复正常,则会自动上线。最长延迟是30秒,详见WiiChecker#check。要求•【必须】你的异构微服务需使用HTTP通信。这一点严格来说不算要求,因为SpringCloud本身就是基于HTTP的;•【可选】如果微服务配置了wii.health-check-url,则表示开启了Wii的健康检查,此时,你的异构微服务需实现健康检查(可以是空实现,只要暴露一个端点,返回类似{"status":"UP"}的字符串即可)。使用示例•如使用Nacos作为服务发现组件,详见examples/spring-cloud-wii-example-nacos•如使用Consul作为服务发现组件,详见examples/spring-cloud-wii-example-consul示例代码(以Nacos服务发现为例)1依赖管理:SpringCloudAlibaba版本必须是2.1.x+,否则会报错。这主要是因为SpringCloudAlibaba修改了包名命名…不同版本的类名包结构不同,而Wii使用了Nacos的类,所以版本必须保持一致。org.springframework.cloudspring-cloud-dependencies${spring-cloud.version}pomimportcom.alibaba.cloudspring-cloud-alibaba-dependencies2.1.0.RELEASEpomimport2加依赖:com.itmuchspring-cloud-wii0.0.1-SNAPSHOT3写配置:server:port:8070spring:cloud:nacos:discovery:server-addr:localhost:8848gateway:discovery:locator:enabled:trueapplication:name:wii-node-servicewii:#异构微服务的IPip:127.0.0.1#异构微服务的端口port:8060#异构微服务的健康检查URLhealth-check-url:http://localhost:8060/health.json配置比较简单,就是把Wii注册到Nacos上,然后添加了几行wii的配置。异构微服务我这里准备了一个NodeJS编写的简单微服务。varhttp=require('http');varurl=require("url");varpath=require('path');//创建servervarserver=http.createServer(function(req,res){//获得请求的路径varpathname=url.parse(req.url).pathname;res.writeHead(200,{'Content-Type':'application/json;charset=utf-8'});//访问http://localhost:8060/,将会返回{"index":"欢迎来到首页"}if(pathname==='/'){res.end(JSON.stringify({"index":"欢迎来到首页"}));}//访问http://localhost:8060/health,将会返回{"status":"UP"}elseif(pathname==='/health.json'){res.end(JSON.stringify({"status":"UP"}));}//其他情况返回404else{res.end("404");}});//创建监听,并打印日志server.listen(8060,function(){console.log('listeningonlocalhost:8060');});测试测试1:SpringCloud微服务完美调用异构微服务你的SpringCloud项目整合Ribbon,只需构建http://wii-node-service就可以请求到异构微服务了。示例:Ribbon请求http://wii-node-service/会请求到http://localhost:8060/以此类推。至于断路器,正常为你的SpringCloud微服务整合Sentinel或者Hystirx、Resilience4J即可。测试2:异构微服务完美调用SpringCloud微服务由于Wii基于SpringCloudGateway,而网关自带转发能力啊。示例:如果你有一个SpringCloud微服务叫做spring-cloud-microservice,那么NodeJS应用只需构建http://localhost:8070/spring-cloud-microservice/**,Wii就会把请求转发到spring-cloud-microservice的/**。而SpringCloudGateway是整合了Ribbon的,所以实现了负载均衡;SpringCloudGateway还可以整合Sentinel或者Hystirx、Resilience4J,所以也带有了断路器。Wii优缺点分析Wii的设计和Sidecar基本一致,优缺点和Sidecar的优缺点也是一样的。优点:•接入简单,几行代码就可以将异构微服务整合到SpringCloud生态•不侵入原代码缺点:•每接入一个异构微服务实例,都需要额外部署一个Wii实例,增加了部署成本(虽然这个成本在Kubernetes环境中几乎可以忽略不计(只需将Wii实例和异构微服务作为一个Pod部署即可));•异构微服务调用SpringCloud微服务时,本质是把Wii当网关在使用,经过了一层转发,性能有一定下降。不过一般认为这个性能损耗是可以接受的。和快速接入带来的好处相比,这点性能损耗算啥。 -全文完-
本文档为【完美整合SpringCloud与异构微服务的框架SpringCloudWii开源啦】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
资教之佳
暂无简介~
格式:doc
大小:114KB
软件:Word
页数:8
分类:互联网
上传时间:2023-06-27
浏览量:5