Dynamic Clustering in In-Memory Distributed Cache
NCache インメモリ分散キャッシュクラスターは 自己回復、動的で、拡張性が高い。 アプリケーションをダウンタイムさせることなく、実行時にキャッシュ サーバーを追加または削除できます。 の NCache クラスターは、アプリケーション要求の処理とデータの処理に関して線形なスケーラビリティを提供します。 キャッシュ クラスターがピーク制限に達したら、さらにサーバーを追加できます。 redisリクエストとデータロードをトリビュートします。
キャッシュ サーバーがダウンすると、キャッシュ クラスターがサーバーの障害を自動的に検出し、それに応じて調整します。キャッシュサーバーがダウンした場合を考えてみましょう。 パーティション-レプリカ トポロジに合わせて、キャッシュ クラスターはパーティションとデータを自動的に再配置します。 残りのキャッシュ サーバーは、ダウンしたサーバーの残りのデータをバックアップ サーバーからコピーします。
すべてのクラスター化キャッシュには、専用の TCP ベースのクラスターがあります。 アプリケーションは TCP 経由でキャッシュ クラスターと通信します。 したがって、アプリケーション プロセスがダウンしても、キャッシュ クラスターには影響しません。 クラスター化キャッシュの構成時に、すべてのキャッシュ クラスターに個別の TCP ポートが必要です。 の パーティション-レプリカ トポロジは、レプリカ用に XNUMX つの追加の TCP ポートを占有します。
ピアツーピアアーキテクチャ すべてのキャッシュ サーバーが他のすべてのキャッシュ サーバーとの TCP 接続を確立できるようになります。 これにより、キャッシュ サーバーは必要なときにいつでも相互に直接通信したり、他のときにはリクエストをブロードキャストしたりすることができます。 キャッシュ クラスター、マルチスレッド アーキテクチャにより、操作を実行できます。 パラレルしたがって、今日の強力なハードウェアの恩恵を享受できます。
また、ご購読はいつでも停止することが可能です リクエストのタイムアウトを構成する キャッシュ クラスターの構成時に、キャッシュ クラスターの場合。 デフォルトのリクエストのタイムアウトは 60 秒です。
Note
この機能は以下でも利用できます NCache Professional.
Note
キャッシュ クラスターに割り当てられたクラスター ポートは、構成されているすべてのキャッシュ サーバーで使用できる必要があります。 同様に、ファイアウォールは、特定のクラスター ポート上のキャッシュ サーバー間の通信を許可するように構成する必要があります。 デフォルトのクラスター ポート範囲 から始まる 7800.
インメモリ分散キャッシュのクラスター コーディネーター
分散環境では、さまざまなタスクの調整が避けられません。 キャッシュ クラスターでは、コーディネーター サーバーがこの重要な役割を果たします。 各キャッシュ クラスターには XNUMX つのコーディネーター キャッシュ サーバーがあります。
コーディネーター サーバーの選択 NCache はシンプルです。 最上位のキャッシュ サーバーがコーディネーター サーバーの役割を引き継ぎます。 したがって、最初にクラスターに参加したキャッシュ サーバーがコーディネーター サーバーになります。 コーディネータ キャッシュ サーバーがキャッシュ クラスターから離脱する場合 優雅に または、突然、次に上位のキャッシュ サーバーがコーディネーターになります。
コーディネーター キャッシュ サーバーは次の役割を果たします。
クラスターのメンバーシップ: コーディネーター サーバーは、新しいキャッシュ サーバーのメンバーシップ要求を受け入れる責任があります。 また、更新されたメンバーシップ リストを残りのサーバーにブロードキャストします。 同様に、サーバーがクラスターから離れると、コーディネーター サーバーはメンバーシップの変更について他のサーバーに通知します。
分布マップの生成: コーディネーター サーバーは、サーバーがキャッシュ クラスターに参加または離脱するたびに、分散マップを生成し、レプリカを管理します。 パーティション化 および パーティション-レプリカ トポロジ。
注文のリクエスト: 追加 および 更新 のデータの 複製されたトポロジー データの一貫性を実現するには、すべてのキャッシュ サーバー上の操作が同じ順序で実行される必要があります。 これらの操作はコーディネーター サーバーからシーケンス トークンを取得し、これらのシーケンス トークンに従って操作の実行が行われます。 このメカニズムにより、特定のファイルに対して同じ更新が行われることが保証されます。
CacheItem
クラスタ全体に適用されます。キャッシュ データ ローダーとリフレッシャーの管理: キャッシュスタートアップローダーとリフレッシャー タスクはコーディネーター サーバー上で実行されます。 複数の場合 配布のヒント キャッシュ スタートアップ ローダーまたはリフレッシュャーに指定されている場合、コーディネーターはこれらのヒントを別のクラスター メンバーに割り当てて、並列ロードおよびリフレッシュを実行します。
データの無効化と削除: すべてのキャッシュサーバー 複製 および 鏡 トポロジには同じデータ セットが含まれます。したがって、コーディネーター サーバーはデータの無効化を担当します (有効期限 および 依存関係) クラスター全体にわたって。 コーディネーター サーバーは、どのアイテムを対象にするかを決定します。 期限切れの or 追い出された キャッシュからそれらの項目を削除し、クラスター呼び出しを通じてクラスター全体からそれらの項目を削除します。
サーバーがインメモリ分散キャッシュ内のキャッシュ クラスターに参加および離脱する方法
サーバー ノードがキャッシュ クラスターに参加したり、キャッシュ クラスターから離脱したりするプロセスは次のとおりです。
メンバーの検出とサーバーへの参加
最初のキャッシュ サーバーでキャッシュを開始すると、キャッシュ クラスターが形成されます。 メンバー検出プロセスは、キャッシュの開始時にすべてのキャッシュ サーバーで実行されます。 検出プロセスでは、キャッシュ サーバーは、サーバー上の他のキャッシュ メンバーとの TCP 接続の確立を試みます。 設定されたクラスターポート.
最初のキャッシュ サーバーが起動しても、キャッシュ クラスター内の他のキャッシュ サーバーとの接続を確立できない場合、他のキャッシュ サーバーは起動していないと判断します。 このサーバーは、キャッシュ クラスターの最初のメンバーおよびコーディネーター サーバーになります。 他のサーバーは起動するとすぐに、同じ検出プロセスを実行し、実行中のキャッシュ サーバーとの接続を確立します。
これらのキャッシュ サーバーは、すでに実行されているキャッシュ サーバーからキャッシュ クラスターのコーディネーター サーバーに関する情報を求めます。 検出プロセスが完了し、コーディネーター サーバーが決定されると、新しく参加するキャッシュ サーバーはコーディネーターに参加リクエストを送信します。
コーディネーターは参加リクエストを受け入れ、分散マップを生成します ( パーティション化 および パーティション-レプリカ トポロジ)、新しいメンバーシップ リストをキャッシュ クラスター全体にブロードキャストします。
サーバーからの正常な終了
ときにあなたを キャッシュを停止する を介してキャッシュサーバー上で NCache 管理センター or PowerShellツール、退出キャッシュ サーバーは、脱退リクエストを送信することでコーディネーターに通知します。 コーディネーターは直ちに脱退要求を処理して分散マップを生成し、新しいメンバーシップ リストをクラスター全体にブロードキャストします。 したがって、クラスターは新しい分布マップに従って迅速に調整されます。
突然のサーバー障害
コーディネーターに通知することなく、キャッシュ サーバーが突然ダウンする (停電など) 場合があります。 キャッシュ サーバーが突然ダウンすると、終了したサーバーと他のキャッシュ サーバーの間の TCP 接続が切断されます。 彼らは、構成可能な再試行回数だけ、離脱するサーバーとの TCP 接続を再確立しようとします。 このメカニズムは、一時的な接続障害から回復し、サーバーの誤った停止宣言を防ぐのに役立ちます。
接続の再試行が終了すると、指定されたキャッシュ サーバーは、突然離脱したサーバーの停止を終了します。死亡が判明すると、キャッシュ サーバーはコーディネーターに通知します。コーディネーターはキャッシュ サーバーの死をすでに発見している可能性がありますが、他のキャッシュ サーバーから提供される情報により、コーディネーターがサーバーの死を発見した場合に迅速にメンバーシップを調整できます。
いずれの場合でも、コーディネーターは新しい配布マップを生成し、既存のキャッシュ サーバー全体に新しいメンバーシップ リストをブロードキャストします。
心拍
切断された TCP 接続の検出は、接続を通過するトラフィックによって異なります。たとえば、キャッシュ クラスターがビジー状態で、さまざまなキャッシュ サーバー間でリクエストを送信している場合、接続の切断は早い段階で検出されます。ただし、キャッシュ クラスターのアクティビティが非常に低い場合は、TCP 接続の切断の検出にさらに時間がかかる可能性があります。
この問題を回避するには、 NCache クラスターにはビルトインが備わっています 心拍の仕組み それを有効にすることができます。 クラスターがアイドル状態の場合、 ハートビート メッセージはサーバー間で定期的に交換されます。したがって、 心拍の仕組み キャッシュ サーバー間のトラフィックを生成し、サーバーの突然の停止の早期停止検出に役立ちます。
ナグリング
NCache クラスターは複数のリクエストの並列実行をサポートします。 用語 しつこい TCP 接続経由で送信する前に、複数のリクエストを XNUMX つのリクエストに結合することを指します。 これにより、クラスターのスループットが向上します。 設定できます しつこい とその閾値 サービス構成ファイル.
クラスターメンバーシップ変更アラート
クラスターのメンバーシップの変更は重要なアクティビティです。 それで、 NCache は、キャッシュ管理者とアプリケーションにメンバーシップの変更を通知する複数のメカニズムを提供します。
キャッシュログ: ログをキャッシュする キャッシュ管理者がメンバーシップの変更を探す最初の場所です。
イベントビューア: メンバーの参加および脱退の通知は、 イベントビューアにログインしました Windowsでは。
電子メールアラート: また、ご購読はいつでも停止することが可能です 電子メールアラートを設定する 特定のキャッシュに対するサーバーの参加および離脱イベントの数。メンバーシップの変更が行われるたびに、電子メールが生成され、登録されている電子メール受信者に送信されます。
アプリケーションレベルの通知: クライアント アプリケーションでも、 通知コールバックを登録する クラスターメンバーシップの変更について。 これらのコールバックは、クラスター メンバーシップの変更が発生するたびに呼び出されます。
も参照してください
キャッシュトポロジ
ローカルキャッシュ
キャッシュクライアント
クライアントキャッシュ
WANレプリケーション用のブリッジ