Notifications d'événements dans le cache : un aperçu
Dans un paradigme de mise en cache distribuée, votre application cliente peut avoir besoin d'être informée de la variété des opérations qui se produisent dans le cache. NCache peut générer différents types d'événements tandis que vos applications clientes peuvent s'inscrire à des événements d'intérêt pour être notifiées.
Notes
Cette fonctionnalité est uniquement disponible dans NCache Enterprise.
Voici quelques points clés liés aux événements dans le cache :
- Un événement est généré uniquement si une application cliente s'y est inscrite.
- Un événement est publié uniquement pour les clients abonnés.
- Le cache détermine le moment où un événement est déclenché et le client détermine l'action à entreprendre en réponse à un événement.
- Un client peut s'inscrire à plusieurs événements et peut également gérer plusieurs événements à partir de plusieurs caches.
Notes
Une application ne pourra pas recevoir d'événements à moins qu'elle ne s'enregistre dans le cache à l'aide de l'appel API d'enregistrement d'événement spécifique.
Importance des notifications d'événements dans le cache
De nombreuses applications ont aujourd'hui besoin de partager des données de manière asynchrone entre elles lors de l'exécution pour assurer l'intégrité des données. De plus, ils doivent mettre à jour leur état des données ou synchroniser l'instantané des données avec l'état côté serveur. Par conséquent, l'application a besoin d'un mécanisme pour surveiller l'état de ses données avec le serveur. Les notifications d'événements fournissent ce mécanisme pour notifier l'application cliente chaque fois que des données sont modifiées dans le cache.
Ainsi, les événements permettent partage de données d'exécution entre des applications distinctes ou des modules distincts d'une même application. De plus, la récupération de données événementielle prise en charge par NCache permet aux applications clientes de recevoir des données sans demande explicite d'extraction de données au serveur de cache.
Événements en NCache
Des événements peuvent être déclenchés pour une activité au niveau du cache spécifique aux opérations de données ou de gestion. Ici, nous catégorisons les événements et discutons des détails pertinents.
Événements spécifiques aux données
Comme leur nom l'indique, ces événements sont déclenchés lorsque les données du cache sont modifiées en raison de ajouter, Mise à jourou supprimez opérations. Outre ces opérations CRUD de base, des événements spécifiques aux données sont également déclenchés lorsque des données sont ajoutées, mises à jour ou supprimées du cache en raison de Chargeur/rafraîchisseur de démarrage du cache ainsi que Source de sauvegarde.
Pour enregistrer ces événements pour notification, le MessagingService.RegisterCacheNotification
méthode est utilisée. De même, les notifications spécifiques aux données peuvent être facilement désenregistrées si elles ne sont plus nécessaires, en utilisant le MessagingService.UnRegisterCacheNotification
méthode.
Vous devez spécifier le bon EventType
lors de l'inscription à des événements spécifiques aux données à l'aide de Type d'événement énumération. Les notifications suivantes peuvent être déclenchées en fonction des enregistrements EventType
:
Ajouter une notification : La notification d'ajout est déclenchée lorsque le
ItemAdded
Le type d'événement est enregistré et un nouvel élément est ajouté au cache.Avis de mise à jour : La notification de mise à jour est déclenchée lorsque le
ItemUpdated
le type d'événement est enregistré et un élément existant est mis à jour dans le cache.Supprimer la notification : La notification de suppression est déclenchée lorsque le
ItemRemoved
le type d'événement est enregistré et un élément est supprimé du cache.
Vous pouvez également contrôler les informations renvoyées lors de l'exécution d'un événement à l'aide de Filtre de données d'événement qui est discuté plus loin dans Filtres d'événements .
Les événements spécifiques aux données peuvent être classés comme suit :
Événements au niveau du cache
Événements au niveau du cache sont des événements généraux pour le cache qui sont déclenchés lors de l'exécution du Ajouter, Mises à jourou Effacer opérations sur les données du cache. Le but est d'informer différents clients de chaque opération effectuée sur le cache.
Les événements au niveau du cache peuvent dégrader les performances de votre application lorsque des notifications sont enregistrées pour toutes les opérations sur l'intégralité de l'ensemble de données de cache.
Par défaut, les événements de niveau cache sont désactivés (à l'exception de l'opération d'effacement du cache) pour toute configuration de cache et doivent être activés pour que les événements soient publiés à l'aide de la NCache Centre de gestion.
Événements au niveau de l'objet
Événements au niveau de l'objet peut être utile lorsque vous souhaitez être averti d'un ensemble limité de données plutôt que de chaque opération effectuée sur le cache. Par exemple, si le cache contient une grande quantité de données et est averti chaque fois qu'un changement se produit dans l'ensemble de données, cela entraîne une surcharge et les performances de l'application sont affectées.
Notes
Pour de meilleures performances, vous pouvez enregistrer des notifications pour l'ensemble de données qui vous intéresse uniquement.
Le cache sera responsable de la surveillance des modifications pour les clés spécifiées. Étant donné que l'ensemble de données sélectionné existe déjà dans le cache, les événements au niveau de l'élément sont reçus uniquement lors de l'opération de mise à jour ou de suppression. Les applications enregistrent des méthodes de rappel pour une clé spécifique dans le cache à l'aide d'appels API et reçoivent une notification lorsque cette clé est mise à jour ou supprimée du cache. Ces notifications sont envoyées de manière asynchrone au client afin qu'il n'y ait aucune surcharge sur les activités du client.
Notes
Étant donné que les événements au niveau de l'élément sont enregistrés pour l'ensemble de données déjà dans le cache, aucune notification d'ajout ne peut être reçue.
Événements au niveau de la direction
Événements au niveau de la direction peut s'enregistrer pour être averti lorsqu'une opération de gestion est effectuée sur le cluster de cache à l'aide de Service de notification interface.
Ces événements peuvent être utilisés pour la validation afin de voir si les opérations se poursuivent ou non sur le cache. Par exemple, le client est une application multi-thread où un thread est dédié à l'insertion d'éléments à un rythme constant. Si le cache est arrêté lors de l'insertion, le NCache le client jettera OperationFailedException
. Pour éviter que l'exception ne soit levée, le thread doit prendre les mesures appropriées lors de l'arrêt du cache. Ceci peut être simplement réalisé en s'inscrivant à un événement contre l'action d'arrêt du cache.
Cet exemple s'applique également aux notifications de suppression du cache si le thread de l'application client valide les opérations lors de son exécution pendant que le cache est vidé. Toutes les validations échoueront si l'application client ne prend pas en compte un événement d'effacement du cache.
Les notifications suivantes sont déclenchées lorsque des opérations de gestion sont effectuées sur le cache :
Notification d'effacement du cache : La notification de suppression du cache est déclenchée lorsque le cache est vidé.
Notification d'arrêt du cache : La notification d'arrêt du cache est déclenchée lorsque le cache est arrêté. Si une application continue d'effectuer des opérations lorsque le cache est arrêté sans savoir que le cache est arrêté, une exception sera levée pour les opérations effectuées.
Notification d'adhésion de membre : La notification de membre rejoint est déclenchée lorsqu'un membre rejoint le cluster. Un administrateur de cache ou un utilisateur surveillant l'état du cache pendant les opérations pourrait automatiser leurs tâches de surveillance de l'état du cluster. Ainsi, si un membre rejoint le cluster, l'événement doit être géré pour éviter toute interruption des tâches automatisées.
Notification de départ de membre : La notification de départ de membre est déclenchée lorsqu'un membre quitte le cluster.
Événements d'activité des clients
Les événements d’activité client notifient la connexion/déconnexion des clients. Chaque client connecté à un cache cluster peut s'abonner à ces événements pour être averti des événements de connexion/déconnexion des autres clients.
Vous pouvez également spécifier la période de rétention, qui est la durée après laquelle un client déconnecté est considéré comme déconnecté et son événement de déconnexion est déclenché. Si un client se reconnecte pendant la période de rétention, son événement de déconnexion n'est pas déclenché.
Ceci afin de compenser toute déconnexion accidentelle due à des réseaux bogués depuis le NCache le client se reconnecte automatiquement à ces réseaux sans perturber les opérations du client. Notez que cela ne s'applique pas aux clients qui suppriment et se réinitialisent manuellement.
Vous devez activer les notifications d'activité du client in NCache Centre de gestion Avant utilisation.
Filtres de données d'événement
NCache fournit EventDataFilter
pour contrôler la quantité d'informations renvoyées lors de l'exécution d'événements spécifiques aux données. Les types de filtres d'événements sont expliqués ci-dessous.
Le filtre de données d'événement doit être défini avec soin pour éviter une consommation inutile de bande passante réseau.
Aucun
Ce filtre renvoie uniquement les clés affectées par l'opération dans la notification d'événement. Ceci est utilisé si l'application est uniquement intéressée à savoir quelles clés ont été affectées. Par exemple, un site de commerce électronique souhaite savoir quelles clés de produit ont été ajoutées et non les valeurs elles-mêmes.
Métadonnées
Avec ce filtre, les clés concernées ainsi que leurs métadonnées sont renvoyées dans la notification d'événement. Les métadonnées renvoyées incluent les groupe, priorité de l'élément de cache, expiration, CacheItemVersionCacheItemVersion, Options de resynchronisation, CacheItemRemovedReasonet Type d'entrée. Ces informations peuvent être demandées par l'utilisateur. Par exemple, lorsqu'une application souhaite savoir quelles clés ont été supprimées du cache et à quels groupes elles appartenaient.
DonnéesAvecMétadonnées
Ce filtre renvoie les clés avec les éléments mis en cache et leurs métadonnées associées. Cela peut être utilisé dans les cas où une application doit traiter les données modifiées. Par exemple, une application bancaire peut nécessiter de savoir quelles informations client ont été modifiées. Par conséquent, il peut enregistrer des notifications pour les opérations de mise à jour d'élément avec ce filtre afin que la clé d'élément et l'élément modifié soient également renvoyés à l'utilisateur une fois l'événement déclenché.
Le DataWithMetadata
le filtre permet d'économiser un voyage lors de la récupération d'éléments à nouveau avec le Obtenez API. Cependant, ce filtre doit être utilisé lorsque cela est nécessaire, car il peut provoquer une monopolisation du réseau lorsque la quantité de données renvoyées est énorme.
En cas de déconnexion du client, les événements ne sont pas enregistrés pendant la durée de déconnexion du client.
Comportement judicieux de la topologie
Les notifications d'événement sont déclenchées en fonction de la topologie de cache utilisée. Le comportement topologique des notifications d'événements est décrit comme suit :
Topologie miroir : Dans la topologie miroir, un nœud actif du cluster est chargé de notifier l'événement au client.
Topologie répliquée : Dans la topologie répliquée, le nœud du cluster connecté au client est chargé de déclencher les notifications d'événements.
Topologie de partition-réplique : Dans la topologie Partition-Replica, les événements sont déclenchés à partir des nœuds actifs. Le nœud où résident les données basées sur des critères est responsable des notifications d'événements.
Topologie partitionnée : Dans la topologie partitionnée, les événements sont déclenchés à partir de tous les nœuds. Le nœud où résident les données basées sur des critères est responsable des notifications d'événements.
Voir aussi
.RAPPORTER: Alachisoft.NCache.Runtime.Événements espace de noms.
Java: com.alachisoft.ncache.événements espace de noms.
Node.js : EventCacheItem classe.
python: ncache.runtime.caching.events classe.