リクエストの待機リスト
他のクラスタノードからの応答に基づいて応答の基準が満たされた後、応答が必要なクライアントのリクエストを追跡します。
問題点
クラスタノードはクライアントリクエストを処理中に、他のクラスタノードと通信してデータを複製する必要があります。クライアントに応答する前に、他のすべてのクラスタノードまたは過半数クォーラムからの応答が必要です。
他のクラスタノードとの通信は非同期に行われます。非同期通信により、要求パイプラインや要求バッチ などのパターンを使用できます。
したがって、クラスタノードは複数の他のクラスタノードからの応答を非同期に受信して処理します。その後、それらを関連付けて、特定のクライアントリクエストに対する過半数クォーラムに達したかどうかを確認する必要があります。
解決策
クラスタノードはキーとコールバック関数をマッピングする待機リストを保持します。キーはコールバックを呼び出すための特定の基準に応じて選択されます。たとえば、他のクラスタノードからのメッセージを受信したときにいつでも呼び出す必要がある場合は、メッセージの相関IDにすることができます。レプリケートログの場合、それは高水位マークです。コールバックは応答を処理し、クライアントリクエストが満たされたかどうかを決定します。
詳細は、oreilly.comのオンライン電子書籍の第14章を参照してください。
このパターンは分散システムのパターンの一部です。
2023年11月23日