2010-09-08 52 views
0

我試圖寫應用程序,這將重定向或不是一些網絡流量。假設,我想將10%的移動重定向到另一個Web服務器。問題是,我不知道如何在我的應用程序中將該條件轉換爲邏輯條件。由於輸入我有請求數。如何獲取哪個請求應該被重定向,哪些不是,如果請求數量仍然在變化?簡單的負載平衡alghorithm

THX的所有幫助

+0

你只是得到請求的腫塊數量,還是他們在進來一個時間?如果每次都有一個,那麼每十分之一呢?如果一次性購買10%並分配它們,怎麼樣? – Ragster 2010-09-08 09:29:28

回答

0

獲取隨機數從<0;10)範圍,然後如果這number is equal to 0。重定向到另一個網絡服務器。

或者

您可以使用此http://en.wikipedia.org/wiki/Round_robin算法。

或者

你可以瞭解這個10%的會忘掉,寫一些功能的服務器上獲得免費的資源,那麼你可以誰在選擇的時間更自由的資源,並在所有的服務器選擇服務器已滿您可以放棄錯誤連接或推送到隨機服務器。

或者

想想做這Web代理服務器層上,我認爲這是一個更好的解決方案。

閱讀本http://en.wikipedia.org/wiki/Reverse_proxy

0

Apache的文檔對load balancing(按Ctrl + F它在該網頁)的部分。

通常情況下,最好將來自同一個IP地址的請求保存到同一臺服務器上。只要你沒有從1個IP地址太多的要求,像下面的僞代碼應工作:

servers = [0: server0.com, 1: server1.com, ...]; 
server_count = 10; 
# split the crc32 range into server_count chunks 
server = crc32(get_client_ip_address()) % (4294967296/server_count); 
redirect(servers[server]);