分散キャッシュは、極度のトランザクション負荷時に高速パフォーマンスを要求するアプリケーションにとって不可欠です。 インメモリ分散キャッシュはデータベースよりも優れたパフォーマンスを発揮します。 また、データベース サーバーではできないサーバーをキャッシュ クラスターに簡単に追加できるため、より大きなトランザクション負荷を処理する際に線形のスケーラビリティを提供できます。
これらすべての利点にもかかわらず、まだ問題が XNUMX つあります。 ほとんどの場合、分散キャッシュはネットワーク上の一連の専用キャッシュ サーバーでホストされるため、アプリケーションはデータを取得するためにネットワーク トリップを行う必要があります。 また、これはローカルで、特にアプリケーション プロセス内からデータにアクセスするほど高速ではありません。 ここでクライアント キャッシュが役に立ちます。
In NCache クライアントキャッシュ 分散キャッシュ クラスターへの接続を開いたままにし、受信します。 イベント通知 クライアントのキャッシュ データがそこで変更されるたびに、キャッシュ クラスターから削除されます。 分散キャッシュ クラスターはクライアント キャッシュ間のデータ項目の場所を認識しているため、イベント通知はすべてのクライアント キャッシュにブロードキャストされるのではなく、関連するクライアント キャッシュにのみ送信されます。
NCache 詳細 クライアントキャッシュ キャッシュ内のイベント通知
クライアントキャッシュはどのように機能しますか?
クライアント キャッシュは、Web/アプリケーション サーバー上のローカル キャッシュにすぎませんが、分散キャッシュに接続されているため、分散キャッシュを認識します。 さらに、クライアント キャッシュはインプロセス (クライアント キャッシュはアプリケーション内に存在します) またはアウトプロセスのいずれかになります。 これにより、クライアント キャッシュは分散キャッシュよりもはるかに高速な読み取りパフォーマンスを実現できると同時に、クライアント キャッシュ データが常に分散キャッシュと同期していることが保証されます。
ただし、分散キャッシュは、分散キャッシュ クラスター内のデータが正常に更新された後、クライアント キャッシュに非同期で通知します。 技術的には、これは、クライアント キャッシュ内の一部のデータが分散キャッシュよりも古い時間枠 (ミリ秒単位) が存在することを意味します。 現在、ほとんどの場合、これはアプリケーションで完全に受け入れられます。 ただし、アプリケーションによっては 100% のデータ精度が要求される場合があります。
したがって、そのような状況に対処するには、 NCache クライアント キャッシュに対しても悲観的な同期モデルを提供します。 このモデルでは、アプリケーションがクライアント キャッシュから何かを取得しようとするたびに、クライアント キャッシュはまず、分散キャッシュに同じキャッシュされたアイテムの新しいバージョンがあるかどうかを確認します。 存在する場合、クライアント キャッシュは分散キャッシュから新しいバージョンをフェッチします。 分散キャッシュへのこの移動にはコストがかかりますが、それでも、分散キャッシュからキャッシュされたアイテム全体をフェッチするよりも高速です。
クライアント キャッシュをいつ使用するか?
このブログを読んだ後に頭に浮かぶ主な疑問は、クライアント キャッシュをいつ使用するのか、いつ使用しないのかということです。 そうですね、答えは非常に簡単です。 アプリケーションが書き込みよりも読み取りを多く実行する場合、特に同じ項目が何度も繰り返される場合は、クライアント キャッシュを使用します。
アプリケーションが多くの更新 (または少なくとも読み取りと同じ回数) を実行する場合は、クライアント キャッシュを使用すると更新が遅くなるため、クライアント キャッシュを使用しないでください。 これは、クライアント キャッシュと分散キャッシュという XNUMX つの異なるキャッシュを更新しているために発生します。
まとめ
そう、 NCache 分散キャッシュを使用してクライアント キャッシュを活用できます。 完全に動作する 60 日間の試用版をダウンロードしてください NCache Enterprise 自分で試してみてください。
本当に興味深いブログをお持ちですので、これからも有益な投稿を投稿してください。