のキャッシュローダーとリフレッシャー NCache

NCache は、.NET 用の非常に高速でスケーラブルなインメモリ分散キャッシュであり、アプリケーション データをキャッシュして、コストのかかるデータベースへの移動を削減します。 使用する NCache データ ストレージとデータベースに関連するパフォーマンスのボトルネックを取り除きます。

キャッシュ サイズが大きくなり、参照/ルックアップ データのキャッシュが増えるにつれて、起動時に空のキャッシュをいっぱいにする必要があるという問題に直面します。 次に、このキャッシュされたデータを最新の状態に保ち、データセット全体をキャッシュに保持するために定期的にデータを追加するという問題があります。 そして、これらすべてを行うには、カスタム アプリケーションを開発するだけでなく、それをどこかにホストし、キャッシュの起動時とスケジュールされた間隔で常に実行されるようにする必要があります。

これは余分な管理と頭痛の種です。 NCache は、強力なキャッシュ ローダー/リフレッシャー機能を介してあなたを引き継ぎます。 NCache カスタムのサーバー側コードを開発し、それを Cache Loader および Refresher に登録できます。

NCache 以下を提供します。

  1. キャッシュローダー (分散 & 並列): クラスター内のすべてのキャッシュ サーバーにデプロイされて実行されるサーバー側コードとしてキャッシュ ローダーを開発できます。 次に、キャッシュが開始されると、 NCache 各キャッシュサーバーでこのキャッシュローダーを並行して呼び出して、データベース/データソースからデータのその部分 (データセットと呼ばれる) を読み取り、キャッシュにロードします。 キャッシュ ローダーは、すべてのキャッシュ サーバーで並行して実行され、複数の並行データセットにデータをロードする作業を分散させます。
  2. キャッシュ リフレッシャー (分散 & 並列): クラスター内のすべてのキャッシュ サーバーにデプロイされて実行されるサーバー側コードとしてキャッシュ リフレッシャーを開発できます。 それで、 NCache 定期的 (スケジュール) に Cache Refresher を呼び出して、データベース/データ ソースから更新または新しいデータを取得し、キャッシュに入れます。 Cache Refresher をオンデマンドで呼び出すこともできます。 キャッシュ リフレッシャーはすべてのキャッシュ サーバーで並行して実行され、複数の並行データセットにデータをロードする作業を分散させます。
のキャッシュローダーとリフレッシャー NCache

キャッシュローダー/リフレッシャーの利点

Cache Loader / Refresher 機能を使用する利点は次のとおりです。 NCache.

  1. データセットの並列読み込み/更新: キャッシュが大きい場合は、読み込みや更新に時間がかかることがあります。 また、この目的のコードを自分で作成する場合は、XNUMX 台のコンピューターから実行する可能性が高いため、すべてのデータが順番に読み込まれます。 しかし、 NCache すべてのキャッシュ サーバーに Cache Loader / Refresher を配布して実行します。 その結果、データの読み込みは並列になり、はるかに高速になります。
  2. キャッシュローダー/リフレッシャーの高可用性: NCache すべてのキャッシュ サーバーに Cache Loader / Refresher を展開します。 これは、いずれかのキャッシュ サーバーがダウンしても、他のキャッシュ サーバーで実行されているため、読み込み/更新が停止しないことを意味します。 そして、新しいキャッシュ サーバーをクラスターに追加すると、 NCache キャッシュローダー/リフレッシャーも利用できるようにし、それによって高可用性を追加します。 これは、このコードを書いて自分で実行した場合には達成できないことです。
  3. NCache あなたのためにそれをホストします: このコードを自分で開発して実行する必要がある場合は、そのコードを実行しているサーバーがダウンしても常に実行されるようにする必要があります。 これは、キャッシュがこのコードに依存して最新かつ完全な状態を維持しているためです。 そして、これを本番環境で管理するには大変な作業です。 幸運、 NCache がこの責任を引き継ぎ、すべてのキャッシュ サーバーでキャッシュ ローダー/リフレッシャーをホストします。 NCache また、上記で説明したように、高可用性のためにこのコードが複数のサーバーで実行されるようにします。
  4. ローダー/リフレッシャーはキャッシュのすぐ近くで実行されます: あなたが知っているように、 NCache クラスター内のすべてのキャッシュ サーバーにキャッシュ ローダー/リフレッシャーをデプロイして実行します。 これは、キャッシュ ローダー/リフレッシャー コードがキャッシュ自体のすぐ近くで実行されていることを意味します。 また、これにより、大規模なデータセットの場合のデータの読み込み/更新も高速化されます。

機能のハイライト

ここでは、Read-through、Write-through、および Write-behind 機能のハイライトをいくつか示します。 NCache.

  1. サーバー側コード (.NET): .NET でキャッシュ ローダー/リフレッシャーを開発します。 Loader と Refresher 用のインターフェイスがあり、開発してからクラスター内のすべてのキャッシュ サーバーにコードをデプロイします。 NCache その後、Cache Startup またはそれ以降の Refresher でそれらを呼び出すことができます。 コードは .NET で開発され、ネイティブに呼び出されます。 NCache .NET でも開発されているためです。
  2. ローダー/リフレッシャーは別のプロセスで実行されます: NCache キャッシュデータを持つプロセスとは別のプロセスでキャッシュローダー/リフレッシャーを各キャッシュサーバーで実行します。 これは、キャッシュ ローダー/リフレッシャー コードのエラーやクラッシュの影響を受けないことを意味します。そのプロセスは、 NCache 同じキャッシュ サーバー上の管理サービス。
  3. 複数の名前付きデータセット: 複数の名前付きデータセットを定義して、データの読み込み/更新を並列データ チャンクに分割できます。 構成でデータセットに名前を付けることで、名前付きデータセットの読み込み/更新を担当するキャッシュ ローダー/リフレッシャー コードは、それがどのデータセットであるかを認識し、適切なコードを使用してそのデータのみをフェッチできます。
  4. 実行時にキャッシュ サーバーに分散されるデータセット: NCache ラウンドロビン アルゴリズムを使用して、データセットをクラスター内のすべてのキャッシュ サーバーに分散し、並行して読み込み/更新します。 クラスターには常に少なくとも 2 つのキャッシュ サーバーがあり、ほとんどの場合は 2 つ以上あるため、これにより読み込み/更新がかなり高速化されます。
  5. データセット レベルのスケジューリング (毎月、毎週、毎日の時間、毎日の間隔): NCache データセット レベルでロード/更新スケジュールを定義できるため、各データセットに独自のスケジュールを設定できます。 スケジューリングは、月単位、週単位、日単位、および日単位の間隔で行うことができます。 Daily Time は毎日指定された時刻を意味し、Daily Interval は毎日 XNUMX 日に複数回実行するが、最後の実行から特定の間隔を待った後に実行することを意味します。
  6. オンデマンドのデータセット更新: データセット レベルのスケジューリングの提供に加えて、 NCache また、特定のデータセットの更新をオンデマンドで呼び出すことができる PowerShell コマンドレットも提供します。 このように、Dataset データが変更されたと感じたが、予定された時刻が来ていない場合は、呼び出すことができます NCache リフレッシュします。 この呼び出しは、アプリケーションがオンデマンドで更新するかどうかの呼び出しを行うことができるデータベース/データ ソース内のデータの状態をよりよく理解している任意のアプリケーションに統合できます。

キャッシュ ローダー/リフレッシャー インターフェース

Cache Loader / Refresher コードの開発は非常に簡単です。 以下はそのインターフェースの例です。

キャッシュ ローダー/リフレッシャー インターフェース

public interface ICacheLoader : IDisposable {
	void Init(IDictionary<string, string> parameters, string cacheName);
	object LoadDatasetOnStartup(string dataset);
	object RefreshDataset(string dataset, object userContext);
	IDictionary<string, RefreshPreference> 
GetDatasetsToRefresh(IDictionary<string, object> userContexts);
}

お問い合わせ(英語)

電話
©著作権 Alachisoft 2002 - . All rights reserved. NCache はダイヤテック株式会社の登録商標です。