2010-10-06 34 views

回答

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.第六屆請求將去任C或者B,第七名將會選到哪個不能處理第六名。


使事情變得複雜,您可能希望平衡器更加智能。在這種情況下,它需要跟蹤每個服務器當前正在服務的請求數量,並在請求被完全滿足時將其遞減。

進一步的複雜性包括向會話添加粘性。這意味着平衡器必須檢查每個會話ID的請求並跟蹤上次去哪裏。


總體而言,如果您可以從已經完成此操作的公司購買產品。

0

Tomcat的平衡器應用程序和教程here是一個很好的起點。