キャッシュ ローダーおよびリフレッシュャーのプロパティと概要
NCache 起動時に重要なデータをキャッシュにプリロードする起動キャッシュ ローダーを提供します。このメカニズムは、アプリケーションが実行開始直後に特定のデータセットを必要とするシナリオでは不可欠です。
たとえば、ユーザーがサイトにアクセスした瞬間にユーザーが利用できる必要がある何百ものビデオを含むビデオ ストリーミング サイトを想像してみてください。 ここでは、データを手動で追加する代わりに、キャッシュの起動時に既存のビデオをキャッシュに事前に読み込むことができます。
Note
場合によっては、プライマリ データ ソースとの接続の問題や、カスタム キャッシュ ローダー実装の実行中のエラーが原因で、キャッシュ ローダーがデータを正常にロードできないことがあります。このようなエラー/例外を特定するには、実行サービスのログを確認してください。
起動時にキャッシュにデータをロードすると、非常に便利です。 そうすることで、キャッシュが空であることによるキャッシュの起動時のパフォーマンスの問題を回避できます。その結果、データベースへの頻繁なデータ要求 (低速) が発生します。 の NCache キャッシュスタートアップローダー機能は、起動時に選択したデータをキャッシュにプリロードするのに役立ちます。
データを事前にロードすることには利点がありますが、キャッシュにロードされたデータが古くなることにつながります。 ユーザーはキャッシュの起動時に関連データをロードし、データ ソースで発生した変更はそれを無効にします。 この無効化を防ぐには、 NCache は、キャッシュ リフレッシャーと呼ばれる別の機能を提供します。キャッシュ リフレッシャーは、キャッシュにロードされたデータとデータ ソースの更新されたデータを同期する役割を果たします。
キャッシュローダーとリフレッシャーのプロパティ
NCache キャッシュ ローダーとリフレッシュは、アプリケーション全体のパフォーマンス (特にキャッシュ起動時) を向上させるために不可欠な機能です。 すべての機能と同様に、これらの機能にもそれぞれ独自のプロパティがあります。 これらのプロパティについては以下で説明します。
NCache 実行サービス
以前に NCache 以前のバージョンでは、キャッシュとキャッシュ ローダーが同じプロセスで実行されていたため、特にロード時にキャッシュ プロセスに過負荷がかかりました。 このストレスにより、キャッシュ全体のパフォーマンスが一時的に低下しました。
したがって、OutProc トポロジの場合、 NCache 専用の NCache タスクを管理し、キャッシュの起動時にデータ ソースからキャッシュにデータをロードするための実行サービス (以前はローダー サービスとして知られていました)。このサービスは、.NET エディションと Java エディションで異なる役割を果たします。 .NET Edition では、キャッシュ ローダーとリフレッシャーを管理します。一方、Java Edition では、サービスはキャッシュ ローダー、リフレッシャー、データ ソース プロバイダー、および JMX カウンターの公開を管理します。
あるいは、クラスター化トポロジでは、各ノードに、キャッシュへのデータのロードを担当する専用のサービスがあります。ただし、InProc トポロジ内では、タスクは引き続き同じプロセスで実行されます。
データセット
クラスタ化されたトポロジの場合、単一ノードにロードされるデータにかなりの時間がかかる場合、 NCache クラスターノード間でデータ負荷を分散できます。データは、単一ノードごとにユーザーが提供したデータセットに基づいて分散されます。各ノードには、 NCache データセットに従ってデータをロードするために割り当てられた実行サービス。基本的に、データセットは、同様のデータをグループ化して一緒に読み込むための方法です。
実行時のキャッシュ サーバーへのデータセットの割り当て
Note
NCache 内部的にデータセットをノードに割り当てます - XNUMX つのノードが同じデータをキャッシュにロードしないようにします。 この割り当てにより、大量のデータを短時間でロードすることもできます。
コーディネーター ノードは、ラウンドロビン方式でクラスター ノード間でデータセットを配布します。 したがって、各サーバーにはリストからデータセットが割り当てられます。 ノードの XNUMX つがそのデータセットに対するデータの読み込みを完了すると、次に読み込むデータセットを受け取ります。 基本的に配信データセットの数がノード数より多い場合、 NCache は、各ノードに XNUMX つのデータセットを割り当て、利用可能なノードがなくなると、次のデータセットを最初に利用可能なノード (データの読み込みが完了したノード) に割り当てます。
ユーザーが起動時に Northwind データベースから 3 ノードのクラスター化キャッシュに特定のデータをロードしたいとします。その場合、キャッシュ ローダーのパフォーマンスは、割り当てられたデータセットの数によって影響を受けます。 この動作については以下で説明します。
ロードする5つのデータセット:ユーザーは5つのデータセットを割り当てます(顧客, 注文, 製品, 職員, サプライヤー) をローダーに送信します。 次に、コーディネーター ノードがラウンドロビン方式でデータセットをノードに割り当てます。 顧客 node1へ 注文 ノード2へ、そして 製品 ノード3に。 ノードがデータのロードを完了するとすぐに、コーディネーターは次のデータセットを割り当てます。 職員 そして結局 サプライヤー 次に利用可能なノードに移動します。
ロードする3つのデータセット:ユーザーは3つのデータセットを割り当てます(Customers, 製品, 注文) をローダーに送信します。つまり、各ノードはそれに割り当てられたデータセットを担当するため、均等な分散を確保しながらデータセットに従ってデータをロードします。
ロードする2つのデータセット:ユーザーは2つのデータセットを割り当てます(Customers および 製品) をローダーに送信します。 クラスターは XNUMX つのノードで構成されているため、ロード プロセス中は XNUMX 番目のノードがアイドル状態になります。 そのため、データセットの数はノードの数以上であることが望まれ、最大限の使用率が保証されます。
データセットのスケジューリング
データセットを更新するには、スケジュールを設定する必要があります。 したがって、 NCache は、キャッシュ データを更新するまでの時間間隔を決定するスケジュール オプションを提供します。 このとき、リフレッシュ間隔によって更新されるデータセットがチェックされ、結果としてキャッシュ内のデータが更新/リフレッシュされます。 Cache Refresher で提供される XNUMX つの異なるスケジュール オプションは次のように機能します。
毎日の間隔: 毎日の間隔により、キャッシュの開始後、設定された間隔でデータセットが更新されます。 間隔の値は分単位です。 たとえば、20 分は、データセットが 20 分ごとに更新されることを意味します。
毎日の時間: 毎日の時間オプションを使用すると、ユーザーが指定した特定の時間にデータセットが毎日更新されます。 最大 60 分の間隔がある毎日の間隔とは異なり、通常は 24 時間間隔であり、最初はキャッシュの開始に依存しません。 これは通常、データセットが毎日の間隔で更新されるほど頻繁ではない場合に使用されます。
毎週: 毎週オプションを使用すると、毎週特定の曜日、ユーザーが指定した時間にデータセットが更新されます。 たとえば、ロードされたデータセットを毎週月曜、木曜、土曜の午前 XNUMX 時ちょうどに更新したい場合は、毎週のデータセットのスケジュールを設定する必要があります。
月単位: 毎月のオプションでは、データセットが毎月 XNUMX つまたは複数の指定日と、XNUMX 週間に XNUMX つまたは複数の平日に更新されます。 たとえば、サービスが月の最初と最後の週の毎週月曜日にデータセットを更新するように、データセットの更新を指定できます。
スケジュール式の形式は week:days:hours:minutes
スケジューリング式を指定します。
- 週は 1 ~ 4 で、1 は月の最初の週です。
- 日は、曜日を示す1〜7にすることができます。 時間と分は、スケジュールの時刻に応じて決めることができます。 曜日をコンマで区切って追加することにより、複数の曜日を指定できます。
- ユーザーは、スケジュールのために月から複数の週を選択できます。
スケジューリング式がどのように機能するかを理解するために、いくつかの例を見てみましょう。
表現
1,2:2:00:00
スケジュールの場合は、月の第 2 週と第 XNUMX 週の XNUMX 日午前 XNUMX 時にデータセットが更新されることを指します。表現
1:1,2,7:15:30
ショーのスケジュールの場合、データセットは月の第 3 週 (月曜、火曜、日曜) の 30 日、XNUMX 日、XNUMX 日の午後 XNUMX 時 XNUMX 分に更新されます。
ローディングメカニズム
ユーザーは、マスター データ ソースからロードするオブジェクトの実装を指定します。 個々のデータはすべて完全なものとして存在します。 CacheItem
- キャッシュの起動時にキャッシュに追加されます。
キャッシュローダーの再試行
キャッシュのロード中に操作が失敗した場合、 NCache 次に進む前にそれを実行します。 デフォルトでは、 NCache 失敗した操作を再試行しません。 ただし、これを有効にするには、 NCache 管理センター.
キャッシュローダーの再試行間隔
ユーザーが失敗した操作の再試行を有効にすることを選択した場合、ユーザーは、失敗した操作を再試行するまでの待機時間 (秒単位) を指定することもできます。 デフォルトでは、間隔は 0 です。 ただし、ユーザーは NCache 管理センター.
更新間隔
どのデータセットを更新/リフレッシュする必要があるかを確認するために、リフレッシュ間隔と呼ばれる特定の時間の後にスレッドが実行されます。 デフォルトでは、更新間隔は 900 秒です。 この間隔の最小値は 1 秒、最大値は 3600 秒です。 ユーザーは、更新間隔を設定できます。 NCache 管理センター.
オンデマンドのデータセット更新
ユーザーは、データセットを手動で更新することもできます。 呼び出す-RefresherDataset コマンドレット。 このコマンドレットを使用すると、ユーザーはデータセットをすぐに更新することも、24時間以内に更新することもできます。 RefreshPreference
このコマンドレットのオプション。 このオプションは、プロセスが機能低下を引き起こすかどうかに基づいて、このオンデマンド更新がいつ行われるかを識別します。 そうでない場合、データセットは RefreshNow
. その場合、データセットは次のスケジュールされた時刻に更新されます。 RefreshOnNextTimeOfDay
オプションを選択します。
も参照してください
キャッシュスタートアップローダーとリフレッシャーのコンポーネント
データソースプロバイダー(バッキングソース)
アップグレード NCache バージョン