From d612cad5ce4b3a709d817810a6344c3bb0074a42 Mon Sep 17 00:00:00 2001 From: Jimmy Song Date: Sat, 16 Sep 2017 16:38:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0ribbon=E7=9A=84=E8=AF=B4?= =?UTF-8?q?=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service-discovery-in-microservices.md | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/usecases/service-discovery-in-microservices.md b/usecases/service-discovery-in-microservices.md index 41eb27919..087a3eb36 100644 --- a/usecases/service-discovery-in-microservices.md +++ b/usecases/service-discovery-in-microservices.md @@ -8,10 +8,24 @@ 这两种架构都各有利弊,我们拿客户端服务发现软件Eureka和服务端服务发现架构Kubernetes/SkyDNS+Ingress LB+Traefik+PowerDNS为例说明。 -| 服务发现方案 | Pros | Cons | -| :--------- | ----------------------------------- | ---------------------------------------- | -| Eureka | 使用简单,适用于java语言开发的项目,比服务端服务发现少一次网络跳转 | 对非Java语言的支持不够好,Consumer需要内置特定的服务发现客户端和发现逻辑 | -| Kubernetes | Consumer无需关注服务发现具体细节,只需知道服务的DNS域名即可 | 需要基础设施支撑,多了一次网络跳转,可能有性能损失 | +| 服务发现方案 | Pros | Cons | +| :--------- | ---------------------------------------- | ---------------------------------------- | +| Eureka | 使用简单,适用于java语言开发的项目,比服务端服务发现少一次网络跳转 | 对非Java语言的支持不够好,Consumer需要内置特定的服务发现客户端和发现逻辑 | +| Kubernetes | Consumer无需关注服务发现具体细节,只需知道服务的DNS域名即可,支持异构语言开发 | 需要基础设施支撑,多了一次网络跳转,可能有性能损失 | + +**Eureka** 也不是单独使用的,一般会配合 ribbon 一起使用,ribbon 作为路由和负载均衡。 + +**Ribbon**提供一组丰富的功能集: + +- 多种内建的负载均衡规则: + - Round-robin 轮询负载均衡 + - 平均加权响应时间负载均衡 + - 随机负载均衡 + - 可用性过滤负载均衡(避免跳闸线路和高并发链接数) + - 自定义负载均衡插件系统 +- 与服务发现解决方案的可拔插集成(包括Eureka) +- 云原生智能,例如可用区亲和性和不健康区规避 +- 内建的故障恢复能力 ## 参考