私はN
のデータを受信するバッチを処理する必要があります。各ワーカーは、「ワーカーX
:N
」であることがわかるように構成されています。ルックアヘッドのないバケット間の重み付け分布
データが入ってくる各バッチには、ランダムにユニークなID
(ランダムであり、一様に分布しています)というサイズがあります。処理時間はサイズに比例します。サイズは大きく変わることがあります。
データの新しいバッチが利用可能になると、N個のすべてのワーカーが利用できるようにすぐに表示されますが、を調整しないでを実際に処理するだけです。今、各作業者はID % N == X
を計算します。それは真です。作業者はバッチを自己割り当てし、他の人はそれをスキップします。これは正しく動作し、平均して各ワーカーが同じ数のバッチを処理することを確認します。残念ながら、バッチサイズは考慮されていないため、非常に大きなジョブを自己割り当てする可能性があるため、一部のワーカーは他のワーカーよりもずっと後で処理を完了できます。
各ワーカーがバッチのサイズも考慮してバッチを自己割り当てするようにアルゴリズムを変更すると、平均して各ワーカーが同じ合計サイズの仕事を割り当てることができます異なるバッチから)?
「N」(20以上)が大きいですか、それとも何も仮定できません。 – dasblinkenlight
良い質問です。私の場合、それは100000ではなく、32または64のようなものです。 –
ジョブのサイズの分布を知っていますか?一様に分布していますか? – dasblinkenlight