概念
Ribbon在Spring Cloud中的用法详细见这里Spring cloud系列七 为@Feign中集成的Ribbon进行个性化配置,本文重新整理我对Ribbon的新的理解
Ribbon定义
Ribbon:实现客户端的负载均衡
region、zone、Eureka集群关系
region和zone(或者Availability Zone)均是AWS的概念。在非AWS环境下,将region理解为Eureka集群,zone理解成机房。
如图:一个Eureka集群被部署在了zone1机房和zone2机房中。
以下图片来自网路:
Ribbon主要组件:
ServerList:定义获取服务器列表
ServerListFilter:对ServerList服务器列表进行二次过滤
ServerListUpdater: 定义服务更新策略
IPing: 检查服务列表是否存活
IRule :根据算法中从服务列表中选取一个要访问的服务
ILoadBalancer:软件负载平衡器入口,整合以上所有的组件实现负载功能
Ribbon组件之间的关系简单整理如下:
ServerList和ServerListFilter生成客户端可以访问的服务列表
ServerListUpdater和IPing:根据服务的状态更新服务列表
IRule:服务的选择策略
ILoadBalancer:将以上组件组合到这个类中一起工作
组合关闭如下,以下图片来自网络
Ribbon主要组件
下方配置类似myclient.ribbon.EnableZoneAffinity=true的配置中myclient值是ribbon的客户端的名称,如果去除myclient,则这个配置作用在所有的ribbon客户端
ServerList:定义获取服务器列表
实现类和重要实现类说明:
ConfigurationBasedServerList:从配置文件中获取所有服务列表
配置:
client.ribbon.listOfServers=www.microsoft.com:80,www.yahoo.com:80,www.google.com:80
DiscoveryEnabledNIWSServerList:从注册中心获取服务列表(默认配置)
配置:根据Eureka服务实例名称,从Eureka Client中获取服务列表
myClient.ribbon.NIWSServerListClassName=com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList
# the server must register itself with Eu