Propriétés et présentation du chargeur de cache et de l'actualisation
NCache fournit un chargeur de cache de démarrage pour précharger le cache avec les données essentielles au démarrage. Ce mécanisme est vital dans les scénarios où une application nécessite des ensembles de données spécifiques immédiatement après le début de son exécution.
Par exemple, imaginez un site de streaming vidéo avec des centaines de vidéos qui doivent être disponibles pour l'utilisateur au moment où l'utilisateur accède au site. Ici, le cache peut être préchargé avec des vidéos existantes au démarrage du cache au lieu d'ajouter manuellement les données.
Notes
Parfois, Cache Loader peut ne pas réussir à charger les données en raison d'un problème de connectivité avec la source de données principale ou d'une erreur lors de l'exécution de l'implémentation personnalisée de Cache Loader. Pour identifier une telle erreur/exception, consultez les journaux du service d'exécution.
Charger votre cache avec des données au démarrage peut être très utile. Ce faisant, vous pouvez éviter les problèmes de performances au démarrage du cache en raison d'un cache vide, ce qui entraîne des demandes de données fréquentes vers la base de données (ce qui est lent). La NCache La fonction Cache Startup Loader vous aidera à précharger votre cache avec les données de votre choix au moment du démarrage.
Malgré les avantages du préchargement des données, cela conduit à ce que les données chargées dans le cache deviennent obsolètes. L'utilisateur charge les données pertinentes au démarrage du cache et toute modification apportée à la source de données la rend obsolète. Pour éviter cette invalidation, NCache fournit une autre fonctionnalité appelée Cache Refresher. Le Cache Refresher est responsable de la synchronisation des données chargées dans le cache avec les données mises à jour dans la source de données.
Propriétés du chargeur de cache et de l'actualisation
Les NCache Cache Loader et Refresher sont des fonctionnalités essentielles pour améliorer les performances globales des applications, en particulier au démarrage du cache. Comme chaque fonctionnalité, ces fonctionnalités ont également leurs propres propriétés respectives. Nous expliquons ces propriétés ci-dessous :
NCache Service d'exécution
Au plus tôt NCache versions, le cache et Cache Loader s'exécutaient dans le même processus, ce qui surchargeait le processus de cache, en particulier au moment du chargement. Ce stress a entraîné une dégradation temporaire des performances du cache global.
Ainsi, pour les topologies OutProc, NCache a un dédié NCache Service d'exécution (anciennement connu sous le nom de Loader Service) pour gérer les tâches et charger les données de la source de données dans les caches au démarrage du cache. Ce service remplit différentes responsabilités dans les éditions .NET et Java. Dans .NET Edition, il gère Cache Loader et Refresher. Alors que, dans Java Edition, le service est responsable de la gestion de la publication du Cache Loader, du Refresher, des fournisseurs de sources de données et des compteurs JMX.
Alternativement, dans une topologie en cluster, chaque nœud dispose d'un service dédié chargé de charger les données dans son cache. Toutefois, dans la topologie InProc, la tâche s'exécute toujours dans le même processus.
Jeux de données
Pour les topologies en cluster, si les données chargées sur un seul nœud prennent beaucoup de temps, NCache permet la répartition de la charge de données entre les nœuds du cluster. Les données sont distribuées sur la base d'ensembles de données fournis par l'utilisateur pour chaque nœud. Chaque nœud a NCache Service d'exécution chargé de charger les données en fonction des ensembles de données. Fondamentalement, un ensemble de données est un moyen pour vous de regrouper des données similaires à charger ensemble.
Affectation d'ensembles de données aux serveurs de cache lors de l'exécution
Notes
NCache attribue en interne les ensembles de données aux nœuds - en veillant à ce que deux nœuds ne finissent pas par charger les mêmes données dans le cache. Cette affectation permet également de charger un énorme volume de données en moins de temps.
Le nœud coordinateur distribue les ensembles de données entre les nœuds du cluster de manière circulaire. Par conséquent, chacun des serveurs se voit attribuer un jeu de données de la liste. Lorsque l'un des nœuds termine le chargement des données sur son jeu de données, il reçoit le prochain jeu de données à charger. Essentiellement, si le nombre d'ensembles de données de distribution est supérieur au nombre de nœuds, NCache attribuera un ensemble de données à chaque nœud, et lorsqu'il n'y aura plus de nœuds disponibles, il attribuera l'ensemble de données suivant au premier nœud disponible (qui a fini de charger les données).
Supposons que l'utilisateur souhaite charger des données spécifiques de la base de données Northwind dans un cache clusterisé de 3 nœuds au démarrage, les performances de Cache Loader sont alors affectées par le nombre d'ensembles de données attribués. Nous discutons de ce comportement ci-dessous :
5 jeux de données à charger: L'utilisateur alloue 5 jeux de données (Témoignages, Commander, Produits, Employéset une Fournisseurs) au chargeur. Le nœud coordinateur attribue ensuite les ensembles de données aux nœuds de manière circulaire – Témoignages au noeud1, Mes Commandes au nœud2, et Produits au nœud3. Dès qu'un nœud a fini de charger les données, le coordinateur attribue l'ensemble de données suivant, c'est-à-dire Employés et éventuellement Fournisseurs au prochain nœud disponible.
3 jeux de données à charger: L'utilisateur attribue 3 jeux de données (Clients, Produitset une Mes Commandes) au Loader - ce qui signifie que chaque nœud est responsable de l'ensemble de données qui lui est attribué, il chargera donc les données en fonction de l'ensemble de données tout en assurant une distribution égale.
2 jeux de données à charger: L'utilisateur attribue 2 jeux de données (Clients ainsi que le Produits) au chargeur. Étant donné que le cluster est composé de trois nœuds, le troisième nœud sera inactif pendant le processus de chargement. C'est pourquoi il préfère que le nombre d'ensembles de données soit égal ou supérieur au nombre de nœuds, garantissant ainsi une utilisation maximale.
Planification des ensembles de données
Les ensembles de données doivent être planifiés pour être actualisés. Par conséquent, NCache fournit une option de planification qui décide de l'intervalle de temps après lequel il met à jour les données du cache. À ce stade, l'intervalle de rafraîchissement vérifie les ensembles de données à mettre à jour, mettant ainsi à jour/rafraîchissant les données conséquentes dans le cache. Les quatre options de planification différentes fournies avec Cache Refresher fonctionnent comme suit :
Intervalle quotidien: L'intervalle quotidien garantit qu'un ensemble de données s'actualise à un intervalle défini après le démarrage du cache. La valeur de l'intervalle est en minutes. Par exemple, 20 minutes signifie que l’ensemble de données est actualisé toutes les 20 minutes.
Heure quotidienne: L'option d'heure quotidienne garantit qu'un ensemble de données s'actualise chaque jour à une heure spécifique fournie par l'utilisateur. Contrairement aux intervalles quotidiens avec un intervalle de 60 minutes au maximum, ils sont généralement espacés de 24 heures et ne dépendent pas du démarrage du cache pour commencer. Il est généralement utilisé lorsque les ensembles de données ne sont pas mis à jour aussi fréquemment que ceux à intervalles quotidiens.
Hebdomadaire: L'option hebdomadaire garantit l'actualisation d'un ensemble de données à des jours spécifiques chaque semaine, à l'heure spécifiée par l'utilisateur. Par exemple, si vous souhaitez que vos ensembles de données chargés soient actualisés tous les lundis, jeudis et samedis à minuit précisément, vous devez définir une planification hebdomadaire des ensembles de données.
Mensuelle: L'option mensuelle garantit l'actualisation d'un ensemble de données un ou plusieurs jours spécifiés chaque mois et un ou plusieurs jours de la semaine par semaine. Par exemple, vous pouvez spécifier l'actualisation de l'ensemble de données afin que le service l'actualise tous les lundis de chaque première et dernière semaine du mois.
L'expression de planification a le format week:days:hours:minutes
pour spécifier l'expression de planification.
- Les semaines peuvent être comprises entre 1 et 4, 1 étant la première semaine du mois.
- Les jours peuvent être 1-7 montrant les jours de la semaine. Les heures et les minutes peuvent être en fonction de l'heure de la journée pour la planification. Vous pouvez spécifier plusieurs jours de la semaine en ajoutant les jours séparés par une virgule.
- Les utilisateurs peuvent sélectionner plusieurs semaines d'un mois pour la planification.
Prenons quelques exemples pour comprendre le fonctionnement de l'expression d'ordonnancement :
L'expression
1,2:2:00:00
pour la planification, il s'agit des actualisations de l'ensemble de données le 2ème jour de la première et de la deuxième semaine du mois à minuit.L'expression
1:1,2,7:15:30
pour la planification, les ensembles de données sont actualisés le premier, le deuxième et le septième jour de la première semaine du mois (lundi, mardi et dimanche) à 3h30.
Mécanisme de chargement
L'utilisateur spécifie l'implémentation des objets chargés à partir de la source de données principale. Chaque donnée individuelle existe comme un ensemble complet CacheItem
- ajouté au cache au démarrage du cache.
Tentatives de chargement du cache
Si une opération échoue lors du chargement du cache, NCache l'exécute avant de passer au suivant. Par défaut, NCache ne réessaye pas l'opération qui a échoué. Cependant, vous pouvez l'activer via le NCache Centre de gestion.
Intervalle de relance du chargeur de cache
Si l'utilisateur choisit d'activer les nouvelles tentatives pour les opérations ayant échoué, il peut également spécifier l'intervalle de temps à attendre (en secondes) avant de réessayer l'opération ayant échoué. L'intervalle est 0 par défaut. Cependant, il est configurable par l'utilisateur via le NCache Centre de gestion.
Intervalle de rafraîchissement
Pour vérifier quels ensembles de données doivent être mis à jour/actualisés, un thread s'exécute après une heure spécifique, appelée intervalle d'actualisation. Par défaut, l'intervalle d'actualisation est de 900 secondes. La valeur minimale de cet intervalle est de 1 seconde et la valeur maximale est de 3600 XNUMX secondes. Les utilisateurs peuvent configurer l'intervalle d'actualisation via le NCache Centre de gestion.
Actualisation de l'ensemble de données à la demande
L'utilisateur a également la possibilité d'actualiser manuellement ses ensembles de données via le Invoke-RefresherDataset applet de commande. Grâce à cette applet de commande, l'utilisateur peut actualiser ses ensembles de données immédiatement ou dans les prochaines 24 heures à l'aide de la RefreshPreference
option de cette applet de commande. Cette option identifie le moment où cette actualisation à la demande se produira, selon que le processus entraînera ou non une dégradation. Dans le cas contraire, l'ensemble de données sera RefreshNow
. Si c'est le cas, l'ensemble de données sera actualisé à la prochaine heure planifiée via le RefreshOnNextTimeOfDay
option.
Voir aussi
Composants de Cache Startup Loader et Refresher
Fournisseurs de sources de données (source de sauvegarde)
Optimisation NCache versions