Spring Cloud Alibaba 2.1.1 新特性Sidecar模块介绍
Sidecar简介
Spring Cloud Alibaba v2.1.1.RELEASE中增加了一个非常重要的新特性,对Spring Cloud Alibaba Sidecar模块支持。
该模块作为一个代理的服务来间接性的让其他语言可以使用spring cloud alibaba
等相关组件。通过与网关来进行路由的映射,从而可以做到服务的获取,然后可以使用Ribbon
间接性调用。
如上图,Spring Cloud
应用请求sidercar
然后转发给其他语言的模块,优势是对于异构服务代码零侵入,不需要直接根据nacos
或其他注册中心api
注册等。
使用入门
示例代码请参阅:spring-cloud-alibaba-sidecar-examples
Spring Cloud
创建一个Spring应用注册在Nacos
上,应用请求8070
端口,通过sidecar
转到本机8060
端口Node.js
服务。
Node.js服务
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');
});
异构服务
- Maven依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sidecar</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>
- 异构配置
server:
port: 8070
spring:
cloud:
nacos:
username: nacos
password: nacos
discovery:
server-addr: 127.0.0.1:8848
group: test
gateway:
discovery:
locator:
enabled: true
application:
name: node-service
sidecar:
# 异构微服务的IP
ip: 127.0.0.1
# 异构微服务的端口
port: 8060
# 异构微服务的健康检查URL
#health-check-url: http://localhost:8060/health.json
management:
endpoint:
health:
show-details: always
总结
随着微服务越来越流行,跨语言之间调用越来越多,Restful OPEN API
虽然提供了跨语言调用的一种方式,但是效率低,同时需要各语言来实现OPEN API
规范,开发维护成本高。sidecar
模块实现了零一种无侵入跨语言在微服务组件之间调用的机制。
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/03/27/spring-cloud-alibaba-2-1-1-new-features-sidecar-module-introduction/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论