分散キャッシュ環境では、アプリケーションが実行開始直後に使用できるように、特定のデータがキャッシュに存在する必要があるシナリオが考えられます。 キャッシュが開始される当初、キャッシュにはデータが含まれていないため、データを取得するために高価なデータ ソースの移動が発生し、アプリケーションのパフォーマンスに影響を与える可能性があります。 したがって、データの保存に使用されるキャッシュには、アプリケーションが使用を開始する前に、何らかの参照データがプリロードされていることが重要になります。
この目的のために、 NCache 提供 キャッシュスタートアップローダー この機能により、ユーザーは、キャッシュが起動するとすぐに、キャッシュに必要な参照データをプリロードするインターフェイスを実装できるようになります。 その結果、ユーザー アプリケーションのキャッシュ ミスがなくなり、データ ソースのトリップが減り、より高速なパフォーマンスが実現します。
キャッシュスタートアップローダーのコンポーネント
キャッシュが起動するたびに、キャッシュ スタートアップ ローダーは、ユーザーが事前に使用できるようにデータ ソースからデータを自動的に取得します。 したがって、キャッシュ ローダーの動作に進む前に、以下で説明するキャッシュ ローダーのいくつかの特性について知っておく必要があります。
- データセット: データセットは、ユーザーがさまざまなタイプのデータをグループ化して、並列処理を実現するためにさまざまな間隔またはイベントで個別にデータをロードまたは更新できるようにする方法です。
- ローダーサービス: タスクを管理し、起動時にデータ ソースからキャッシュにデータをロードします。
- キャッシュローダーの再試行: キャッシュのロード中に操作が失敗した場合、失敗した操作は、次の操作に進む前に、設定された再試行回数オプションによって再度実行できます。 NCache Webマネージャー。
NCache 詳細 キャッシュローダーとリフレッシャードキュメント NCache ドキュメント
キャッシュ起動ローダーを実装するにはどうすればよいですか?
キャッシュ スタートアップ ローダーを有効にするには、ユーザーはまず、 Iキャッシュローダー インタフェース。 NCache は、このインターフェイスと以下で説明するメソッドを使用して、キャッシュの起動時にキャッシュ内のデータ ソースからデータをロードします。
キャッシュ起動ローダーの初期化
その中に このメソッドはキャッシュの起動時に呼び出され、設定されたパラメータを渡し、ユーザーがそれを使用してキャッシュとデータ ソースを初期化できるようにします。 SQL などのデータベース接続を開いて接続を構成し、以下の .NET および Java のサンプル実装のように、指定された名前でキャッシュを初期化するだけです。
1 2 3 4 5 6 7 8 9 |
public void Init(IDictionary<string, string> parameters, string cacheName) { cache = CacheManager.GetCache(cacheName); connectionString = parameters.ContainsKey("ConnectionString") ? parameters["ConnectionString"] : null; if (connectionString != null) { connection = new SqlConnection(connectionString); } } |
1 2 3 4 5 6 7 8 |
public void init(Map<String, String> parameters, String cacheName) { cache = CacheManager.getCache(cacheName); connectionString = parameters.containsKey("ConnectionString") ? parameters.get("ConnectionString") : null; if (connectionString != null) { connection = DriverManager.getConnection(connectionString); } } |
キャッシュの起動時にデータをロードする
次の .NET および Java のメソッドの実装例 LoadDatasetOnStartup of ICacheLoader
インターフェイスはデータ ソースからデータをフェッチし、キャッシュの起動時にそれをキャッシュに追加してキャッシュをプリロードします。 キャッシュにロードされたデータに関する情報を保持するユーザー コンテキストを返します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
public object LoadDatasetOnStartup(string dataset) { // Create a list of datasets to load at cache startup IList<object> datasetToLoad; switch (dataSet.ToLower()) { // If dataset is "products", fetch products from data source to load in cache case "products": datasetToLoad = FetchProductsFromDataSource(); // Insert fetched product in the cache foreach (var product in datasetToLoad) { string key = $"ProductID:{product.Id}"; cache.Insert(key, product); } break; // You can add more cases for different datasets as per requirement and fetch them from the data source default: // Invalid dataset } // User context is the time at which datasets were loaded in the cache object userContext = DateTime.Now; return userContext; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
public Object loadDatasetsOnStartup(String dataset) { // Create a list of datasets to load at cache startup List<Object> datasetToLoad; switch (dataset.toLowerCase()) { // If dataset is "products", fetch products from data source and add in cache case "products": datasetToLoad = fetchProductsFromDataSource(); // Insert fetched product in the cache for (var product : datasetToLoad) { string key = "ProductID:" + product.productID; cache.insert(key, product); } break; // You can add more cases for different datasets as per the requirement and fetch them from data source default: // Invalid dataset } // User context is the time at which datasets were loaded in the cache Object userContext = LocalDateTime.now(); return userContext; } |
データの事前ロードが重要な作業であるのと同様に、ロードされたデータが古くなってしまう可能性が非常に高くなります。 キャッシュ内に既にロードされているデータは、データ ソースで発生した変更によって変更される可能性があり、そのためプリロードされたデータが古くなる可能性があります。 このロードされたデータを最新の状態に保つには、 NCache の機能を提供します キャッシュリフレッシャー これは、キャッシュ ローダーの実装を使用して、ロードされたデータを最新の状態に保ち、データ ソースと同期させます。
NCache 詳細 キャッシュローダーとリフレッシャーを構成する キャッシュの再確認ドキュメント
キャッシュローダーを設定します。 NCache Webマネージャ
ユーザーがキャッシュ スタートアップ ローダーを実装したら、それを次のように構成できます。 NCache Webマネージャ。 以下にその方法を示します。
結論!
あなたが見ることができるように、 NCache は、手動フォローアップの代わりにキャッシュにデータをプリロードするための強力な機能であるキャッシュ スタートアップ ローダーをユーザーに提供します。 だから、つかんでください NCache アプリケーションのパフォーマンスとスケーラビリティを高速化するための素晴らしい機能をすべて取得してください。