の唯一の目的 NCache アプリケーションに最適なパフォーマンスを提供することです。 これらのパフォーマンス数値を達成するには、キャッシュ環境を簡単かつコスト効率よく拡張できる必要があります。
As NCache はインメモリ データストアであるため、最初の懸念事項は、XNUMX つの物理ボックス上で割り当てられているメモリが限られていることです。 XNUMX つ目は計算上の制限です。 我々はすべてそれを知っている NCacheを提供することに加えて、 基本的な CRUD 操作、次のような多くの高度な機能もサポートしています。 Pub / Sub, クエリそして、これらの機能に対するクライアントのリクエストが多くなると、より多くの処理能力の必要性が高まります。 これは、遅かれ早かれ、キャッシュ サーバーが最大処理制限に達することを意味します。 これが起こるとき、 NCache あなたを見捨てません。 代わりに、これに対する解決策があり、それを説明するためにここにいます。
NCache 詳細 .NETでの分散キャッシング 高可用性 NCache
線形スケーラビリティ NCache
環境が上記の制限に達すると、 NCache 新しいサーバー ノード (または複数のノード) をキャッシュ クラスターに追加できます。 新しいサーバーの追加は、基本的に、次の方法で新しい物理ノードをクラスターに追加することです。 NCache Webマネージャ or NCache PowerShellツール これにより、メモリ全体が強化され、過剰な受信リクエストに対処するための別のリソースが提供されます。
これにより、線形スケーラビリティが保証されます。 どうやって? ノードを追加すればするほど、パフォーマンスが向上するためです。 の NCache、クラスターにノードを追加しても、一貫したスループットの低下を引き起こすオーバーヘッドは発生しません。 最近行われたパフォーマンス ベンチマークによると、 NCache 達成 2 つのサーバー ノードで 5 万操作/秒! それが勝利でないとしたら、何が勝利なのかわかりません。
そして、これらすべての最良の部分には、 ダイナミック の性質 NCache クラスタリング。 つまり、クラスターに新しいノードを追加するだけで、既存のプロセス、アプリケーション、またはノードを停止する必要はありません。
NCache 詳細 NCache パフォーマンスベンチマーク NCache パフォーマンス ベンチマーク – ビデオ
もう少し深く掘り下げて、何を明らかにしましょう NCache 機能はスケーラビリティの表に反映されます。
スケーラビリティのためのクライアント操作
NCache クライアントには、すべてのサーバー ノードに直接自動的に接続する機能が組み込まれています。 と NCache 分散マップにより、クライアントはどのノードに必要なデータがあるかを知ることができます。 したがって、クライアントからの操作は複数のホップやノードを経由しません。 代わりに、特定のデータを含むサーバーまで XNUMX ホップかかります。 このシンプルかつ賢い機能は、環境の拡張に役立ちます。
並列処理による運用のスケーラビリティ
NCache などのさまざまな高度な操作をサポートします。 クエリ, 一括操作, タグ、および複数のノードで実行する必要があるその他の多くの操作。 これらの操作をラウンドロビン方式ですべてのノードに送信する代わりに、 NCache すべての操作をすべてのノードに並行して送信できます。
たとえば、クライアントはキャッシュに格納されているデータをクエリしたいので、そのクエリをクラスターのすべてのノードに送信します。 すべてのノードは、保存されているデータセットに対してローカルでクエリを実行し、結果をクライアントと共有します。 クライアントは、すべてのサーバー ノードからのすべての結果をマージし、XNUMX つの単一の結果をすべてのエンド アプリケーションに返します。 すべてのノードが同じクエリを並行して実行することで、スケーラビリティが向上し、システムが高速化されます。
スケーリング操作のためのパイプライン化
NCache 使用されます パイプライン 単一の TCP 呼び出しでネットワーク経由で送信する必要がある操作のチャンクを作成します。 この手法により、複数のリクエストを XNUMX つずつ送信し、その確認を待つオーバーヘッドが軽減されます。
ここで例を見てみましょう。 そう言ってください NCache クライアントはサーバーに 100 のオペレーションを送信しています。これは通常、クライアントが 100 の I/O オペレーションを実行することを意味します。 これらの操作を成功させるには、ユーザー モードからカーネル モードへのすべてのトランザクションで大量の CPU パワーが消費されます。 CPU の消費量が多すぎるとコストがかかり、アプリケーションのパフォーマンスが低下します。
ここで、クライアント側のパイプライン処理は、XNUMX つのサーバーに送信されるすべての操作を結合し、そのチャンクを XNUMX つの専用 I/O 呼び出しで送信します。 サーバー側のパイプラインは、サーバーが XNUMX 回の単純な呼び出しで複数の I/O 呼び出しを確実に受信できるようにします。 サーバーが送り返す応答も一緒に受信されます。 これだけでなく、サーバーは受信操作に対して一度に最大の応答を生成しようとします。
したがって、専用呼び出しでサーバーに送信された 100 個の操作は、XNUMX 回の呼び出しでサーバーによって受信されます。 そして、取得した操作の結果は、サーバーによって XNUMX 回の呼び出しで送信されます。 この手法は、システムを大幅に拡張するのに役立ちます。
NCache 詳細 クライアント側の操作 パイプライン処理 NCache
パーティションレプリカでのスケーラブルなバックグラウンドレプリケーション
クライアントがサーバー ノード上で実行する更新操作はすべて、フォールト トレランスと高可用性のためにレプリカ サーバーに複製される必要があります。 NCache サーバーは、クライアントの介入なしにこのレプリケーションをバックグラウンドで実行します。 このレプリケーションはバックグラウンド プロセスであることに加えて、コストを最大限に節約するために一括で実行されます。 このプロセスでは、すべての操作がバックグラウンド レプリケーションを通じてスケールされるため、スケーラビリティがもたらされ、キャッシュの可用性も高くなります。 双方にとって有利です。
スケーラビリティを実現する後書きキャッシュ
クライアントがデータベースにデータを書き込みたい場合、サーバーに送信される同じリクエストにより、そのデータがキャッシュとデータベースに書き込まれます。
この機能の非同期実装は次のとおりです。 後書き これにより、サーバーは計算上の遅延なくデータベースにアクセスできるようになります。 これにより、データベースとキャッシュの同期が維持され、メモリ内キャッシュに必要なパフォーマンスが維持されます。
Status NCache クライアントはライトビハインドを有効にしてキャッシュ サーバーにリクエストを送信し、サーバーはそのデータをキャッシュに書き込み、制御をクライアントに返し、バックグラウンドでバッチ システムを使用してデータがデータベースにも確実に保存されるようにします。 このメカニズムにより、アプリケーションがスケーラブルになります。
メモリ管理におけるオブジェクト プーリングによるスケーラビリティ
.NET 環境では、自動ガベージ コレクター (GC) がアクティブになると、アプリケーションで実行されているすべてのアクティビティが停止され、メモリ内のデータ計算が一時停止します。 これらの一時停止は、アプリケーションのパフォーマンスに大きな影響を与えます。 作成するオブジェクトが大きくなるほど、GC がより多く発生し、このヒットも大きくなります。
このような長い GC 一時停止を回避するには、 NCache ネイティブ .NET キャッシュであるため、独自のメモリ管理としてオブジェクト プーリング技術が使用されます。 この仕組みでは、 NCache サーバーはオブジェクトをプールし、新しいオブジェクトを作成する代わりにそれらを再利用するため、GC を呼び出す必要が少なくなります。 この必要性が低いほど、アプリケーションのパフォーマンスが向上し、スケーラビリティが向上します。
NCache 詳細 サーバー側の操作 パイプライン処理 NCache
スケーラビリティをもたらすクライアント キャッシュ
スケーラビリティに関しては、 クライアントキャッシュ それ自体が、の最も重要な機能の XNUMX つであることが証明されています。 NCache.
クライアント キャッシュは、アプリケーションが実行されているのと同じマシン上にクラスター化キャッシュの最も頻繁に使用されるデータを保存します。 アプリケーションとクラスター化キャッシュの間でクライアント キャッシュを使用すると、アプリケーションの近くに常駐するローカル キャッシュ リソースが提供されます。 このキャッシュはアプリケーションの読み取りリクエストのほとんどを処理するため、必然的に I/O コストが削減されます。 そのため、更新されたデータに高速にアクセスできるだけでなく、アプリケーションのスケールも向上します。
OutProc クライアント キャッシュから InProc クライアント キャッシュに移動すると、ローカル ノードにアクセスするコストが削減され、このスケーラビリティ チャートはさらに最適化できます。
スケーラビリティの結論 NCache
アプリケーションを最大限に活用する一方で、XNUMX つの大きな障害に遭遇する可能性があります。 キャッシュ上の計算負荷が増加するか、データ ストレージの設定された制限に達するかのどちらかですが、どちらもスケーリングによって大幅に改善できます。 NCache。 あなたは完全に制御できます NCache これには、環境にスケーラビリティをもたらす機能が豊富に含まれています。 何を求めている? NCachingを入手してください!
NCache 詳細 ダウンロード NCache エディションの比較