リクエストの待機リスト

他のクラスタノードからの応答に基づいて応答の基準が満たされた後、応答が必要なクライアントのリクエストを追跡します。

問題点

クラスタノードはクライアントリクエストを処理中に、他のクラスタノードと通信してデータを複製する必要があります。クライアントに応答する前に、他のすべてのクラスタノードまたは過半数クォーラムからの応答が必要です。

他のクラスタノードとの通信は非同期に行われます。非同期通信により、要求パイプライン要求バッチ などのパターンを使用できます。

したがって、クラスタノードは複数の他のクラスタノードからの応答を非同期に受信して処理します。その後、それらを関連付けて、特定のクライアントリクエストに対する過半数クォーラムに達したかどうかを確認する必要があります。

解決策

クラスタノードはキーとコールバック関数をマッピングする待機リストを保持します。キーはコールバックを呼び出すための特定の基準に応じて選択されます。たとえば、他のクラスタノードからのメッセージを受信したときにいつでも呼び出す必要がある場合は、メッセージの相関IDにすることができます。レプリケートログの場合、それは高水位マークです。コールバックは応答を処理し、クライアントリクエストが満たされたかどうかを決定します。

詳細は、oreilly.comのオンライン電子書籍の第14章を参照してください。

このパターンは分散システムのパターンの一部です。

2023年11月23日