今日のほとんどの繁栄しているeコマースビジネスは、過去のある時点でウェブサイトの反応時間が遅いことに苦しんでいます。 これは、ユーザーの好みのパラダイムシフトが原因のXNUMXつであり、オンライン購入に傾倒しています。 したがって、従来のメカニズムでは、顧客の要求の流入を維持できませんでした。
インメモリ、線形スケーラブル、分散キャッシングソリューションの出現により、 NCache、ビジネスの応答時間は大幅に改善されました。 ほとんどの繁栄している企業は、システムアーキテクチャの一部にキャッシュ層を持っています。これは、最初はビジネスに大きなブームをもたらしました。
NCache 詳細 NCache ローダードキュメント NCache ローダー管理ガイド
キャッシュローダーとは何ですか?
先に進む前に、シナリオを考えてみましょう。あなたのビジネスでは、深夜にフラッシュセール割引を導入する予定です。 そのとき、ユーザーリクエストの流入が始まります。 したがって、販売が正式に開始される前に、関連する割引の詳細をキャッシュにロードするのはどうでしょうか。 このように、ユーザーリクエストが殺到すると、それらに対処するための関連情報が提供されます。
のようなエンタープライズキャッシングソリューション NCache 特別なキャッシュ機能を組み込むことにより、この初期のパフォーマンスの遅れを克服するのに役立ちます– キャッシュスタートアップローダー キャッシュをプリロードします。 NCache を公開します Iキャッシュローダー 実装してから実装できるインターフェイス サーバーにデプロイする。 ロジックに基づいて、データは起動時にバックグラウンドプロセスとしてキャッシュにプリロードされます。
NCache Iキャッシュローダー インターフェイスは、次のXNUMXつのメソッドを公開します– その中に, 処分, LoadDatasetOnStartup ビジネス要件に基づいてカスタムコードを作成できます。
1 2 3 |
public void Init(IDictionary<string, string> parameters, string cacheName); public object LoadDatasetOnStartup(string dataset); public void Dispose(); |
キャッシュローダーの機能
豊富な機能セットが付属し、 NCache スタートアップローダー 強化されたユーザーエクスペリエンスを促進するのに役立ちます。 それは、クライアントが直面している問題を考慮しながら、それらを解決する方法を探しながら開発されています。
トピックをより深く理解するために、コアを調べてみましょう NCache 以下のローダー機能:
簡単に設定可能
ICacheLoader
インターフェイスは簡単に設定できます。 それを実装してから、を介してロジックをデプロイする必要があります NCache サーバー側のマネージャー。 キャッシュローダー機能を有効にすると、キャッシュの起動時にコードが自動的に実行されます。
論理データセット
マルチノードキャッシュクラスターで作業している場合は、データを論理セットに分割して、 NCache これらのグループをラウンドロビン方式でクラスターノードに割り当てることにより、データのロードプロセスを高速化します。
たとえば、XNUMXノードのクラスターがあり、ビジネスでXNUMXつのデータセットをロードする必要があるとします。 products
および suppliers
。 それらをインターフェイスロジックに含めて指定するだけです データセット 自分で キャッシュ構成. NCache 両方のクラスターノードで並行してデータの読み込みを開始します。
以下は、メソッドの実装例です。 LoadDatasetOnStartup:
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 27 28 29 30 31 32 33 |
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; // If dataset is "suppliers", fetch suppliers from data source to load in cache case "suppliers": // load suppliers from database and add the cache. break; default: // Invalid dataset } // User context is the time at which datasets were loaded in the cache object userContext = DateTime.Now; return userContext; } |
専用ローダーサービス
NCache 各サーバーノードで専用のローダーサービスを使用して、全体的なキャッシュ速度を向上させます。 これは重要です NCache 大きなデータセットがキャッシュにプリロードする必要がある場合、個別のローダーサービスにより、通常のキャッシュパフォーマンスが妨げられないことが保証されるためです。
NCache 詳細 ICacheLoaderインターフェースドキュメント NCache デプロイ-プロバイダーガイド
NCache キャッシュデータを再ロードするためのリフレッシャー
プリロードされたキャッシュがどれほど役立つかはわかっていますが、バックエンドデータソースで定期的に更新されると、キャッシュデータが古くなる可能性が高くなります。 このようなシナリオでは、キャッシュに入力されたデータは意味のあるままではなく、プリロードされたキャッシュの目的を完全に満たすことができません。
前のセクションのeコマースの例を続けて、最初のフェーズでは、選択したアイテムに一律25%の割引を提供していましたが、突然、割引率を50%に増やして、全体に適用することにしました。在庫–既存のキャッシュデータはどうなりますか? 現在は古くなっています。つまり、キャッシュ内の関連するデータセットを更新するメカニズムが必要です。
NCache このような状況に対応するソリューションがあります。これにより、ユーザーはソースからの最新データで定期的にキャッシュを更新できます。 あなたはどちらかによってこれを行うことができます データセットのスケジュール または リフレッシャーを呼び出す オンデマンド。
キャッシュを更新する必要がある時期を予測できる場合は、 RefreshDataset
インターフェイスの方法を選択し、時間、日、週、または月の適切な時間間隔を選択します。
以下は、メソッドの実装例です。 データセットの更新:
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 27 28 29 |
public object RefreshDataset(string dataset, object userContext) { DateTime? lastRefreshTime; switch (dataset.ToLower()) { // If dataset is "products", fetch updated products from data source case "products": lastRefreshTime = userContext as DateTime?; IList<Product> productsToRefresh = FetchUpdatedProducts(lastRefreshTime) as IList<Product>; // Insert updated products in the cache foreach (var product in productsToRefresh) { string key = $"ProductID:{product.Id}"; CacheItem cacheItem = new CacheItem(product); _cache.Insert(key, cacheItem); } break; // If dataset is "supplier", fetch updated suppliers from data source case "suppliers": lastRefreshTime = userContext as DateTime?; // fetch all suppliers updated since ‘lastRefreshTime’ and insert in cache. break; default: // Invalid dataset } // User context is the time at which datasets were refreshed userContext = DateTime.Now; return userContext; } |
一方、キャッシュデータがいつ古くなるかわからない場合は、 データセットを取得して更新する メソッド ICacheLoader
変更されたデータセットをプログラムで見つけて更新するためのインターフェース。 PowerShellを使用することもできます 呼び出す-RefresherDataset キャッシュをオンデマンドで更新するコマンドレット。
1 |
public IDictionary<string, RefreshPreference> GetDatasetsToRefresh(IDictionary<string, object> userContexts); |
まとめ
キャッシュローダーはもはや単なるオプションではありません。このペースの速い競争の激しい時代では、ビジネスの最前線が下がることは決してないため、顧客をグローバルに拡大しようとしている企業にとって必須の機能です。 したがって、次のような分散キャッシングソリューションを探している場合 NCache あなたのビジネスを成長させるのを助けるために、 連絡を取る 私たちと一緒に、私たちの技術専門家があなたを助けましょう!