“Ribbon 支持的负载均衡策略”的版本间的差异

来自姬鸿昌的知识库
跳到导航 跳到搜索
 
(未显示同一用户的2个中间版本)
第17行: 第17行:
 
|权重轮询策略(常用,中小型项目使用)
 
|权重轮询策略(常用,中小型项目使用)
 
|WeightedResponseTimeRule
 
|WeightedResponseTimeRule
|1.根据每个 application service 的响应时间分配一个权重,响应时间越长,权重越小,被选中的可能性越低。
+
|
2.原理:一开始为轮询策略,并开启一个计时器,每30秒收集一次每个 application service 的平均响应时间,
+
* 根据每个 application service 的响应时间分配一个权重,响应时间越长,权重越小,被选中的可能性越低。
 
+
* 原理:一开始为轮询策略,并开启一个计时器,每30秒收集一次每个 application service 的平均响应时间,当信息足够时,给每个 application service 附上一个权重,并按权重随机选择 application service,权重越高的 application service 会被选中的概率越高。
当信息足够时,给每个 application service 附上一个权重,并按权重随机选择 application service,权重
 
 
 
越高的 application service 会被选中的概率越高。
 
 
|-
 
|-
 
|3
 
|3
|随机策略(不推荐,测试使用,开发使用)
+
|随机策略(不推荐,测试使用,开发一般不使用)
 
|RandomRule
 
|RandomRule
 
|从 application service 列表中随机选择一个
 
|从 application service 列表中随机选择一个
 +
|-
 +
|4
 +
|最少并发数策略(应用在硬件软件环境一致的情况下,中小型项目使用)
 +
|BestAvailableRule
 +
|选择正在请求中的并发数最小的 application service,除非这个 application service 在熔断中。
 +
|-
 +
|5
 +
|重试策略。在“选定的负载均衡策略”基础上进行重试机制
 +
|RetryRule
 +
|
 +
* “选定的负载均衡策略”这个策略是轮询策略 RoundRobinRule
 +
* 该重试策略先设定一个阈值时间段,如果在这个阈值时间段内当选择 application service 不成功,则一直尝试采用“选定的负载均衡策略:轮询策略”最后选择一个可用的 application service
 +
|-
 +
|6
 +
|可用性敏感策略(一般在同区域内服务集群环境中使用)
 +
|AvailabilityFilteringRule
 +
|过滤性能差的 application service,有2种:
 +
 +
* 第一种:过滤掉在 eureka 中处于一直连接失败的 application service
 +
* 第二种:过滤掉高并发的 application service
 +
|-
 +
|7
 +
|区域敏感性策略(应用在大型的,物理隔离分布式环境中)
 +
|ZoneAvoidanceRule
 +
|
 +
* 1.以一个区域为单位考察可用性,对于不可用的区域整个丢弃,从剩下区域中选可用的 application service
 +
* 2.如果这个 ip 区域内有一个或多个实例不可达或响应变慢,都会降低该 ip 区域内其他 ip 被选中的权重。
 
|}
 
|}

2023年3月27日 (一) 07:42的最新版本

https://www.bilibili.com/video/BV1AN411Z7mx?p=15

Ribbon 的负载均衡策略是通过不同的类型来实现的,下表详细介绍一些常用负载均衡策略及对应的 Ribbon 策略类

id 策略名称 策略对应的类名 实现原理
1 轮询策略(默认) RoundRobinRule 轮询策略表示每次都按照顺序取下一个 application service,比如一共有5个 application service,

第1次取第1个,第2次取第2个,第3次取第3个,以此类推

2 权重轮询策略(常用,中小型项目使用) WeightedResponseTimeRule
  • 根据每个 application service 的响应时间分配一个权重,响应时间越长,权重越小,被选中的可能性越低。
  • 原理:一开始为轮询策略,并开启一个计时器,每30秒收集一次每个 application service 的平均响应时间,当信息足够时,给每个 application service 附上一个权重,并按权重随机选择 application service,权重越高的 application service 会被选中的概率越高。
3 随机策略(不推荐,测试使用,开发一般不使用) RandomRule 从 application service 列表中随机选择一个
4 最少并发数策略(应用在硬件软件环境一致的情况下,中小型项目使用) BestAvailableRule 选择正在请求中的并发数最小的 application service,除非这个 application service 在熔断中。
5 重试策略。在“选定的负载均衡策略”基础上进行重试机制 RetryRule
  • “选定的负载均衡策略”这个策略是轮询策略 RoundRobinRule
  • 该重试策略先设定一个阈值时间段,如果在这个阈值时间段内当选择 application service 不成功,则一直尝试采用“选定的负载均衡策略:轮询策略”最后选择一个可用的 application service
6 可用性敏感策略(一般在同区域内服务集群环境中使用) AvailabilityFilteringRule 过滤性能差的 application service,有2种:
  • 第一种:过滤掉在 eureka 中处于一直连接失败的 application service
  • 第二种:过滤掉高并发的 application service
7 区域敏感性策略(应用在大型的,物理隔离分布式环境中) ZoneAvoidanceRule
  • 1.以一个区域为单位考察可用性,对于不可用的区域整个丢弃,从剩下区域中选可用的 application service
  • 2.如果这个 ip 区域内有一个或多个实例不可达或响应变慢,都会降低该 ip 区域内其他 ip 被选中的权重。