異なるシステムに2つのエンティティがあり、一方または両方に関連付けられた情報に基づいて一方または両方を変更する何らかのトランザクションを実行する必要があり、両方のエンティティへの変更が完了するか、どちらも完了しないことを要求するとします。 。
簡単な例です。基本的に、2つの別々のハードウェアで2つの行を実行する必要があります。
my_bank.my_account -= payment
their_bank.their_account += payment
おそらく、この種の状況のために特別に存在するアルゴリズムまたはイディオムがあり、同じ値への他の試みられたアクセスの存在下で正しく機能します(正しいのいくつかの予測可能な定義のために)。2フェーズコミットプロトコルは、そのようなアプローチの1つと思われます。おそらくより多くの制限がある、より単純な代替案はありますか?(たとえば、システムが完全にシャットダウンしたり、応答に失敗したりしないようにする必要があるかもしれません。)または、何らかの方法でより優れた、より複雑なシステムがあるのでしょうか。そして、その問題に関する標準的なまたは評判の良いテキストはありますか?