这篇文章的背景是参加阿里云中间件性能挑战赛的初赛。(赛址链接)
题目是为Dubbo设计一种自动负载均衡的算法,要求算法能够适应每个provider的变化动态分配请求。
Dubbo常用的4种算法
1. 轮询算法(或权重轮询算法)
根据配置好的权重,如1:m:n, 进行轮流分配的算法。先为第1台配置1个,然后第2台分配m个,第3台分配n个,之后开始新的一轮分配。
优点:考虑了每个provider的性能,使性能高的provider多承担负载,简洁高效。
缺点:(1)provider性能比例需要人为设定,不会根据每个provider的实时表现进行调节。
(2)当某一台个provider很慢但没有挂,服务分配到那里就会卡住等待,导致所有请求