我要写一个加权负载平衡算法,我正在寻找一些参考。有书吗?你可以建议理解这样的算法。
谢谢!
答案 0 :(得分:10)
这里的简单算法并不复杂。
假设您有一个具有以下权重的服务器列表:
A 10
B 20
C 30
如果较高的权重代表它可以处理更多的流量。
只需按重量划分发送到每个服务器的流量,并将最小值排序为最大值。最顶层的服务器将获得用户。
例如,假设每个服务器从10个用户开始,那么订单将是:C - 10 / 30 = 0.33
B - 10 / 20 = 0.50
A - 10 / 10 = 1.00
这意味着接下来的5个请求将转到服务器C.第6个请求将转到C或B.第7个请求将转到没有处理第6个请求。
要使事情复杂化,您可能希望平衡器更加智能化。在这种情况下,它需要跟踪每个服务器当前正在服务的请求数量,并在完全满足请求时减少它们。
进一步的并发症包括增加会话的粘性。这意味着平衡器必须检查会话ID的每个请求,并跟踪它们上次的去向。
总的来说,如果你可以从已经这样做的公司购买产品。
答案 1 :(得分:0)
Tomcat的平衡器应用程序和教程here是很好的起点。