《Apache Dubbo微服务开发从入门到精通》——服务发现与负载均衡——三、 负载均衡机制(2) https://developer.aliyun.com/article/1224434
6) 原理介绍
P2C算法
Power of Two Choice算法简单但是经典,主要思路如下:
• 对于每次调用,从可用的provider列表中做两次随机选择,选出两个节点providerA和providerB。
• 比较providerA和providerB两个节点,选择其“当前正在处理的连接数”较小的那个节点。
adaptive算法
• 相关指标
。 cpuLoad
该指标在provider端机器获得,并通过invocation的attachment传递给consumer端。
。 rt
rt为一次rpc调用所用的时间,单位为毫秒。
。 timeout
timeout为本次rpc调用超时剩余的时间,单位为毫秒。
。 weight
weight是设置的服务权重。
。 currentProviderTime
provider端在计算cpuLoad时的时间,单位是毫秒。
。 currentTime
currentTime为最后一次计算load时的时间,初始化为currentProviderTime,单位是毫秒。
。 multiple
。 lastLatency
。 beta
平滑参数,默认为0.5
。 ewma
lastLatency的平滑值
。 inflight
inflight为consumer端还未返回的请求的数量。
对于备选后端机器x来说,若距离上次被调用的时间大于2*timeout,则其load值为0。
否则
• 算法实现
依然是基于P2C算法。
。 从备选列表中做两次随机选择,得到providerA和providerB。
。 比较providerA和providerB的load值,选择较小的那个。
《Apache Dubbo微服务开发从入门到精通》——服务发现与负载均衡——三、 负载均衡机制(4) https://developer.aliyun.com/article/1224430