我必须编写一个加权负载平衡算法,我正在寻找一些参考资料。有什么书吗?你可以建议理解这样的算法。
谢谢!
发布于 2010-10-07 06:24:32
这里的一个简单的算法并不是那么复杂。
假设您有一个具有以下权重的服务器列表:
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,并跟踪它们上次去了哪里。
总体而言,如果你可以从一家已经这样做的公司购买产品。
发布于 2010-10-09 00:42:33
Tomcat的balancer应用程序和tutorial here是一个很好的起点。
https://stackoverflow.com/questions/3877294
复制相似问题