データベース テーブルを更新するサーバー側の REST API があります。テーブルはこんな感じ
ID PubId DocUuid DocFamUuid CorrelationUuid
1 156 1A 2A 3A
一意のキーは ID であり、このサーバー側 API はすべての要求に対して一意の DocUuid を生成し、PubId に基づいて DocFamUuid と CorrelationUuid を生成しています。したがって、同じ PubId を持つすべてのドキュメントは、同じ DocFamUuid と同じ CorrelationUuid を持つことになります。
私の質問は、着信要求からの特定の pubId がデータベースに存在するかどうかを確認するためにルックアップを行っていることです。存在する場合は、最初に返された結果の docFamUuid と correlationUuid を選択します。それ以外の場合は、両方を生成して保存しますデシベルへ。現在、クラスター化されたサーバー環境があり、2 つの異なるサーバーによって 2 つの別々のドキュメントが取得され、両方が処理のスレッドを開始できます。では、この状況で望ましい動作は何ですか? 1. リクエスト 1 がサーバー 1 から残りの API に送信されます。pubId は 156 で、サービスはそれをデータベースで検索します。2. リクエスト 2 は、サーバー 2 から残りの API へのデータベースにヒットします。これにも 156 の pubId があり、db テーブルに存在しないレコードを検索します。3. リクエスト 1 は、2A の docFamUuid と 3A の correlationUuid を作成し、データベース 4 に保存します。リクエスト 2 は、2B の docFamUuid と 3B の correlationUuid も作成し、db テーブルに保存しました。そして今、私たちは2つの異なる値を持っています
ID ID PubId DocUuid DocFamUuid CorrelationUuid
1 156 1A 2A 3A
2 156 1B 2B 3B
望ましい結果は次のとおりであるため、これは間違っています。
ID ID PubId DocUuid DocFamUuid CorrelationUuid
1 156 1A 2A 3A
2 156 1B 2A 3A