From 8829235fdd66bedcd656aa3bfa76103607268f72 Mon Sep 17 00:00:00 2001 From: fangjian0423 Date: Tue, 29 Oct 2019 15:33:46 +0800 Subject: [PATCH] fix greenwich docs problem --- .../src/main/asciidoc-zh/sidecar.adoc | 69 ++++++------------- 1 file changed, 20 insertions(+), 49 deletions(-) diff --git a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/sidecar.adoc b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/sidecar.adoc index 2a8832f5..74ad66ce 100644 --- a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/sidecar.adoc +++ b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/sidecar.adoc @@ -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() { ===== 测试1:Spring 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当网关在使用,经过了一层转发,性能有一定下降。