ピーク負荷、障害、システム停止はキャッシュ クラスターの一部である可能性が高く、心配する必要はありません。 ただし、そのような状況に対する回避策がないことは間違いありません。 このようなリスク原因要因に対する障害回復力はキャッシュ クラスターの主な要件であり、障害シナリオからの回復が常に容易になります。 状況によっては、データ損失はごくわずかであり、簡単に対処できる場合もありますが、ミッションクリティカルなデータが関係する場合には、データの保護と可用性を二次的な要件として置くことができません。
NCache データは失われません!
NCacheは、インメモリ分散データ キャッシュ ストアであり、ピーク負荷またはダウンタイム時にデータの高可用性が保証されるアーキテクチャを提供します。 ノードがクラスターから永久に離脱するような悲惨な状況でも、データは 100% 利用可能な状態を保ちます。 NCache は、実行時にサーバー ノードの追加または削除を処理するように設計されています。
また、最新の適用可能な機能を使用して、実行時にキャッシュ構成を変更することもできます。 ピアツーピア アーキテクチャにより、 NCache 「単一障害点」という最大の問題を回避できます。 フェイルオーバーのサポートは、キャッシュ クラスター内だけでなく、キャッシュに接続されているクライアントでも提供されます。 させる NCache 非常に動的であり、データ損失がないことを非常に自信を持って主張します。 理解するために下の図を見てみましょう NCacheの可用性。
ステップ 1 では、クライアントが NCache ピアツーピア アーキテクチャを持つクラスター。
図 2 は、災害によりキャッシュ クラスターから離脱したノードを示しています。
以下の図は、キャッシュ クラスターが残りのノード間でデータのバランスをとり、クライアントがキャッシュ クラスターに接続されたままであることを示しています。
キャッシングトポロジ
NCache はデータ ストレージ用のさまざまなトポロジを提供するため、独自の要件に応じてデータを保存できます。 以下のトポロジを見てください。
- ミラーリングされたトポロジ: 名前が示すように、 ミラーリング トポロジは XNUMX つのノードを持つクラスターを意味し、そのうちの XNUMX つはパッシブ ノードとミラーリングされたアクティブ ノードです。
- 複製されたトポロジー: In 複製された トポロジでは、各ノード上に同じデータが複製されます。
- パーティション化されたキャッシュ:で 仕切られた トポロジでは、すべてのサーバー ノードにパーティションがあり、データはノードとそのパーティション間で均等に分割されます。
- レプリカ キャッシュのパーティション: レプリカのパーティション トポロジは、すべてのパーティションのレプリカを保持するため、最も高速なトポロジです。 すべてのパーティションは別のサーバーにレプリケートされ、レプリカはパッシブであるため、クライアントはレプリカに接続できません。
次に、キャッシュ トポロジに関するデータの可用性について説明します。 前述の各トポロジには異なる特性があります。 複製されたトポロジー データがすべてのノードで確実にレプリケートされるため、データの 100% の可用性が維持されます。 の パーティション化されたトポロジXNUMX つのノードがダウンすると、データの一部が失われます。 ただし、 パーティション化されたレプリカ トポロジー、すべてのパーティションにレプリカがあるため、ノードが失われた場合、データは失われます。 redis残りのノード間でトリビュートされます。 これにより、POR トポロジがデータの可用性に関して最も効率的になります。 非同期パーティション レプリカ トポロジではバックグラウンド データ レプリケーションが行われるため、データ損失が発生する可能性がありますが、同期 POR トポロジでは、クライアント アプリケーションを通じてレプリケーションが行われるため、データ損失は発生しません。
キャッシングトポロジ 自己修復動的クラスタリング NCache アーキテクチャ
のピアツーピア アーキテクチャ NCache
ピアツーピア アーキテクチャとは、マスター ノードやスレーブ ノードの概念が存在しないことを意味します。 NCache。 クラスターは明確に定義された一連のサーバーによって形成され、各サーバーはキャッシュ クラスター内の他のすべてのサーバーに接続されます。 クラスター全体の管理を担当するコーディネーター ノードがあります。 コーディネーター ノードは、クラスターに参加しているノードに関して最上位のノードです。 コーディネーター ノードがクラスターから離れると、次に上位のノードがコーディネーター ノードになります。 コーディネータ ノードは、他のノード上のデータ配布の全情報も共有するため、次のコーディネータ ノードはデータ配布についてすべてをすでに知っています。
データの分散はバケットに基づいて行われます。 単一バケットはデータ分散の最小単位です。 すべてのバケットは、キャッシュ クラスター内のノード間で均等に分散されます。
たとえば、1000 つのノードと 500 バケットのデータを持つキャッシュ クラスターは、各ノードに XNUMX バケットのデータを保持します。 NCache 分布マップに基づいてデータを分布します。 分散マップは、バケットと、バケットが存在するノードをマッピングします。
あるノードから別のノードにデータが転送されるプロセスは、 状態転送。 データをバケットごとに既存の (ソース ノード) から新しい (割り当てられた) ノードに転送します。 状態転送が行われる間、状態転送プロセス全体が完了するまで、特定のバケットに失敗した/関連するすべての操作がソース ノードに送られます。 状態転送プロセスが完了すると、状態転送が完了したことがすべてのノードに通知されます。
クラスターおよびクライアント内のランタイム検出
NCache 動的機能によりデータの可用性に優れています。 ノードがキャッシュ クラスターに参加すると、すべてのサーバー ノードとクライアント ノードに実行時にこの情報が提供され、データ分散が行われます。 コーディネーター ノードは、新しいサーバーがキャッシュ クラスターに参加していることを確認し、キャッシュ クラスターのノード リストに新しいサーバー ノードを追加します。 また、キャッシュ クラスターに入る新しいサーバー ノードについて他のすべてのサーバー ノードに通知します。 その後、新しいサーバー ノードは他のすべてのサーバー ノードとの TCP 接続を取得します。 したがって、新しいサーバーは、キャッシュ クラスターに参加するまで、既存のキャッシュ サーバー ノードに関する情報を持ちません。
同様に、キャッシュ クライアントも実行時に検出されます。 キャッシュ クラスターに接続するクライアントは、キャッシュ クラスター全体とすべてのサーバー ノードについて知る必要はありません。 必要なのは、実行中の単一のキャッシュ サーバーの情報だけです。 この接続を使用して、どのキャッシュ サーバーに接続するかを確認します。 以下は、接続の確立後にクライアントに提供される重要な情報です。
- データ分布図: どのデータがどのサーバー ノードに存在するかという情報を保持し、簡単にアクセスできるようにするマップ。
- キャッシュ トポロジ: どのキャッシュ サーバーに接続するかを決定するためのキャッシュ トポロジに関する情報。
- クラスターメンバーシップ情報: クラスターに入る新しいノードやクラスターから離れる既存のノードなど、クラスターのメンバーに関する情報。
- に関する情報 圧縮または暗号化.
- 連載情報: バイナリまたは JSON。
動的クラスタリング スプリットブレイン自動回復 メンテナンスモード
接続フェイルオーバーのサポート
NCache クラスターは動的な自己修復クラスターであり、実行時にフェイルオーバーを処理します。 XNUMX 種類のフェイルオーバー サポートが提供されます。 NCache:
- クラスター内のフェイルオーバーのサポート: キャッシュ サーバーがいつでもクラスターから離脱しても、キャッシュ クラスターはキャッシュ サーバーの喪失から非常に効率的に回復します。 さらに詳しく説明すると、キャッシュ クラスターが残りのキャッシュ サーバー ノード間でデータ バケットを分割し、新しい配布に関してすべてのキャッシュ サーバー ノードを更新することを意味します。
- クライアント内でのフェイルオーバーのサポート: キャッシュ サーバーと同様に、キャッシュ クライアントも他の既存のキャッシュ サーバーに従って調整します。 クライアントがキャッシュ サーバーに接続していて、サーバー ノードが利用できないために接続が失われた場合、それに接続されているすべてのクライアントは自動的に他の既存のノードに移動します。
メンテナンスモード
メンテナンスモード によって提供される別のユーザー主導の機能です NCache。 前に説明したように、状態の転送は、クラスターから離脱またはクラスターに参加するすべてのノードで行われます。 不必要な状態転送を避けるためにサーバー ノードがクラスターから離れるシナリオでは、メンテナンス モードが役に立ちます。 これにより、メンテナンスのためにノードを停止する制御が可能になり、高価な状態転送プロセスのコストをクラスターに節約できます。 ノードがメンテナンス中は、すべての操作がレプリカ ノードから提供されます。 ノードがクラスターに再参加するとすぐに、状態がレプリカ ノードと同期されます。
まとめ
キャッシュ データを扱う際の最大の課題は、データの可用性です。 NCache は、どんな犠牲を払ってでもデータの可用性に対処するためのハイエンド機能を豊富に備えており、悲惨な状況で即座に損害を制御できます。 それだけではなく、 NCache は、高可用性を提供するだけでなく、キャッシュ クラスターを線形に拡張できる非常にスケーラブルなアーキテクチャを備えています。 したがって、安全に言えるのは、 NCache アプリケーション アーキテクチャが必要とする最適なキャッシュ層です。