開発者とソフトウェア アーキテクトの間でよくある悪夢の XNUMX つは、唯一の Web サーバー/データ ソースがクラッシュし、接続されている何千ものクライアント、アプリケーション、および貴重なデータが失われることです。 次のような分散型の負荷分散キャッシング レイヤーの助けを借りて NCache アプリケーション層のスケーラビリティと可用性を高めることができます。 トランザクション負荷の増加に伴い、サーバーを追加できます。 分散アーキテクチャにより、単一障害点がなくなります。
NCache インメモリです 配布 アプリケーションに最適なパフォーマンスを提供するデータ ストア。 の NCache クラスターは 自己回復 そしてダイナミック。 これには、クラスターの更新ごとにユーザーの介入なしに負荷を自動的に分散するノードが含まれています。
NCache 詳細 NCache ドキュメント パーティション化されたレプリカ
このブログでは、その方法について簡単に説明しています。 NCache オファー スケーラビリティ 100% のアップタイムを維持しながらパフォーマンスを向上させます。 理解のために NCache アーキテクチャの詳細については、次のビデオをご覧ください。
で高可用性を維持する NCache クラスタ
NCacheの分散および複製されたアーキテクチャにより、100% uptime ノードが予期せずダウンした場合でも。 NCacheのピア ツー ピア アーキテクチャと、ユーザーの介入を必要としないクラスターとクライアントのランタイム検出により、このような高可用性が保証されます。 さらに、 NCache インテリジェントなフェールオーバー サポートを提供するため、接続されているすべてのクライアントがクラスターを常に利用できるようになります。
ピアツーピアアーキテクチャ
NCache は、大阪で 動的キャッシュクラスタリング また、 ピアツーピアアーキテクチャ 単一障害点がありません。 キャッシュ クラスターには相互接続されたサーバーがあり、クラスターのメンバーシップを管理するコーディネーター (最上位のサーバー ノード) が含まれています。 コーディネーターがダウンした場合、その役割はクラスター内の次の最上位サーバーに渡されます。 これにより、クラスター メンバーシップの管理に単一障害点がなくなります。
クラスタおよびクライアント内のランタイム検出
クラスタ:
サーバーが起動すると、クラスター内の他のサーバーを少なくともXNUMXつ認識している必要があります。 サーバーには複数のキャッシュサーバーのリストが含まれており、それらのいずれかに接続しようとします。 サーバーに接続すると、そのサーバーにクラスターコーディネーターについて問い合わせ、コーディネーターにクラスターのメンバーシップリストに追加するように依頼します。
コーディネーターは、実行時にこの新しいサーバーをクラスターに追加し、接続されている他のサーバーに、新しいサーバーがクラスターに参加したことを通知します。 また、クラスターのすべてのメンバーについて新しいサーバーに通知します。 次に、新しいサーバーは、クラスター内のすべてのサーバーとのTCP接続を確立します。
クライアント:
クライアントがキャッシュサーバーに接続すると、実行時にそのサーバーから次の情報を受け取ります。
- クラスターメンバーシップ情報
- トポロジー情報のキャッシュ
- データ分布図
クライアントはこの情報を使用して、接続するキャッシュサーバーと、キャッシュトポロジに基づいたキャッシュへのアクセス方法を決定します。
クラスタおよびクライアント内のランタイム検出
In NCacheの場合、実行時のクラスタとクライアントの検出は次の方法で行われます。
クラスタ:
クラスターはノードの集合であるため、サーバーが起動すると、クラスター内の少なくとも XNUMX つの他のサーバーを認識している必要があります。 サーバーには複数のキャッシュ サーバーのリストが含まれており、それらのいずれかに接続しようとします。 サーバーに接続すると、そのサーバーにクラスター コーディネーターについて問い合わせ、コーディネーター ノードにそれをクラスターのメンバーシップ リストに追加するように依頼します。
コーディネーターは、実行時にこの新しいサーバーをクラスターに追加し、接続されている他のサーバーに、新しいサーバーがクラスターに参加したことを通知します。 また、クラスターのすべてのメンバーについて新しいサーバーを更新します。 次に、新しいサーバーは TCP接続 クラスタ内のすべてのサーバーで。
クライアント:
クライアントがキャッシュサーバーに接続すると、実行時にそのサーバーから次の情報を受け取ります。
- クラスターメンバーシップ情報
- トポロジー情報のキャッシュ
- データ分布図
クライアントはこの情報を使用して、接続するキャッシュ サーバーとキャッシュへのアクセス方法を決定します。 キャッシング トポロジ。
フェイルオーバーサポート
として NCache クラスターは自己回復型であり、サーバーが実行時に追加または削除された場合に、クラスター内およびクライアントにフェイルオーバーサポートを提供します。
- クラスターフェイルオーバーのサポート: クラスターは、クラスターが更新されるたびに他のサーバーへの接続を更新することにより、自動的に再配置されます。
- クライアントフェイルオーバーのサポート: サーバーが切断された場合、クライアントはクラスター内の別のサーバーに自動的に接続します。 同様に、サーバーが追加された場合、クライアントは自分自身を更新し、新しいサーバーに接続できます。
高可用性機能の詳細については、ブログをご覧ください。 高可用性が約束されています NCache.
キャッシングトポロジ 自己修復動的クラスタリング NCache アーキテクチャ
メンテナンスモード
NCache そのためのメンテナンス モードをサポートします。 レプリカのパーティション化 トポロジー。 ただし、POR トポロジ自体は、各ノードのレプリカで高可用性を保証します。 ただし、キャッシュでアップグレードまたはパッチ更新を実行する必要がある場合は、各クラスター ノードを XNUMX つずつ停止する必要があります。 ただし、キャッシュ ノードを停止すると、 状態転送 キャッシュ クラスタ全体でネットワークや CPU などのリソースを過度に使用し、キャッシュの可用性に大きな影響を与えます。
NCache メンテナンス モードは、メンテナンスのためにノードを停止するオプションを提供することで、この問題を解決します。 ノードが 停止、特定のタイムアウト期間中、状態転送を停止するようにクラスターに通知します。 クラスタがメンテナンスされると、このノードのレプリカがアクティブ ノードとして機能し、クライアント データ要求に対応します。 ノード自体がクラスターに再参加すると、そのレプリカ ノードからデータを要求します。 基本的に、メンテナンス モードでは、高価な状態転送プロセスのコストをクラスターで節約できます。
NCache 詳細 NCache ドキュメント メンテナンスモード NCache ドキュメント
のランタイムスケーラビリティの達成 NCache クラスタ
Since NCache 次のような高度な機能を提供するとともに、データを保存します Pub/Subメッセージング & クエリの実行、すべてのトランザクションがXNUMXつのサーバーのみにある場合、メモリまたは計算の制限に達することが予想されます。 これが理由です NCache 増加するリクエスト/秒を処理し、より多くのデータを保存するためのシームレスな線形スケーリングを提供します。
NCache Webマネージャ ボタンをクリックするだけで環境をスケーリングできます。これで、クライアントを停止することなく、追加のノードを備えた動的クラスターを作成できます。 次のGIFは、クラスターを動的にスケーリングすることがいかに簡単かを示しています。 NCache:
並列操作
NCache ています 動的クラスター これにより、クライアントはユーザーの介入なしにクラスター内で効果的に処理されるため、クライアントは必要なデータを XNUMX つのホップだけで受け取ることができます。 さらに、クライアント操作はすべてのノードで並行して送信および実行されます。 各ノードからの結果は単一の結果にコンパイルされ、操作がスケーラブルになります。 また、並列処理により、トランザクションのパフォーマンスも向上します。
パイプライン
パイプライン, NCache サーバーへの XNUMX 回の TCP 呼び出しで送信される複数のクライアント操作を組み合わせることで、ネットワークのオーバーヘッドを削減します。 同様に、クライアントは、XNUMX 回の呼び出しで操作結果を XNUMX つのチャンクで受け取ります。 運用のスケーリングに役立ちます。
オブジェクトプーリング
オブジェクトプーリングを使用すると、 NCache サーバーはオブジェクトをプールして再利用し、ガベージ コレクターが何度も呼び出されるのを防ぎます。 ガベージ コレクションはパフォーマンス集約型のタスクであるため、GC を呼び出す必要性を減らすことで、環境のパフォーマンスとスケーラビリティが向上します。
クライアントキャッシュ
NCache オファー クライアントキャッシュ、アプリケーションが存在する場所に存在する、キャッシュの上のキャッシュ。 クライアント キャッシュはアプリケーションとクラスター化されたキャッシュの間にあるため、自動的に同期され、特に読み取り操作のパフォーマンスが向上します。 クライアント キャッシュを使用すると、ネットワーク オーバーヘッドが削減されます。
詳細については、ブログをご覧ください。 のスケーラビリティアーキテクチャ NCache –洞察
NCache 詳細 クライアント側の操作 パイプライン処理 NCache
まとめ
NCache、.NETネイティブであること 分散キャッシング ソリューションであり、アプリケーション スタックにシームレスに適合します。 オブジェクト プーリング、並列操作、およびアプリケーションの隣にあるクライアント キャッシュにより、パフォーマンスが大幅に向上します。 スケーラブルであるだけでなく、常に 100% のアップタイムを維持して、 高可用性 データとクライアントの。