我正在處理託管用戶的服務器羣集,這些用戶每個都會產生重要但負載不同的負載。對於每個用戶,我有一個負載指標。每臺服務器都可以託管多個用戶,直至達到最大負載限制。例如:部分加載的服務器之間的遷移負載分配
User | Server | Load
--------------------
A | 10 | 107
B | 10 | 59
C | 11 | 341
D | 11 | 95
E | 12 | 88
F | 12 | 215
服務器負載10 = 166,服務器負載11 = 436,和服務器負載12 = 303,我在一個PHP腳本,將從一個羣集遷移客戶到另一個,並且需要分發工作目標服務器中的用戶。
優選地,用戶將被添加到服務器10(最少加載),直到它大致等於服務器12(第二最少加載)。然後,用戶將被添加到10和12,直到他們等於11.一旦所有服務器的負載均衡,遷移的用戶將被均勻分配。
如上所述,我使用PHP。用戶和服務器數據在下面的表格來自於一個數據庫:
$users = Array ([0] => Array ([user] => 'A', [server] => '10', [load] => 107), [1] => ... etc
$servers = Array ([0] => Array ([server] => '10', [load] => 166), [1] => ... etc
我可以利用一些幫助設計一個功能(甚至只是概念上)從一個羣集遷移到另一個時,服務器之間分配用戶。雖然我的例子很簡單,但我正在數十個羣集中數以百計的服務器上與數以萬計的用戶合作。