La plupart des entreprises de commerce électronique florissantes d'aujourd'hui ont souffert d'un temps de réaction lent du site Web à un moment donné dans le passé. Cela est en partie dû à un changement de paradigme dans les préférences des utilisateurs – plus enclins à l'achat en ligne. Par conséquent, les mécanismes traditionnels n'ont pas réussi à soutenir l'afflux de demandes des clients.
Avec l'avènement des solutions de mise en cache distribuées en mémoire, linéairement évolutives, telles que NCache, il y a eu des améliorations significatives dans les temps de réponse des entreprises. La plupart des entreprises prospères ont une couche de mise en cache dans leur architecture système, ce qui a initialement donné un essor substantiel aux entreprises.
NCache Détails NCache Documents du chargeur NCache Guide d'administration du chargeur
Qu'est-ce qu'un chargeur de cache ?
Avant de poursuivre, considérons un scénario : votre entreprise prévoit d'introduire une remise sur la vente flash à minuit. C'est alors que l'afflux de demandes des utilisateurs commencera. Alors, que diriez-vous de charger votre cache avec les détails de la remise pertinente avant le début officiel de la vente. De cette façon, une fois que vous serez bombardé de demandes d'utilisateurs, vous disposerez des informations pertinentes pour les traiter.
Solutions de mise en cache d'entreprise telles que NCache aider à surmonter ce retard de performance initial en incorporant une fonction spéciale de mise en cache - chargeur de démarrage de cache pour précharger votre cache. NCache expose un ICacheLoader interface que vous pouvez implémenter, puis déployer sur le serveur. En fonction de votre logique, les données sont ensuite préchargées dans le cache en tant que processus d'arrière-plan, au démarrage.
La NCache ICacheLoader l'interface expose les trois méthodes suivantes - Init, disposeret LoadDatasetOnStartup que vous pouvez personnaliser en fonction des besoins de votre entreprise :
1 2 3 |
public void Init(IDictionary<string, string> parameters, string cacheName); public object LoadDatasetOnStartup(string dataset); public void Dispose(); |
Fonctionnalités du chargeur de cache
Doté d'un riche ensemble de fonctionnalités, le NCache chargeur de démarrage aide à promouvoir une expérience utilisateur améliorée. Il est développé en tenant compte des problèmes rencontrés par les clients tout en cherchant des moyens de les résoudre.
Pour vous aider à mieux comprendre le sujet, examinons le cœur NCache caractéristiques du chargeur ci-dessous :
Facilement configurable
La ICacheLoader
l'interface est facile à configurer. Il vous suffit de l'implémenter puis de déployer votre logique via le NCache Gestionnaire côté serveur. En activant la fonction de chargeur de cache, votre code est automatiquement exécuté au démarrage du cache.
Ensembles de données logiques
Si vous travaillez sur un cluster de cache à plusieurs nœuds, vous pouvez diviser vos données en ensembles logiques et NCache accélère le processus de chargement des données en affectant ces groupes aux nœuds du cluster de manière circulaire.
Supposons que vous disposiez d'un cluster à deux nœuds et que votre entreprise vous oblige à charger deux ensembles de données : products
ainsi que suppliers
. Incluez-les simplement dans votre logique d'interface et spécifiez-les ensembles de données dans votre configuration du cache. NCache commencera le chargement des données sur les deux nœuds du cluster en parallèle.
Ci-dessous un exemple d'implémentation de la méthode 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; } |
Un service chargeur dédié
NCache utilise un service de chargeur dédié sur chacun des nœuds de serveur pour aider à améliorer la vitesse globale du cache. C'est une critique NCache car si un ensemble de données volumineux doit être préchargé dans le cache, le service de chargeur séparé garantit que cela n'entrave pas les performances normales du cache.
NCache Détails Documentation de l'interface ICacheLoader NCache Guide des fournisseurs de déploiement
Utilisez NCache Rafraîchissement pour recharger les données du cache
Bien que nous sachions à quel point un cache préchargé peut être utile, il y a un risque important que les données du cache deviennent obsolètes s'il y a des mises à jour périodiques au niveau de la source de données principale. Dans de tels scénarios, les données remplies dans le cache ne restent pas significatives - ne remplissant pas complètement l'objectif d'un cache préchargé.
Poursuivant avec l'exemple de commerce électronique de la section précédente, disons que dans la première phase, vous proposiez une remise forfaitaire de 25 % sur des articles sélectionnés, mais que vous décidez soudainement d'augmenter le pourcentage de remise à 50 % et de l'appliquer à l'ensemble stock - qu'advient-il des données de cache existantes ? Il est désormais obsolète, ce qui signifie que vous avez besoin d'un mécanisme pour actualiser l'ensemble de données pertinent dans le cache.
NCache a une solution pour de telles situations - Il permet à ses utilisateurs d'actualiser périodiquement le cache avec les dernières données de la source. Vous pouvez le faire soit planifier vos ensembles de données ou invoquer le rappel à la demande.
Si vous pouvez prédire quand votre cache devra être actualisé, vous pouvez implémenter le RefreshDataset
méthode de l'interface et choisissez un intervalle de temps approprié qui peut être des heures, des jours, des semaines ou des mois.
Ci-dessous un exemple d'implémentation de la méthode Actualiser l'ensemble de données:
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; } |
Si, d'autre part, vous ne savez pas quand vos données de cache seront obsolètes, vous pouvez implémenter le GetDatasetsToRefresh méthode dans le ICacheLoader
interface pour rechercher par programmation les ensembles de données qui ont changé et les actualiser. Vous pouvez également utiliser le PowerShell Invoke-RefresherDataset applet de commande pour actualiser le cache à la demande.
1 |
public IDictionary<string, RefreshPreference> GetDatasetsToRefresh(IDictionary<string, object> userContexts); |
Conclusion
Un chargeur de cache n'est plus seulement une option - c'est une fonctionnalité indispensable pour les entreprises qui cherchent à élargir leur clientèle à l'échelle mondiale, car dans cette ère de concurrence rapide, la face avant de votre entreprise ne peut jamais tomber en panne. Donc, si vous recherchez une solution de mise en cache distribuée comme NCache pour vous aider à développer votre entreprise, entrez en contact avec nous et laissez nos experts techniques vous aider !