环境:SpringBoot2.7.18 + Spring Cloud Alibaba Sidecar
1. 简介
Spring Cloud Alibaba Sidecar(以下简称:SCA Sidecar)能够有效地整合异构微服务,解决在微服务架构中由于技术栈、语言或平台差异导致的兼容性和通信问题。在什么场景下需要使用Sidecar呢?以下总结4点:
- 多语言微服务整合:当微服务架构中涉及多种编程语言和框架时,Spring Cloud Alibaba Sidecar可以作为代理服务,实现不同语言微服务之间的通信和协调。
- 跨平台服务集成:对于部署在不同平台或容器化环境中的微服务,Sidecar能够提供一个统一的接口和协议,简化跨平台的服务调用和集成。
- 服务治理与监控:Sidecar可以协助实现服务的注册与发现、负载均衡、熔断降级等治理功能,并提供统一的监控和日志收集机制,提高系统的可观测性。
- 老项目整合:那些由于版本限制或其他原因不适合引入整个如Nacos这样的注册中心的项目,Spring Cloud Alibaba Sidecar成为了一个非常合适的解决方案。通过使用Sidecar,解决了老项目在微服务化过程中的兼容性和集成难题。
2. SCA SideCar原理
- SCA Sidecar根据配置的异构微服务的IP、端口等信息,将异构微服务的IP/端口注册到服务发现组件上 。
- SCA Sidecar实现了 健康检查 ,SCA Sidecar会定时检测异构微服务是否健康。如果发现异构微服务不健康,SCASidecar会自动将代表异构微服务的SCASidecar实例下线;如果异构微服务恢复正常,则会自动上线。
使用要求:
- 【必须】你的异构微服务需使用HTTP通信。这一点严格来说不算要求,因为Spring Cloud本身就是基于HTTP的;
- 【可选】如果微服务配置了
sidecar.health-check-url
,则表示开启健康检查,此时,你的异构微服务需实现健康检查(可以是空实现,只要暴露一个端点,返回类似 {"status": "UP"} 的字符串即可)。
3. 实战案例
3.1 准备异构项目
为了简单起见,我也不用其它语言实现一个服务了,还是用SpringBoot项目做试验,大家可以使用其它语言如:NodeJS,C#等语言实现。
该服务非常简单就提供一个业务接口,和一个健康检查所需要的接口,如下:
业务接口
健康检查接口
该接口的作用:上线 / 下线 该异构服务(我这当前就是SpringBoot服务)。
配置文件
该异构服务并没有依赖Spring Cloud相关的任何组件就是一个非常普通的项目。
3.2 准备Sidecar服务
引入依赖
服务配置
以上就做完了关于Sidecar服务的所有工作,我们只需要配置不需要任何的代码。 注意:上面配置的nacos服务发现端口和ip都会被修改为Sidecar配置的ip及端口,Sidecar内部实现的,有兴趣可以研究下源码非常简单。
接下来就可以分别启动上面两个服务测试,我们首先启动Sidecar服务,控制台将输出如下信息:
请求了我们的异构服务,但是我们的异构服务并没有启动所以是失败状态。
启动异构服务,再次查看Sidecar控制台输出
成功了,再查看异构服务控制台
图片
查看Nacos控制台
图片
成功注册异构服务,注意查看端口。
3.3 调用异构服务接口
接下来我们还需要一个服务,该服务也需要注册到nacos中,然后我们在这个服务中调用异构服务接口。
相关的依赖配置就不说了非常简单,下面我们就看能否通过服务发现成功调用异构服务的接口。
该服务的服务名为
启动服务查看服务是否成功注册到Nacos
图片
服务成功注册。
配置RestTemplate
通过RestTemplate调用上异构服务/users接口。
图片
请求成功。
到此就完成了通过Sidecar整合异构系统。