処理の負荷を共有するさまざまなマシン上に、サービスの複数のインスタンスを使用してシステムを構築しようとしています。
これらはそれぞれテーブルをチェックし、そのテーブルで処理される行がある場合は、最初に選択し、処理済みとマークし、次に処理してから完了とマークします。すすぎを繰り返します。
2つのインスタンスAとBが次のことを行う競合状態を防ぐための最良の方法は何ですか
A(1)テーブルを読み取り、処理する行1を検索し、B(1)テーブルを読み取り、処理する行1を検索し、A(2)行処理をマークしますB(2)行処理をマークします
1つのアプリで、ロックまたはミューテックスを使用できます。
A1とA2を1つのトランザクションに入れることができますが、それは簡単ですか、それともこれを行うためのより良い、より高速な方法がありますか?
手順が次のようになるように、頭をオンにする必要があります。
A(1)次の行を処理するために私のものとしてマークします。(2)処理のためにそれを私に返します。
これまで何度も解決しなければならなかったと思うので、「標準」の解決策を探しています。複数ある場合は、メリットとデメリットがあります。