进阶指南
原理
-
spring-cloud-starter-alibaba-sidecar 根据配置的异构微服务的 IP、端口等信息,将异构微服务的 IP/端口注册到服务发现组件上。
-
spring-cloud-starter-alibaba-sidecar 实现了异构服务的健康检查, spring-cloud-starter-alibaba-sidecar 会定时检测异构微服务是否健康。如果发现异构微服务不健康,Sidecar 会自动将代表异构微服务的 Sidecar 实例下线;如果异构微服务恢复正常,则会自动上线。最长延迟是 30 秒,详见 Spring Cloud Alibaba SidecarChecker#check。
优缺点分析
spring-cloud-starter-alibaba-sidecar 的设计和 spring-cloud-netflix-sidecar 基本一致,优缺点和 spring-cloud-netflix-sidecar 的优缺点也是一样的。
优点:
-
接入简单,几行代码就可以将异构微服务整合到 Spring Cloud 微服务生态
-
不侵入原代码
缺点:
-
每接入一个异构微服务实例,都需要额外部署一个 spring-cloud-starter-alibaba-sidecar 实例,增加了部署成本(虽然这个成本在 Kubernetes 环境中几乎可以忽略不计(只需将 spring-cloud-starter-alibaba-sidecar 实例和异构微服务作为一个 Pod 部署即可));
-
异构微服务调用 Spring Cloud 微服务时,本质是把 spring-cloud-starter-alibaba-sidecar 当网关在使用,经过了一层转发,性能有一定下降。
EndPoint 信息
请求 http://127.0.0.1:8070/actuator/health 地址可以看到 EndPoint 节点信息
$ curl http://127.0.0.1:8070/actuator/health
响应结果:
{ "status": "UP", "components": { "discoveryComposite": { "status": "UP", "components": { "discoveryClient": { "status": "UP", "details": { "services": ["node-service"] } } } }, "diskSpace": { "status": "UP", "details": { "total": 107374178304, "free": 18797641728, "threshold": 10485760, "path": "E:\\open_sources\\spring-cloud-alibaba\\.", "exists": true } }, "nacosDiscovery": { "status": "UP" }, "ping": { "status": "UP" }, "reactiveDiscoveryClients": { "status": "UP", "components": { "Simple Reactive Discovery Client": { "status": "UP", "details": { "services": [] } } } }, "refreshScope": { "status": "UP" }, "sidecar": { "status": "UP" } }}