首页 » 网站推广 » springcloud异构php技巧_完美整合Spring Cloud与异构微做事的框架Spring Cloud Wii开源

springcloud异构php技巧_完美整合Spring Cloud与异构微做事的框架Spring Cloud Wii开源

访客 2024-11-19 0

扫一扫用手机浏览

文章目录 [+]

•Nacos

•Consul

springcloud异构php技巧_完美整合Spring Cloud与异构微做事的框架Spring Cloud Wii开源

术语

异构微做事

springcloud异构php技巧_完美整合Spring Cloud与异构微做事的框架Spring Cloud Wii开源
(图片来自网络侵删)

非Spring Cloud运用,统称异构微做事。
比如你的遗留项目,或者非JVM运用。

“完美整合”的三层含义

•享受做事创造的上风

•有负载均衡

•有断路器

为什么要造这个轮子?

缘故原由有两点:

•Spring Cloud子项目 Spring Cloud Netflix Sidecar 是可以快速整合异构微做事的。
然而,Sidecar只支持利用Eureka作为做事创造,如果利用其他做事创造组件就抓瞎了。

•Sidecar是基于Zuul 1.x的,Spring Cloud官方明确声明,未来将会逐步淘汰Zuul。
今年早些时候,我有给Spring Cloud官方提出需求,希望官方实现一个基于Spring Cloud Gateway的新一代Sidecar,然而官方表示并没有该操持。
详见:https://github.com/spring-cloud/spring-cloud-gateway/issues/735[2]

既然没有,索性自己写了。

事理

•Wii根据配置的异构微做事的IP、端口等信息,将异构微做事的IP/端口注册到做事创造组件上 。

•Wii实现了 康健检讨 ,Wii会定时检测异构微做事是否康健。
如果创造异构微做事不康健,Wii会自动将代表异构微做事的Wii实例下线;如果异构微做事规复正常,则会自动上线。
最长延迟是30秒,详见 WiiChecker#check 。

哀求

•【必须】你的异构微做事需利用HTTP通信。
这一点严格来说不算哀求,由于Spring Cloud本身便是基于HTTP的;

•【可选】如果微做事配置了 wii.health-check-url ,则表示开启了Wii的康健检讨,此时,你的异构微做事需实现康健检讨(可以是空实现,只要暴露一个端点,返回类似 {\"大众status\"大众: \公众UP\"大众} 的字符串即可)。

利用示例

•如利用Nacos作为做事创造组件,详见 examples/spring-cloud-wii-example-nacos

•如利用Consul作为做事创造组件,详见 examples/spring-cloud-wii-example-consul

示例代码(以Nacos做事创造为例)

1 依赖管理:Spring Cloud Alibaba版本必须是2.1.x+,否则会报错。
这紧张是由于Spring Cloud Alibaba修正了包名命名…不同版本的类名包构造不同,而Wii利用了Nacos的类,以是版本必须保持同等。

<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.1.0.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies></dependencyManagement>

2 加依赖:

<dependency> <groupId>com.itmuch</groupId> <artifactId>spring-cloud-wii</artifactId> <version>0.0.1-SNAPSHOT</version></dependency>

3 写配置:

server: port: 8070spring: cloud: nacos: discovery: server-addr: localhost:8848 gateway: discovery: locator: enabled: true application: name: wii-node-servicewii: # 异构微做事的IP ip: 127.0.0.1 # 异构微做事的端口 port: 8060 # 异构微做事的康健检讨URL health-check-url: http://localhost:8060/health.json

配置比较大略,便是把Wii注册到Nacos上,然后添加了几行wii的配置。

异构微做事

我这里准备了一个NodeJS编写的大略微做事。

var http = require('http');var url = require(\公众url\"大众);var path = require('path');// 创建servervar server = http.createServer(function(req, res) { // 得到要求的路径 var pathname = 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\"大众} else if (pathname === '/health.json') { res.end(JSON.stringify({ \"大众status\公众 : \"大众UP\公众 })); } // 其他情形返回404 else { res.end(\"大众404\"大众); }});// 创建监听,并打印日志server.listen(8060, function() { console.log('listening on localhost:8060');});

测试

测试1:Spring Cloud微做事完美调用异构微做事

你的Spring Cloud项目整合Ribbon,只需构建 http://wii-node-service 就可以要求到异构微做事了。

示例:

Ribbon要求 http://wii-node-service/ 会要求到 http://localhost:8060/ 以此类推。

至于断路器,正常为你的Spring Cloud微做事整合Sentinel或者Hystirx、Resilience4J即可 。

测试2:异构微做事完美调用Spring Cloud微做事

由于Wii基于Spring Cloud Gateway,而网关自带转发能力啊。

示例:

如果你有一个Spring Cloud微做事叫做 spring-cloud-microservice ,那么NodeJS运用只需构建 http://localhost:8070/spring-cloud-microservice/ ,Wii就会把要求转发到 spring-cloud-microservice 的 / 。

而Spring Cloud Gateway是整合了Ribbon的,以是实现了负载均衡;Spring Cloud Gateway还可以整合Sentinel或者Hystirx、Resilience4J,以是也带有了断路器。

Wii优缺陷剖析

Wii的设计和Sidecar基本同等,优缺陷和Sidecar的优缺陷也是一样的。

优点:

•接入大略,几行代码就可以将异构微做事整合到Spring Cloud生态

•不侵入原代码

缺陷:

•每接入一个异构微做事实例,都须要额外支配一个Wii实例,增加了支配本钱(虽然这个本钱在Kubernetes环境中险些可以忽略不计(只需将Wii实例和异构微做事作为一个Pod支配即可));

•异构微做事调用Spring Cloud微做事时,实质是把Wii当网关在利用,经由了一层转发,性能有一定低落。
不过一样平常认为这个性能损耗是可以接管的。
和快速接入带来的好处比较,这点性能损耗算啥。

GitHub地址

https://github.com/eacdy/spring-cloud-wii 欢迎Star、follow。

干货分享

最近将个人学习条记整理成册,利用PDF分享。
关注我,回答如下代码,即可得到百度盘地址,无套路领取!

•001:《Java并发与高并发办理方案》学习条记;

•002:《深入JVM内核——事理、诊断与优化》学习条记;

•003:《Java口试宝典》

•004:《Docker开源书》

•005:《Kubernetes开源书》

•006:《DDD速成(领域驱动设计速成)》

•007:全部

•008:加技能谈论群

标签:

相关文章

Python编程从入门到精通,探索编程之美

编程已经成为现代社会的一项基本技能。Python作为一种简单易学、功能强大的编程语言,在我国教育领域备受关注。本文将从Python...

网站推广 2025-03-02 阅读1 评论0

Scum07代码编程之美与适用方法

编程已成为当今社会不可或缺的技能之一。Scum07代码作为一款经典的编程语言,在我国众多程序员中备受推崇。本文将深入解析Scum0...

网站推广 2025-03-02 阅读1 评论0

Linux环境下的前端代码运行优化与步骤

前端技术逐渐成为软件开发的核心。Linux操作系统因其稳定性、安全性、开放性等特点,成为众多开发者和企业青睐的运行环境。本文将从L...

网站推广 2025-03-02 阅读1 评论0