Cache Loader et Refresher dans NCache

NCache est un cache distribué en mémoire extrêmement rapide et évolutif pour .NET et met en cache les données d'application pour réduire les déplacements coûteux de la base de données. Utilisation NCache pour supprimer les goulots d'étranglement de performances liés à votre stockage de données et à votre base de données.

Au fur et à mesure que la taille de votre cache augmente et que vous mettez de plus en plus en cache des données de référence / de recherche, vous êtes confronté au problème de devoir remplir un cache vide au démarrage. Ensuite, il y a le problème de garder ces données mises en cache à jour et d'y ajouter régulièrement plus de données afin de conserver des ensembles de données entiers dans le cache. Et, pour faire tout cela, vous devez non seulement développer une application personnalisée, mais également l'héberger quelque part et vous assurer qu'elle s'exécute toujours au démarrage du cache et également à des intervalles planifiés.

C'est beaucoup de gestion supplémentaire et de maux de tête qui NCache prend le relais pour vous grâce à sa puissante fonctionnalité Cache Loader / Refresher. NCache vous permet de développer du code personnalisé côté serveur et de l'enregistrer pour Cache Loader et Refresher.

NCache vous fournit les éléments suivants :

  1. Chargeur de cache (distribué et parallèle) : vous pouvez développer un chargeur de cache en tant que code côté serveur qui est déployé et s'exécute sur tous les serveurs de cache du cluster. Ensuite, lorsque le cache démarre, NCache appelle ce Cache Loader sur chaque serveur de cache en parallèle pour aller lire sa partie des données (appelées jeux de données) de votre base de données/source de données et la charger dans le cache. Cache Loader s'exécute en parallèle sur tous les serveurs de cache pour répartir le travail de chargement des données dans plusieurs ensembles de données parallèles.
  2. Rafraîchisseur de cache (distribué et parallèle) : vous pouvez développer un cache Refresher en tant que code côté serveur qui est déployé et s'exécute sur tous les serveurs de cache du cluster. Alors, NCache appelle régulièrement votre Cache Refresher (planning) pour aller chercher des mises à jour ou des données fraîches de votre base de données / source de données et les mettre dans le cache. Vous pouvez également appeler Cache Refresher à la demande. Cache Refresher s'exécute en parallèle sur tous les serveurs de cache pour répartir le travail de chargement des données dans plusieurs ensembles de données parallèles.
Cache Loader et Refresher dans NCache

Avantages de Cache Loader / Refresher

Voici quelques avantages de l'utilisation de la capacité Cache Loader / Refresher dans NCache.

  1. Chargement / Actualisation parallèle des jeux de données : si votre cache est volumineux, le charger ou l'actualiser peut prendre un certain temps. Et, si vous écrivez vous-même du code à cette fin, vous l'exécuterez très probablement à partir d'un seul ordinateur et, par conséquent, il chargera toutes les données de manière séquentielle. Mais, NCache distribue et exécute Cache Loader / Refresher sur tous les serveurs de cache. Par conséquent, le chargement des données est parallèle et beaucoup plus rapide.
  2. Haute disponibilité de Cache Loader / Refresher : NCache déploie Cache Loader / Refresher sur tous les serveurs de cache. Cela signifie que si un serveur de cache tombe en panne, le chargement/rafraîchissement ne s'arrête pas car il s'exécute sur d'autres serveurs de cache. Et, lorsque vous ajoutez un nouveau serveur de cache au cluster, NCache rend également disponible Cache Loader / Refresher, ajoutant ainsi à la haute disponibilité. C'est quelque chose que vous ne pouvez pas réaliser si vous avez écrit ce code et exécuté vous-même.
  3. NCache L'héberge pour vous : si vous deviez développer et exécuter ce code vous-même, vous devriez vous assurer qu'il s'exécute toujours même si le serveur sur lequel vous exécutez ce code tombe en panne. En effet, votre cache dépend de ce code pour rester frais et complet. Et c'est beaucoup de travail pour gérer une telle chose en production. Heureusement, NCache assume cette responsabilité pour vous et héberge Cache Loader / Refresher pour vous sur tous les serveurs de cache. NCache s'assure également que ce code s'exécute sur plusieurs serveurs pour une haute disponibilité, comme expliqué ci-dessus.
  4. Le chargeur/rafraîchissement s'exécute très près du cache : comme vous le savez, NCache déploie et exécute Cache Loader / Refresher sur tous les serveurs de cache du cluster. Cela signifie que votre code de chargeur/rafraîchissement de cache s'exécute très près du cache lui-même. Et cela accélère également le chargement/rafraîchissement des données en cas de grands ensembles de données.

Points forts des fonctionnalités

Voici quelques points saillants de la capacité de lecture, d'écriture et d'écriture différée dans NCache.

  1. Code côté serveur (.NET) : vous développez votre Cache Loader / Refresher en .NET. Il existe une interface pour Loader et Refresher que vous développez, puis déployez votre code sur tous les serveurs de cache du cluster. NCache est alors en mesure de les appeler lors du démarrage du cache ou plus tard pour le rafraîchissement. Votre code est développé en .NET et est appelé nativement par NCache car il est également développé en .NET.
  2. Le chargeur/le rafraîchissement s'exécute dans un processus séparé : NCache exécute votre Cache Loader / Refresher dans un processus distinct sur chaque serveur de cache que le processus qui contient les données de cache. Cela signifie que votre cache n'est pas affecté par les erreurs ou les plantages dans votre code Cache Loader / Refresher car son processus peut facilement être redémarré par NCache Service de gestion sur le même serveur de cache.
  3. Ensembles de données nommés multiples : vous pouvez définir plusieurs ensembles de données nommés pour décomposer votre chargement/rafraîchissement de données en blocs de données parallèles. En nommant l'ensemble de données dans la configuration, votre code Cache Loader / Refresher responsable du chargement / de l'actualisation de tout ensemble de données nommé sait de quel ensemble de données il s'agit et peut ensuite utiliser le code approprié pour récupérer uniquement ces données.
  4. Ensembles de données distribués aux serveurs de cache lors de l'exécution : NCache utilise un algorithme round-robin pour distribuer les ensembles de données à tous les serveurs de cache du cluster afin de les charger/rafraîchir en parallèle. Cela accélère un peu le chargement/rafraîchissement puisque vous avez toujours au moins 2 serveurs de cache dans le cluster et probablement plus de 2.
  5. Planification au niveau de l'ensemble de données (mensuelle, hebdomadaire, quotidienne, quotidienne) : NCache vous permet de définir le calendrier de chargement / rafraîchissement au niveau du jeu de données afin que chaque jeu de données puisse avoir son propre calendrier. La programmation peut être Mensuelle, Hebdomadaire, Heure quotidienne et Intervalle quotidien. L'heure quotidienne signifie une heure précise de la journée tous les jours, tandis que l'intervalle quotidien signifie s'exécuter plusieurs fois par jour tous les jours, mais après avoir attendu un intervalle spécifique depuis la dernière exécution.
  6. Actualisation de l'ensemble de données à la demande : en plus de fournir une planification au niveau de l'ensemble de données, NCache fournit également une applet de commande PowerShell qui vous permet d'invoquer une actualisation spécifique de l'ensemble de données à la demande. De cette façon, si vous pensez que des données de l'ensemble de données ont changé mais que l'heure prévue n'est pas arrivée, vous pouvez appeler NCache pour le rafraichir. Vous pouvez intégrer cet appel dans n'importe laquelle de vos applications où vous avez une meilleure compréhension de l'état de vos données dans votre base de données/source de données. Votre application peut effectuer l'appel d'actualisation à la demande ou non.

Chargeur de cache / interface de rafraîchissement

Il est assez simple de développer du code Cache Loader / Refresher. Vous trouverez ci-dessous un exemple d'interface pour celui-ci.

Chargeur de cache / interface de rafraîchissement

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);
}
© Copyright Alachisoft 2002 - . Tous droits réservés. NCache est une marque déposée de Diyatech Corp.