Dubbo有哪些负载均衡策略?

1. 加权随机:假设我们有⼀组服务器 servers = [A, B, C],他们对应的权重为 weights = [5, 3, 2],权重总和为10。现在把这些权重值平铺在⼀维坐标值上,[0, 5) 区间属于服务器 A,[5, 8) 区间属于服务器 B,[8, 10) 区间属于服务器 C。接下来通过随机数⽣成器⽣成⼀个范围在 [0, 10) 之间的随机数,然后计算这个随机数会落到哪个区间上就可以了。

2. 最⼩活跃数:每个服务提供者对应⼀个活跃数 active,初始情况下,所有服务提供者活跃数均为0。每收到⼀个请求,活跃数加1,完成请求后则将活跃数减1。在服务运⾏⼀段时间后,性能好的服务提供者处理请求的速度更快,因此活跃数下降的也越快,此时这样的服务提供者能够优先获取到新的服务请求。

3. ⼀致性hash:通过hash算法,把provider的invoke和随机节点⽣成hash,并将这个 hash 投射到[0, 2^32 - 1] 的圆环上,查询的时候根据key进⾏md5然后进⾏hash,得到第⼀个节点的值⼤于等于当前hash的invoker。

哈希环

4. 加权轮询:⽐如服务器 A、B、C 权重⽐为 5:2:1,那么在8次请求中,服务器 A 将收到其中的5次请求,服务器 B 会收到其中的2次请求,服务器 C 则收到其中的1次请求。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容