1
0
mirror of https://gitee.com/mirrors/Spring-Cloud-Alibaba.git synced 2021-06-26 13:25:11 +08:00

fix greenwich docs problem

This commit is contained in:
fangjian0423 2019-10-29 15:33:46 +08:00
parent 6c6fe021e1
commit 8829235fdd

View File

@ -1,11 +1,10 @@
== Spring Cloud Alibaba Sidecar
`Spring Cloud Alibaba Sidecar` 是一个用来快速**完美整合** Spring Cloud
与 *异构微服务* 的框架,灵感来自
https://github.com/spring-cloud/spring-cloud-netflix/tree/master/spring-cloud-netflix-sidecar[Spring
Cloud Netflix Sidecar] 。目前支持的服务发现组件:
`Spring Cloud Alibaba Sidecar` 是一个用来快速**完美整合** Spring Cloud 与 *异构微服务* 的框架,灵感来自
https://github.com/spring-cloud/spring-cloud-netflix/tree/master/spring-cloud-netflix-sidecar[Spring Cloud Netflix Sidecar] 。目前支持的服务发现组件:
* Nacos
* Consul
=== 术语
@ -26,42 +25,26 @@ Cloud Netflix Sidecar] 。目前支持的服务发现组件:
原因有两点:
* Spring Cloud子项目 `Spring Cloud Netflix Sidecar`
是可以快速整合异构微服务的。然而Sidecar只支持使用Eureka作为服务发现*如果使用其他服务发现组件就抓瞎了*。
* *Sidecar是基于Zuul 1.x的*Spring
Cloud官方明确声明未来将会逐步淘汰Zuul。今年早些时候我有给Spring
Cloud官方提出需求希望官方实现一个基于Spring Cloud
Gateway的新一代Sidecar然而官方表示并没有该计划。详见https://github.com/spring-cloud/spring-cloud-gateway/issues/735
* Spring Cloud子项目 `Spring Cloud Netflix Sidecar` 是可以快速整合异构微服务的。然而Sidecar只支持使用Eureka作为服务发现*如果使用其他服务发现组件就抓瞎了*。
* *Sidecar是基于Zuul 1.x的*Spring Cloud官方明确声明未来将会逐步淘汰Zuul。今年早些时候我有给Spring Cloud官方提出需求希望官方实现一个基于Spring Cloud Gateway的新一代Sidecar然而官方表示并没有该计划。详见https://github.com/spring-cloud/spring-cloud-gateway/issues/735
既然没有,索性自己写了。
==== 为什么不用Service Mesh
* 目前Mesh主要使用场景在Kubernetes领域Istio、Linkerd
2等大多将Kubernetes作为First
Class支持虽然Istio也可部署在非Kubernetes环境而目前业界Spring
Cloud应用未必有试试Mesh的环境
* 使用Alibaba
Sidecar一个小组件就能解决问题了核心代码不超过200行引入整套Mesh方案颇有点屠龙刀杀黄鳝的意思。
* 目前Mesh主要使用场景在Kubernetes领域Istio、Linkerd大多将Kubernetes作为First Class支持虽然Istio也可部署在非Kubernetes环境而目前业界Spring Cloud应用未必有试试Mesh的环境
* 使用Alibaba Sidecar一个小组件就能解决问题了核心代码不超过200行引入整套Mesh方案颇有点屠龙刀杀黄鳝的意思。
=== 原理
* Alibaba
Sidecar根据配置的异构微服务的IP、端口等信息*将异构微服务的IP/端口注册到服务发现组件上*
* Alibaba Sidecar实现了 *健康检查* Alibaba
Sidecar会定时检测异构微服务是否健康。如果发现异构微服务不健康Alibaba
Sidecar会自动将代表异构微服务的Alibaba
Sidecar实例下线如果异构微服务恢复正常则会自动上线。最长延迟是30秒详见
`Alibaba SidecarChecker#check` 。
Sidecar根据配置的异构微服务的IP、端口等信息*将异构微服务的IP/端口注册到服务发现组件上*。
* Alibaba Sidecar实现了 *健康检查* Alibaba Sidecar会定时检测异构微服务是否健康。如果发现异构微服务不健康Alibaba Sidecar会自动将代表异构微服务的Alibaba Sidecar实例下线如果异构微服务恢复正常则会自动上线。最长延迟是30秒详见 `Alibaba SidecarChecker#check` 。
=== 要求
* 【必须】你的异构微服务需使用HTTP通信。这一点严格来说不算要求因为Spring
Cloud本身就是基于HTTP的
* 【可选】如果微服务配置了 `sidecar.health-check-url`
,则表示开启健康检查,此时,你的异构微服务需实现健康检查(可以是空实现,只要暴露一个端点,返回类似
`{"status": "UP"}` 的字符串即可)。
* 【必须】你的异构微服务需使用HTTP通信。这一点严格来说不算要求因为Spring Cloud本身就是基于HTTP的
* 【可选】如果微服务配置了 `sidecar.health-check-url`,则表示开启健康检查,此时,你的异构微服务需实现健康检查(可以是空实现,只要暴露一个端点,返回类似 `{"status": "UP"}` 的字符串即可)。
=== 使用示例
@ -109,8 +92,7 @@ endpoint:
show-details: always
----
+
配置比较简单就是把Alibaba Sidecar注册到Nacos上然后添加了几行Alibaba
Sidecar的配置。
配置比较简单就是把Alibaba Sidecar注册到Nacos上然后添加了几行Alibaba Sidecar的配置。
==== 异构微服务
@ -150,16 +132,13 @@ server.listen(8060, function() {
===== 测试1Spring Cloud微服务完美调用异构微服务
为你的Spring Cloud微服务整合Ribbon然后构建 `http://node-service/**`
,就可以请求到异构微服务的 `/**` 了。
为你的Spring Cloud微服务整合Ribbon然后构建 `http://node-service/\\**`,就可以请求到异构微服务的 `/**` 了。
示例:
Ribbon请求 `http://node-service/` 会请求到 `http://localhost:8060/`
,以此类推。
Ribbon请求 `http://node-service/` 会请求到 `http://localhost:8060/`,以此类推。
至于断路器正常为你的Spring
Cloud微服务整合Sentinel或者Hystirx、Resilience4J即可 。
至于断路器正常为你的Spring Cloud微服务整合Sentinel或者Hystirx、Resilience4J即可 。
===== 测试2异构微服务完美调用Spring Cloud微服务
@ -167,18 +146,13 @@ Cloud微服务整合Sentinel或者Hystirx、Resilience4J即可 。
示例:
如果你有一个Spring Cloud微服务叫做 `spring-cloud-microservice`
那么NodeJS应用只需构建
`http://localhost:8070/spring-cloud-microservice/**` Alibaba
Sidecar就会把请求转发到 `spring-cloud-microservice` 的 `/**` 。
如果你有一个Spring Cloud微服务叫做 `spring-cloud-microservice`那么NodeJS应用只需构建 `http://localhost:8070/spring-cloud-microservice/\\**` Alibaba Sidecar就会把请求转发到 `spring-cloud-microservice` 的 `/**` 。
而Spring Cloud Gateway是整合了Ribbon的所以实现了负载均衡Spring Cloud
Gateway还可以整合Sentinel或者Hystirx、Resilience4J所以也带有了断路器。
而Spring Cloud Gateway是整合了Ribbon的所以实现了负载均衡Spring Cloud Gateway还可以整合Sentinel或者Hystirx、Resilience4J所以也带有了断路器。
=== Alibaba Sidecar优缺点分析
Alibaba
Sidecar的设计和Sidecar基本一致优缺点和Sidecar的优缺点也是一样的。
Alibaba Sidecar的设计和Sidecar基本一致优缺点和Sidecar的优缺点也是一样的。
优点:
@ -187,8 +161,5 @@ Sidecar的设计和Sidecar基本一致优缺点和Sidecar的优缺点也是
缺点:
* 每接入一个异构微服务实例都需要额外部署一个Alibaba
Sidecar实例增加了部署成本虽然这个成本在Kubernetes环境中几乎可以忽略不计只需将Alibaba
Sidecar实例和异构微服务作为一个Pod部署即可
* 异构微服务调用Spring Cloud微服务时本质是把Alibaba
Sidecar当网关在使用经过了一层转发性能有一定下降。
* 每接入一个异构微服务实例都需要额外部署一个Alibaba Sidecar实例增加了部署成本虽然这个成本在Kubernetes环境中几乎可以忽略不计只需将Alibaba Sidecar实例和异构微服务作为一个Pod部署即可
* 异构微服务调用Spring Cloud微服务时本质是把Alibaba Sidecar当网关在使用经过了一层转发性能有一定下降。