同じ役割を実行する複数の Azure インスタンスを同期する際のベスト プラクティスについて疑問に思っていました。より正確には、複数のワーカー ロールが同じ作業単位で作業するのを防ぎたいと考えています。
Azure キューは、この問題には役立たないようです。1 つのオプションは、ロックとストアド プロシージャを含む SQL テーブルを使用することです。しかし、Azure で SQL 同期を使用するのは少し厄介なようです。
何か案は?
編集、私の詳細な(ただし単純化された問題)は次のとおりです。
- n 個のターゲットがあります。
- 作業単位は、指定された間隔 (たとえば 30 秒 - ただし、ターゲットごとに異なります) で各ターゲットに対して実行する必要があります。
- m 個のワーカーがあります ( hインスタンスでホストされています)。
- 作業単位の処理には、10 秒から 1 時間かかる場合があります。
アイデアは、作業単位を Azure キューに入れるスケジューラーがあり、 m 個のワーカーのそれぞれがこれらを読み取って処理するというものです。
問題:
- worker1は unit1 の作業を開始します(これはtarget1に関するものです) - これには 10 分ほど時間がかかります
- 30秒経過
- スケジューラーはtarget1に別の作業単位を配置します。たとえばunit13です。
- worker2は、同じtarget1に対して unit13 で作業を開始します-良くありません
いくつかのアイデアがありますが、十分に曇っていないように見えるので、この問題にどのような解決策を適用するかを知りたいです.