我目前有一個系統,服務器告訴所有的客戶端應用程序什麼時候在服務器配置的時間窗口(例如12到6客戶端時間)之間連接到服務器。非隨機加權分配
當前算法通過時間窗口中的秒數對客戶端的10位ID號(公平分佈)進行修改,併爲每個客戶端連接到服務器提供相當平均分佈的可預測時間。現在的問題是,客戶端在不同的時區內是不成比例的,並且給定窗口的某些時區重疊,所以最終的結果是負載未在服務器上均勻分佈。我想要的是設計一種算法,我可以用我們當前擁有的每個時區的一定比例的客戶端進行配置,並讓它在窗口之間分配客戶端的下一個連接時間,從而導致服務器負載均勻這是可預測的(非隨機)。
這裏是一個簡單的圖形表示:
12AM 1AM 2AM 3AM 4AM 5AM 6AM GMT
GMT -4 40% of the clients ||||||||||||||||||||||||||||||
GMT -5 10% of the clients ||||||||||||||||||||||||||||||
GMT -6 20% of the clients ||||||||||||||||||||||||||||||
GMT -7 30% of the clients ||||||||||||||||||||||||||||||
當前算法是確定性的。我認爲這是一項要求?服務器不能只記得每個客戶的預期重新連接時間? – 2009-11-20 15:08:45
是的,它需要保持確定性。它不能一天一天地變化,並且需要能夠在沒有其他交易的情況下進行計算來讀取或堅持它。 – duckworth 2009-11-20 15:38:33
對於每個連接的客戶端,你知道他們的時區嗎?這將影響可能的算法。 – 2009-11-26 05:30:40