同步操作将从 大目/spring-cloud-wii 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
LOGO制作网站:
http://www.uugai.com/
Spring Cloud Wii是一个用来 快速整合 Spring Cloud 与 异构微服务 的框架,灵感来自 Spring Cloud Netflix Sidecar 。目前支持的服务发现组件:
非Spring Cloud应用,统称异构微服务。比如你的遗留项目,或者非JVM应用。
原因有两点:
Spring Cloud Netflix Sidecar
是可以快速整合异构微服务的。然而,Sidecar只支持使用Eureka作为服务发现,如果使用其他服务发现组件就抓瞎了。既然没有,索性自己写了。
WiiChecker#check
。wii.health-check-url
,则表示开启了Wii的健康检查,此时,你的异构微服务需实现健康检查(可以是空实现,只要暴露一个端点,返回类似 {"status": "UP"}
的字符串即可)。examples/spring-cloud-wii-example-nacos
examples/spring-cloud-wii-example-consul
依赖管理: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>
加依赖:
<dependency>
<groupId>com.itmuch</groupId>
<artifactId>spring-cloud-wii</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
写配置:
server:
port: 8070
spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848
gateway:
discovery:
locator:
enabled: true
application:
name: wii-node-service
wii:
# 异构微服务的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');
// 创建server
var 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');
});
你的Spring Cloud项目整合Ribbon,只需构建 http://wii-node-service
就可以请求到异构微服务了。
示例:
Ribbon请求 http://wii-node-service/
会请求到 http://localhost:8060/
以此类推。
至于断路器,正常为你的Spring Cloud微服务整合Sentinel或者Hystirx、Resilience4J即可 。
由于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的设计和Sidecar基本一致,优缺点和Sidecar的优缺点也是一样的。
优点:
缺点:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。