spring-cloud-starter-alibaba-sidecar组件介绍
spring-cloud-starter-alibaba-sidecar 是一个用来快速完美整合 Spring Cloud 与异构微服务的框架,灵感来自 spring-cloud-netflix-sidecar。
为什么要编写 Spring Cloud Alibaba Sidecar
原因有两点:
1.Spring Cloud 子项目 spring-cloud-netflix-sidecar 是可以快速整合异构微服务的。然而, 其只支持使用 Eureka 作为服务发现组件,不支持其他服务发现组件。
2.另外,其基于 Zuul 1.x ,Spring Cloud 官方明确声明,未来将会逐步淘汰 Zuul。
支持的组件
spring-cloud-starter-alibaba-sidecar 目前支持的服务发现组件:Nacos 和 Consul。
使用要求
【必须】异构微服务需使用 HTTP 通信。这一点严格来说不算要求,因为 Spring Cloud 本身就是基于 HTTP 的。
【可选】如果微服务配置了 sidecar.health-check-url ,则表示开启健康检查,此时,异构微服务需实现健康检查(可以是空实现,只要暴露一个端点,返回类似 {“status”: “UP”} 的字符串即可)。
优点:
1.接入简单,几行代码就可以将异构微服务整合到 Spring Cloud 微服务生态;
2.不侵入原代码;
缺点:
1. 每接入一个异构微服务实例,都需要额外部署一个 spring-cloud-starter-alibaba-sidecar 实例,增加了部署成本;
2. 异构微服务调用 Spring Cloud 微服务时,本质是把 spring-cloud-starter-alibaba-sidecar 当网关在使用,经过了一层转发,性能有一定下降。
使用示例。
在已经创建的 Spring Boot 项目中引入如下依赖:
<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>
编写相关配置:
server:port: 8070
spring:cloud:nacos:discovery:server-addr: localhost:8848gateway:discovery:locator:enabled: trueapplication:name: node-service
sidecar:# 异构微服务的IPip: 127.0.0.1# 异构微服务的端口port: 8060# 异构微服务的健康检查URLhealth-check-url: http://localhost:8060/health.json
management:
endpoint:health:show-details: always
服务请求地址http://localhost:8070/node-service开头时,则会转发到具体的服务地址http://localhost:8060/。需要指出的是,原服务还是正常部署,该组件只是加了一层封装。
当需要将单机系统融合到微服务系统,或者对单机系统进行可靠性优化,亦或者对单机系统进行分布式部署等改造时,spring-cloud-starter-alibaba-sidecar组件无疑是一种参考方案。