我有N
工人需要處理傳入的批次數據。每個工作人員都配置爲知道它是「工作人員X
的N
」。不帶前瞻的桶之間的加權分配
每個傳入的批量數據都有一個隨機的唯一的ID
(是隨機的,它是均勻分佈的),它有不同的大小;處理時間與大小成正比。大小可以大不相同。
當新的一批數據可用時,它立即顯示爲可供所有N個工人使用,但我只需要一個人實際處理它,而不需要它們之間的協調。現在,每個工人計算ID % N == X
,這是真的,工人自動分配批次,而其他人則跳過它。這工作正常,並確保平均每個工作人員處理相同數量的批次。不幸的是,它沒有考慮到批量大小,所以一些工人可以比其他人完成更多的工作,因爲他們可能會自行分配非常大的工作。
如何更改算法,以便每個工人自動分配批次的方式也考慮到批次的大小,因此平均而言,每個工人將自行分配相同的總工作量(來自不同的批次)?
'N'大(20或更多),或者你不能對此做任何假設? – dasblinkenlight
好問題。在我的情況下,它是像32或64,而不是100000. –
你知道工作分配的大小?它們是否均勻分佈? – dasblinkenlight