Spring Cloud Alibaba 2.1.1 新特性Sidecar模块介绍

Sidecar简介

Spring Cloud Alibaba v2.1.1.RELEASE中增加了一个非常重要的新特性,对Spring Cloud Alibaba Sidecar模块支持。

该模块作为一个代理的服务来间接性的让其他语言可以使用spring cloud alibaba等相关组件。通过与网关来进行路由的映射,从而可以做到服务的获取,然后可以使用Ribbon间接性调用。

Sidecar原理

如上图,Spring Cloud应用请求sidercar然后转发给其他语言的模块,优势是对于异构服务代码零侵入,不需要直接根据nacos或其他注册中心api注册等。

使用入门

示例代码请参阅:spring-cloud-alibaba-sidecar-examples

Spring Cloud创建一个Spring应用注册在Nacos上,应用请求8070端口,通过sidecar转到本机8060端口Node.js服务。

Node.js服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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依赖
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<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>
  • 异构配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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模块实现了零一种无侵入跨语言在微服务组件之间调用的机制。

Powered by AppBlog.CN     浙ICP备14037229号

Copyright © 2012 - 2021 APP开发技术博客 All Rights Reserved.

访客数 : | 访问量 :