NCache アーキテクチャ
NCache .NET、Java、Python、Node.js向けのオープンソースのインメモリ分散キャッシュです。高トランザクションワークロード向けに構築されており、極めて高い速度とリニアなスケーラビリティを実現し、パフォーマンスのボトルネックを解消し、エクストリームトランザクション処理(XTP)をサポートします。 NCache また、高可用性を実現するために、インテリジェントなデータ レプリケーションと自己修復型の動的クラスタリングも提供します。
動的クラスター (高可用性)
NCache ピアツーピアアーキテクチャに基づく自己修復型動的キャッシュクラスタリングにより、100%の稼働率を実現します。TCPベースのクラスタで、クラスタ内のすべてのサーバーがピアとなります。これにより、キャッシュやアプリケーションを停止することなく、ダウンタイムゼロのランタイムでサーバーメンバーシップの拡張やクラスタからの削除が可能です。
ピアツーピアクラスタ(自己修復)
NCache クラスタはピアツーピアのクラスタアーキテクチャを採用しています。つまり、マスターノードとスレーブノードは存在せず、各サーバーは互いにピア関係にあります。ただし、クラスタコーディネーターはクラスタ内で最も古いノードです。このノードがダウンした場合、次に古いノードが自動的にコーディネーターになります。
建築家の視点
単一障害点を生み出すマスタースレーブアーキテクチャとは異なり、 NCache 100%分散型のピアツーピアモデルを採用しています。これにより、クラスタコーディネーターがダウンした場合でも、次に古いノードが即座に管理を引き継ぎ、ダウンタイムゼロのクラスタ運用を維持します。
このクラスタコーディネーターは、すべてのクラスタ操作とその他のキャッシュ構成情報を管理します。また、クラスタの健全性を管理し、クラスタ内の他のサーバーとの接続が部分的にしか確立されていないキャッシュサーバーを強制的に削除します。
NCache 動的クラスタリングとリアルタイム分布マップの伝播。
動的クラスタリング
のコア NCache 高可用性とは動的クラスタリングであり、TCP経由でメンバーシップの変更をリアルタイムに伝播することで、ダウンタイムなしでサーバーの追加や削除を可能にします。前述のように、 NCache ています 動的クラスタリングアーキテクチャ。 これが可能に NCache そのような変更が行われているときでも、常に稼働していること。
動的クラスタリングを使用すると、次のことができます。
-
-
実行時にキャッシュサーバーを追加/削除する キャッシュやアプリケーションを停止することなく。
-
-
クラスターのメンバーシップ 実行時に更新され、クラスター内のすべてのサーバーとクラスターに接続されているすべてのクライアントに伝達されます。
スプリット ブレイン クラスターの処理
NCache インテリジェントな検出アルゴリズムを使用してスプリットブレインシナリオを解決し、分岐したサブクラスタを自動的に調整して、手動介入なしにデータの整合性を回復します。 NCache ダイナミッククラスタリングは インテリジェントなスプリットブレイン検出と回復 機能。スプリットブレインは、ネットワークの問題によりキャッシュサーバー間の接続が切断されたときに発生します。これにより、複数の独立したサブクラスターが形成され、各サブクラスターは他のクラスターがダウンし、自分だけが残っているクラスターであると想定します。
このような場合、キャッシュサーバーが突然クラスターから離脱すると、残りの NCache サーバーは再接続を試行し続けます。しかし、その間、各サブクラスターは独立してデータを更新し、同期されていない複数のデータバージョンを作成します。
ネットワークの問題が解決したら、 NCache スプリットブレインが自動的に起動されます。これは、どのキャッシュサーバーがデータを保持し(勝者)、どのサーバーがデータを放棄するか(敗者)を自動的に決定することで行われます。これは、負けたクラスターのサーバーが勝者クラスターに新しいノードとして再参加する必要があるため、必要なことです。一部のデータは失われますが、最終的には人手を介さずにキャッシュクラスターを迅速に復旧できます。
動的クライアント接続
NCache もできます 追加または削除 キャッシュや他のクライアントを停止することなく、実行時にクライアントに通知します。クライアントを追加すると、クラスタ内の1つのキャッシュサーバーとの接続を確立するだけで済みます。そのサーバーに接続すると、必要なクラスタメンバーシップとキャッシュトポロジ情報が受信されます。その後、接続する他のサーバーを決定します。
- - パーティション/パーティションレプリカキャッシュクライアントはキャッシュサーバーのすべてのパーティションに接続します(レプリカは自身のパーティションとのみ通信するため、レプリカには接続しません)。これにより、クライアントは適切なパーティションに対して読み取りおよび書き込み操作を実行できます。また、クラスターに新しいサーバーが追加された場合、クライアントは更新されたクラスターメンバーシップ情報を受信し、その新しく追加されたサーバーにも接続します。
- - 複製されたキャッシュ: の場合 複製されたキャッシュでは、クライアントはクラスタ内の1つのキャッシュサーバに接続しますが、すべてのキャッシュサーバのクライアント数が均等になるように負荷分散されます。そのため、すべての読み取りと書き込みは1つのキャッシュサーバで実行できます。クラスタに新しいサーバが追加されると、クライアントはキャッシュサーバからこの情報を取得し、必要に応じて新しいサーバに再接続します。
- - ミラーリングされたキャッシュ: の場合 ミラーリングされたキャッシュクライアントは、この2ノードクラスタ内の唯一のアクティブノードに接続します。クライアントがパッシブノードに接続した場合、パッシブノードはクライアントにアクティブノードに関する情報を伝え、クライアントは自動的にアクティブノードに再接続します。アクティブノードがダウンし、パッシブノードがアクティブになった場合、すべてのクライアントは自動的に新しいアクティブノードに接続します。
NCache キャッシュ サーバーとクライアントのランタイム スケーラビリティ。
動的構成
動的クライアント接続と動的クラスタリングのセクションで述べたように、 NCache キャッシュとクライアントの動的な構成を提供します。このセクションでは、このランタイム構成がどのように機能するかについて説明します。
-
-
キャッシュ構成: 管理ツールを通じてキャッシュが作成されると、この設定情報はその時点で認識されているすべてのキャッシュサーバーにコピーされます。同様に、実行時にクラスターに追加された新しいサーバーは、更新されたキャッシュ設定全体を受け取り、ローカルディスクにコピーします。
-
-
構成変更のホット適用: 実行時に「ホット適用」機能を使用してキャッシュ設定の一部を変更することができます。例えば、 キャッシュサイズ または有効にする 圧縮この場合、更新された構成情報は実行時にすべてのキャッシュサーバーに伝播され、それぞれのディスクに保存されます。この情報の一部は、必要に応じてすべてのクライアントにも送信されます。
-
-
分散マップ(パーティション/パーティションレプリカキャッシュ): これはキャッシュの起動時に作成され、すべてのキャッシュサーバーとクライアントにコピーされます。この分散マップには、クラスター化されたキャッシュ内の合計1000個のバケットのうち、どのバケットがどのパーティションに配置されているかに関する情報が含まれています。
クラスタ内の接続フェイルオーバー
クラスター内のすべてのキャッシュサーバーはTCP経由で接続されます。また、すべてのキャッシュサーバーは、実行時に追加された新しいサーバーも含め、クラスター内の他のすべてのキャッシュサーバーに接続されます。 NCache クラスタ内のあらゆる接続を確実にするためのさまざまな方法を提供します 生かされた 接続に失敗しているにもかかわらず、接続が切断されることがあります。これらの障害は通常、ルーター、ファイアウォール、またはネットワークカード/ネットワークドライバーの問題によるネットワークの不具合が原因で発生します。
- - 接続の再試行: 2つのキャッシュサーバー間の接続が切断された場合、 NCache この接続を再確立するために、自動的に複数回の再試行が行われます。これらの 再試行 ユーザーが指定したタイムアウト期間中に発生します。
- - キープアライブ ハートビート: NCache また、各キャッシュサーバーがハートビートとして小さなデータパッケージを他のすべてのサーバーに送信し続ける機能も備えています。これにより、ネットワークソケットに問題が発生した場合、キャッシュサーバーはそれを検出し、再試行によって修正することができます。
- - 部分的に接続されたサーバー: 場合によっては、ネットワークの問題によりクラスタがサブクラスタ(「スプリットブレイン")。 NCache ネットワークが復元されると、どのクラスターがデータを保持するかを決定し、他のクラスターに再参加を要求することで、この問題を自動的に検出して解決します。
クライアントとの接続フェイルオーバー
クライアントでの接続フェールオーバーは、クラスター フェールオーバーの再試行、ハートビート、正常なサーバーへの自動再接続に似ています。
-
-
接続の再試行: フェイルオーバーに関しては、接続の再試行はクラスタレベルとクライアントレベルで同じです。ただし、クライアントとキャッシュサーバー間の接続が切断された場合、 NCache クライアントが自動的に実行します 複数回の接続再試行 この接続を確立するために、再試行が行われます。これらの再試行はタイムアウト期間中に行われます。接続を確立できない場合は、クライアントアプリケーションに例外がスローされ、処理が行われます。
-
-
キープアライブ ハートビート: クラスター内の接続フェイルオーバーと同じです。
-
-
部分的に接続されたクライアント (パーティション化された/パーティション レプリカ キャッシュ): 再試行を繰り返しても接続が時間内に回復しない場合があり、クライアントは他のサーバーが実際にはアクセスできないにもかかわらず、アクセスできないと想定することがあります。そのため、パーティションキャッシュ/パーティションレプリカキャッシュの場合、分散マップではアクセスできないサーバーにデータが存在すると示されていても、すべてのデータの読み取りまたは書き込みを他のサーバーとやり取りします。この場合、他のキャッシュサーバーが仲介役として機能し、正常に動作します。
キャッシュ トポロジ (線形スケーラビリティ)
NCache データの一貫性と信頼性を維持しながら、線形スケーラビリティを実現する多様なキャッシュトポロジを提供します。2台のサーバーからなる小規模なキャッシュから、数百台のサーバーからなる大規模なクラスターまで、幅広いアプリケーションをサポートすることを目標としています。キャッシュトポロジとは、複数のキャッシュサーバーにまたがるクラスター化されたキャッシュにおける、データストレージ、データレプリケーション、およびクライアント接続戦略のことです。
参照データとトランザクションデータ
参照データはそれほど頻繁に変更されないため、頻繁なリクエストに対応し、データベースへのコストのかかるアクセスを防ぐためにキャッシュし、更新はたまにしか行いません。一方、トランザクションデータは非常に頻繁に変更されるデータであり、読み取るのと同じくらい頻繁に更新される可能性があります。
初期の頃は、頻繁に変更されるデータは古くなり、データベース内の最新データと同期しなくなるため、キャッシュは主に参照データとして利用されていました。しかし、 NCache キャッシュがデータベースとの同期を維持できるようにする非常に強力な機能を提供するようになりました。
すべての NCacheのキャッシュトポロジは参照データに適していますが、特にトランザクションデータに効果的なトポロジもいくつかあります。そのため、どのトポロジが最適かを判断するには、読み取りと書き込みの回数を考慮する必要があります。また、一部のキャッシュトポロジは、特に更新処理において、それほどスケーラブルではないため、この点にも留意してください。
以下は、キャッシュトポロジと、読み取りと書き込みへの影響のリストです。
-
-
パーティションキャッシュ(レプリケーションなし): これは最も高速なトポロジですが、データが複製されないため、キャッシュ サーバーがダウンするとデータが失われます。
-
-
パーティション-レプリカキャッシュ (最も人気のある)このトポロジーは、読み取りと書き込みの両方において超高速です。さらに、信頼性を損なうことなくデータの複製も行います。速度/スケーラビリティとデータの信頼性の最適な組み合わせです。
-
-
複製されたキャッシュ小規模な環境に最適です。各サーバーはキャッシュの完全バックアップを保持するため、高いデータ信頼性とフォールトトレランスを確保できます。読み取りは超高速で、線形にスケーラブルです。2ノードクラスターでは書き込みは中程度の速度ですが、書き込みはすべてのキャッシュサーバーで同期的に行われるため、サーバーを追加しても拡張性はありません。
-
-
ミラーリングされたキャッシュ: このトポロジは小規模な環境に最適です。2ノードのアクティブ/パッシブ構成のレプリケーションキャッシュよりも書き込み処理が高速です。ただし、これ以上のスケールはできません。
-
-
クライアントキャッシュ: あらゆるキャッシュトポロジーにおいて、読み取り集中型のユースケースに最適です。分散キャッシュでInProc速度を実現できます。
| トポロジー |
パフォーマンスを読み取ります。 |
パフォーマンスを書き込みます。 |
信頼性の向上 |
最適な使用例 |
| パーティション-レプリカ |
極端な |
ハイ |
ハイ |
トランザクションデータ / Eコマース |
| パーティション化 |
極端な |
極端な |
なし |
一時データ / 最大パフォーマンス |
| 複製 |
極端な |
穏健派 |
ハイ |
小規模クラスタ / 読み取り集中型 |
| ミラーリング |
ハイ |
ハイ |
ハイ |
2ノードのアクティブ/パッシブ設定 |
| クライアントキャッシュ |
インプロセス速度 |
穏健派 |
高(同期) |
読み取り集中型 / ローカル L1 キャッシュ |
パーティション化されたキャッシュ
パーティションキャッシュは、読み取りと書き込みの両方において、最速かつ最もスケーラブルなキャッシュトポロジです。大規模クラスター向けに設計されており、ピーク負荷時でも高速な読み取りと書き込みを実現します。ただし、データの複製は行われません。そのため、サーバーがダウンした場合のバックアップはありません。
NCache 線形スケーラビリティと分散を実現するパーティション化されたキャッシュ。
パーティション化されたキャッシュのいくつかの特徴は次のとおりです。
-
-
動的パーティション: キャッシュは実行時にパーティションに分割され、各キャッシュサーバーは1つのパーティションを持ちます。クラスター化されたキャッシュごとに合計1000個のバケットがあり、すべてのパーティションに均等に分散されます。基本的に、キャッシュサーバーの追加/削除は、実行時にパーティションの作成/削除につながります。パーティションバケットの割り当ては、キャッシュにデータが追加されても変更されません。パーティションが追加または削除されるか、データがキャッシュから削除される場合にのみ変更されます。 負荷分散この再バランス調整は、バケットとそのデータをターゲットパーティションに移動する状態転送プロセスを指します。
-
-
分布図: キャッシュクラスタは、どのバケットがどのパーティションに存在するかという情報を含む分散マップを作成します。分散マップは、状態転送が発生するたびに更新されます。分散マップはすべてのサーバーとクライアントに伝播されます。クライアントはこれを使用して、読み取り/書き込み操作を行う際にどのキャッシュサーバーと通信するかを判断します。
-
-
動的データバランシング: すべてのバケットはHashMapベースであり、データはキーに適用されるハッシュアルゴリズムに基づいて保存されます。そのため、使用されるキーによっては、一部のバケットに他のバケットよりも多くのデータが保存される可能性があります。この不均衡が設定可能なしきい値を超えると、 NCache バケットを自動的に移動して、負荷のバランスを再調整します。
-
-
クライアントはすべてのパーティションに接続しますクライアントはすべてのキャッシュサーバーに接続し、サーバーからの1回のリクエストで直接データの読み書きを行うことができます。クライアントとキャッシュサーバー間の接続が切断された場合、クライアントは、サーバー上に存在しアクセスできないキャッシュアイテムの読み書きを他のサーバーに依頼します。そして、そのサーバーがクライアントの作業を支援します。
パーティション-レプリカキャッシュ
注: パーティション キャッシュで説明した内容はすべてここでも当てはまります。
と同じように パーティション化されたキャッシュパーティション・レプリカ・キャッシュは、読み取りと書き込みの両方において非常に高速で線形スケーラブルなキャッシュ・トポロジです。大規模なキャッシュ・クラスター向けに設計されており、ピーク負荷時でも読み取りと書き込みのパフォーマンスが非常に良好に維持されます。さらに、パーティション・レプリカ・キャッシュはデータを複製するため、キャッシュサーバーがダウンしてもデータ損失は発生しません。
パーティションレプリカキャッシュは 最も人気のあるキャッシュトポロジ パフォーマンス/線形スケーラビリティとデータの信頼性の両方の長所を実現できるからです。
NCache データの信頼性と線形スケーラビリティを実現するパーティション レプリカ キャッシュ。
以下は、Partition-ReplicaCacheの特徴の一部です。
-
-
動的パーティション: パーティション キャッシュと同じです。
-
-
動的レプリカ: 実行時にパーティションが作成または削除されると、そのレプリカも作成または削除されます。レプリカは常に別のキャッシュサーバー上に存在し、パーティションごとにレプリカは1つだけです。
-
-
非同期レプリケーション: デフォルトでは、パーティションからレプリカへのレプリケーションは非同期です。クライアントからの書き込み(追加/更新/削除)はパーティションにヒットし、レプリカへの非同期一括レプリケーションのためにキューに入れられます。これによりパフォーマンスは向上しますが、パーティションがダウンし、すべての更新がレプリカにレプリケートされていない場合、データ損失のリスクがわずかにあります。ただし、これは非常に稀なケースです。
-
-
同期レプリケーション: データの機密性が非常に高く(例:財務データ)、古いデータが残ってはいけない場合は、設定で「同期レプリケーション」オプションを選択できます。このオプションを選択すると、すべての書き込み操作は、完了と判断されるまで、パーティションとレプリカの両方で同期的に実行されます。これにより、レプリカで操作が失敗した場合、パーティションでも操作が失敗します。したがって、キャッシュ内のすべてのデータ(パーティションとレプリカの両方)の一貫性が常に保証されます。ただし、非同期レプリケーションよりも速度が遅くなるため、パフォーマンスに影響します。
-
-
分布図: パーティション キャッシュと同じです。
-
-
動的データバランシング (パーティションとレプリカ): パーティションキャッシュと同じです。ただし、パーティションレプリカキャッシュでは、パーティションがデータバランス調整されている場合、レプリカでもデータバランス調整が行われます。
-
-
クライアントはすべてのパーティションに接続します: パーティションキャッシュと同じです。ただし、パーティションレプリカキャッシュでは、クライアントはパーティションのみと通信し、レプリカとは通信しません。これは、レプリカがパッシブであり、パーティションはデータを複製する際にレプリカとのみ通信するためです。
複製されたキャッシュ
レプリカキャッシュは、2台以上のキャッシュサーバーへのレプリケーションを通じてデータの信頼性を確保します。読み取りは非常に高速でスケーラブルです。しかし、書き込みはクラスター内のすべてのサーバーに同期されるため、スケーラビリティに欠けます。2ノードクラスターの場合、書き込みはデータベースよりも高速ですが、パーティションレプリカキャッシュほど高速ではありません。3台以上のサーバークラスターでは、書き込みパフォーマンスが低下し、最終的にはコストが増大します。
NCache 高いデータ信頼性と読み取りスケーラビリティを実現する複製キャッシュ。
以下は、レプリケートされたキャッシュの特徴の一部です。
-
-
動的に複製されたノード: キャッシュやアプリケーションを停止することなく、既存のキャッシュに実行時にキャッシュサーバーを追加または削除できます。新しく追加されたサーバーは、キャッシュ全体のコピー(レプリカ)を自身に作成します。削除されたサーバーはクラスターメンバーシップを更新し、そのすべてのクライアントは他のサーバーに移動します。
-
-
各ノードのキャッシュ全体: キャッシュ全体がクラスター内のすべてのサーバーにコピーされます。
-
-
読み取りはスケーラブルです: 読み取りは非常に高速で、サーバーを追加してもスケーラブルです。ただし、サーバーを追加してもキャッシュサイズは増加しません。新しく追加されたサーバーは、キャッシュ全体のコピーに過ぎないからです。
-
-
書き込みは同期的です: 2ノードクラスタでは書き込みは非常に高速で、データベースよりも高速です。ただし、書き込みは同期的に行われるため、すべてのキャッシュサーバーが同期的に更新されるまで、各書き込み操作は完了しません。そのため、書き込み速度は他のトポロジほど速くありません。
-
-
クライアントは XNUMX つのサーバーのみに接続します各キャッシュクライアントは、キャッシュサーバーによって決定された負荷分散アルゴリズムに基づいて、クラスター内の1つのサーバーにのみ接続します。このキャッシュサーバーがダウンした場合、クライアントはリスト内の次のサーバーに接続します。負荷分散を使用しない場合は、キャッシュ設定ファイルで接続先のサーバーを手動で指定することもできます。
ミラーリングされたキャッシュ
ミラーキャッシュは、小規模環境向けの2ノード構成のアクティブ/パッシブキャッシュクラスタです。アクティブノードからパッシブノードへの非同期レプリケーション/ミラーリングにより、データの信頼性を確保します。読み取りと書き込みの両方で非常に高速です(実際、書き込み処理はレプリケートキャッシュよりも高速です)。ただし、この2ノード構成のアクティブ/パッシブクラスタを超えて拡張することはできません。
NCache 2 ノードのアクティブ/パッシブ高可用性を実現するミラー キャッシュ。
以下は、ミラーリングされたキャッシュの特徴の一部です。
-
-
1 つのアクティブ サーバーと 1 つのパッシブ サーバー: ミラーキャッシュには2台のサーバーしかありません。1台はアクティブサーバー、もう1台はパッシブサーバーです。どちらのサーバーもキャッシュ全体のコピーを保持しています。アクティブサーバーがダウンした場合、パッシブサーバーは自動的にアクティブサーバーになります。また、ダウンしていたアクティブサーバーが復旧した場合、実行時に管理ツールでこの指定を変更しない限り、パッシブサーバーとして扱われます。
-
-
フェイルオーバーサポートによるクライアントの接続各キャッシュクライアントは、読み取りおよび書き込み操作を行うために、クラスター内のアクティブサーバーにのみ接続します。このアクティブサーバーがダウンした場合、すべてのクライアントは、既にアクティブになっているパッシブサーバーに自動的に接続します。このフェイルオーバーサポートにより、サーバーがダウンした場合でも、ミラーキャッシュは常に稼働状態を維持できます。
-
-
非同期ミラーリングアクティブサーバーへの書き込みはすべて、パッシブサーバーに非同期的にミラーリング/レプリケーションされます。これにより、アクティブサーバーがダウンし、パッシブサーバーがアクティブサーバーに切り替わる場合でも、パッシブサーバーは常に最新のデータと同期されます。また、非同期ミラーリングでは、パッシブサーバー上で複数の書き込みが一括処理として実行されるため、パフォーマンスも向上します。
| 機能 |
パーティション化 |
パーティション-レプリカ |
複製 |
ミラーリング |
| 最大クラスターサイズ |
数百のノード |
数百のノード |
より小さなクラスター |
2ノード(アクティブ/パッシブ) |
| レプリケーションタイプ |
なし |
非同期/同期 |
同期 |
非同期 |
| データの安全性 |
低(バックアップなし) |
高(レプリカ) |
高(フルバックアップ) |
高(ミラー) |
| 主なメリット |
最大パフォーマンス |
スケーラビリティ + 信頼性 |
読み取り集中型スケーリング |
小規模な可用性 |
クライアントキャッシュ(InProc Speed)
クライアントキャッシュはウェブ/アプリケーションサーバーにローカルで、アプリケーションのすぐ近くに配置されます。分散キャッシュから読み込んだデータをキャッシュできます(キャッシュトポロジーは問いません)。クライアントキャッシュはアプリケーションにローカルですが、スタンドアロンではありません。常にクラスター化されたキャッシュと同期されているため、クライアントキャッシュ内のデータが古くなることはありません。
これは「キャッシュの上にキャッシュを重ねる」ようなもので、アプリケーションのパフォーマンスとスケーラビリティをさらに向上させます。クライアントキャッシュをInProcモードで使用すると、InProc並みの速度を実現できます。 NCache クライアントキャッシュには、通常クライアントキャッシュとフルデータクライアントキャッシュの2種類があります。いずれも、クラスター化されたキャッシュとの同期を維持しながらネットワーク呼び出しを削減することでパフォーマンスを向上させるように設計されています。
通常のクライアントキャッシュ
レギュラークライアントキャッシュは、クライアントマシン上のローカル(L1)キャッシュとして機能し、頻繁にアクセスされるデータのサブセットをアプリケーションの近くに保持します。これにより、クラスター化キャッシュ(L2)へのネットワークトリップの繰り返しが削減されます。一貫性を維持するため、クライアントキャッシュは変更通知を受信することでクラスター化キャッシュと同期を維持します。クライアントキャッシュはデータセット全体を保持していないため、すべてのクエリはクラスター化キャッシュ(L2)に対して実行されます。
フルデータクライアントキャッシュ
フルデータクライアントキャッシュは、データセット全体をクライアントマシンにローカルにキャッシュすることで、さらに一歩進んだ機能を提供します。これには、以下の利点とオプションがあります。
-
-
完全なデータセットをローカルにキャッシュする: 選択した .NET クラスのすべてのエントリをキャッシュし、完全なデータセットを即座に利用できるようにします。
-
-
ほぼインプロセス速度: フルデータ クライアント キャッシュでは、完全なデータセットがローカルに存在するため、読み取り操作が高速化され、SQL クエリをクライアント キャッシュ上で完全に実行できるようになります。
-
-
クラスター化されたキャッシュとの同期: 一貫性を確保するために、クラスター化されたキャッシュと完全に同期された状態を維持します。
-
-
厳格なクエリ強制: この強制により、データセット全体がローカルで利用可能な場合にのみクエリが実行されます。データセットが部分的にしかロードされていない場合、クエリはクラスター化されたキャッシュにフォールバックすることなく直ちに失敗します。
-
-
厳密なローカル読み取り: これにより、すべての読み取り操作がクライアントキャッシュからのみ実行されるようになります。キーがローカルに見つからない場合、クラスター化されたキャッシュから取得するのではなく、キャッシュミスを返します。
アプリケーションに対してローカルである間、クライアントキャッシュはスタンドアロンではありません。 代わりに、常にクラスター化されたキャッシュと同期されます。 これにより、クライアントキャッシュ内のデータが古くなることはありません。
NCache 1/100 秒未満の InProc パフォーマンスを実現するクライアント キャッシュ。
以下は、ミラーリングされたキャッシュの特徴の一部です。
-
-
読み取りが多いケースに適しています: クライアントキャッシュは、読み取り集中型のユースケースに最適です。ただし、書き込み回数と読み取り回数が同じ場合、書き込み操作で2箇所のデータが更新されるため、クライアントキャッシュは実際には遅くなります。
-
-
ローカルキャッシュと同様に高速(InProc / OutProc)クライアントキャッシュは、アプリケーションプロセス内(InProcモード)またはWeb/アプリケーションサーバーローカル(OutProcモード)に存在します。どちらの場合も、クラスター化されたキャッシュからデータを取得する場合と比較して、アプリケーションのパフォーマンスが大幅に向上します。InProcモードでは、オブジェクトを「アプリケーションヒープ」にキャッシュできるため、分散キャッシュでは実現できない「InProcスピード」を実現できます。
-
-
スタンドアロンのキャッシュではないクライアントキャッシュはローカルキャッシュである場合もありますが、スタンドアロンのキャッシュではありません。クラスターキャッシュと同期されています。つまり、クライアントキャッシュ内のクラスターキャッシュ内のデータを別のクライアントが更新した場合、クラスターキャッシュはクライアントキャッシュに通知し、そのデータの最新コピーで更新します。これは非同期ですが、即座に実行されます。
-
-
楽観的/悲観的同期: デフォルトでは、クライアントキャッシュは楽観的同期を使用します。つまり、 NCache クライアントは、クライアントキャッシュに保存されているデータが最新のコピーであると想定します。クライアントキャッシュにデータがない場合、クライアントはクラスター化キャッシュからデータを取得し、クライアントキャッシュに格納し、クライアントアプリケーションに返します。悲観的同期とは、キャッシュクライアントがまずクラスター化キャッシュにキャッシュされたアイテムの新しいバージョンがあるかどうかを確認します。新しいバージョンがある場合、クライアントはそれを取得してクライアントキャッシュに格納し、クライアントアプリケーションに返します。新しいバージョンがない場合、クライアントキャッシュに格納されているデータを返します。
-
-
コード変更なしのプラグイン: クライアントキャッシュを利用するには、アプリケーションコードの変更は必要ありません。代わりに、簡単な構成の変更が必要です。
次はどうする?
よくある質問(FAQ)
NCache 1000 バケットの分散マップを使用してデータを複数のサーバー ノードに分割することで線形スケーラビリティを実現し、実行時に新しいハードウェアが追加されてもクラスターがトランザクション負荷の増加を処理できるようにします。
NCache すべてのサーバーがピアである 100% ピアツーピア アーキテクチャを使用します。いずれかのノード (クラスタ コーディネータを含む) に障害が発生した場合、残りのノードは自動的に新しいコーディネータを選択し、TCP ベースのハートビートを介してクラスタのバランスを再調整して、100% の稼働時間を維持します。
どちらも線形スケーラビリティを提供しますが、パーティション キャッシュはデータの冗長性なしで最高の速度を提供します。一方、パーティション レプリカ キャッシュは、各パーティションのパッシブ レプリカを作成することで、極めて高いパフォーマンスと高可用性のバランスをとるため、最も人気のある選択肢です。
NCache インテリジェントな検出および回復アルゴリズムを使用してスプリット ブレイン シナリオを解決し、手動による介入を必要とせずに、分岐したサブクラスターを自動的に調整し、データの整合性を回復します。
An NCache クライアント キャッシュ (L1) は、頻繁にアクセスされるデータのサブセットをアプリケーション サーバーに直接保存することで、1/100 秒未満の InProc 速度を実現し、クラスター化されたキャッシュ (L2) へのネットワーク待ち時間を大幅に削減します。
はい、 NCache 動的クラスタリングをサポートしており、クラスタ分散マップをリアルタイムで自動的に更新してすべてのクライアントに伝播することで、ダウンタイムなしでのサーバ メンバーシップの拡張または削除が可能になります。