レプリカ キャッシュ トポロジ
クラスターでは、すべてのサーバーノードに同じデータのコピーがある場合、高可用性が得られます。 これは、クラスターがデータを失うことなく、いくつかのノード障害に耐えることができることを意味します。 この目的のために、 NCache を確実に使用できるように、レプリケートされたトポロジを提供します。
Note
この機能は以下でも利用できます NCache Professional.
レプリケーションの同期
クライアントが書き込み操作を実行するときはいつでも(追加, アップデートまたは 除去する)、この操作はクラスター全体にブロードキャストされ、制御をクライアントに返す前にすべてのキャッシュ サーバーでこの操作が複製されます。 クライアントから操作を受信するサーバーは、これらの操作をブロードキャストする責任があります。 このプロセス中に、シーケンス トークンがコーディネーター サーバーから取得され、現在の操作に関連付けられて、この操作がすべてのサーバーで同じ順序で実行され、データの一貫性が確保されます。
ブロードキャストされた書き込み操作がいずれかのキャッシュサーバーで失敗した場合、その失敗はすべてのキャッシュサーバーにもブロードキャストされ、このデータが削除されます。 これは、クラスター全体でデータの一貫性を実現するために行われます。つまり、データがキャッシュに存在する場合、すべてのサーバーが同じデータを持ちます。
レプリケーションは同期的に行われるため、このトポロジは書き込み操作には適していません。これは、サーバーの数が増えると、書き込みアプリケーションに制御を返す前にデータをすべてのキャッシュ サーバーにレプリケートするのにより多くの時間がかかるためです。 書き込み操作のパフォーマンスの低下を避けたい場合は、クラスター サイズを 3 サーバーに制限することをお勧めします。
コーディネーターサーバーの役割
コーディネーターサーバー(最上位のサーバーノード)は、状態転送などの複数のタスクを実行します。 後書き操作、のようなデータの無効化 有効期限 & 依存関係キャッシュからいずれかの項目を削除すると決定した後、他のすべてのノードに対して、それらの項目もキャッシュ ストアから削除するように要求します。 コーディネーター サーバーがクラスターから離れると、次に上位のサーバーがコーディネーター サーバーとなり、その役割を再開します。
完全にスケーラブルな読み取り操作
すべてのサーバーが同じデータを持ち、クライアントがすべてのキャッシュサーバーに分散されているため。 したがって、すべてのサーバーが同じデータをクライアントに提供します。 クラスタ内のサーバーが多いほど、同時に処理されるデータ読み取り要求が多くなります。
接続負荷分散
レプリケートされたトポロジには、次のような特別な機能があります。 クライアント接続の自動バランス キャッシュ サーバー間でデータ負荷を共有するために、サーバー間でキャッシュを実行します。 クライアントがサーバーに接続すると、このサーバーは他のすべてのサーバー ノードにも同じ数のクライアントがあることを確認します。 他のサーバーのクライアント数が少ない場合は、クライアント接続要求を適切に拒否し、他のサーバーにリダイレクトします。 こうすることで、すべてのサーバーに同じ数のクライアントが存在し、他のキャッシュ サーバーと比較してより多くのクライアントで過剰な負荷がかかるサーバーはなくなります。
クライアント接続
レプリケート トポロジでは、クライアントは一度にクラスターの XNUMX つのサーバーのみに接続されます。 接続されているサーバーがダウンした場合、クライアントは人間の介入なしでクラスターの別のサーバーに自動的に接続します。
状態転送
状態転送は、レプリケートされたトポロジでのノードの参加時とノードの離脱時にトリガーされます。 すべてのノードが同じデータを持っているため、ノードがクラスターから離れるときにトリガーされる状態転送はあまり役に立ちません。 ただし、ノード参加の際、新しく参加したノードはコーディネーター サーバーに対して、クラスターの残りの部分と同期するためにキャッシュされたデータをすべて提供するように要求します。