Partager via


Notifications dans Azure In-Role Cache

Important

Microsoft recommande tous les nouveaux développements à l’aide du Cache Redis Azure. Pour obtenir de la documentation et des conseils actuels sur le choix d’une offre Azure Cache, consultez Quelle offre Azure Cache est adaptée à moi ?

Azure fournit des notifications de cache qui permettent aux applications de recevoir des notifications asynchrones lorsque diverses opérations de cache surviennent sur le cluster de cache. Elles fournissent également l'invalidation automatique des objets mis en cache localement.

Pour recevoir des notifications de cache asynchrones, ajoutez un rappel de notification de cache dans votre application. Lorsque vous ajoutez un rappel, vous définissez les types d'opérations de cache qui déclenchent une notification de cache, ainsi que la méthode de votre application qui doit être appelée lorsque des opérations spécifiques surviennent. Un cache nommé doit accepter et activer les notifications de cache.

Déclenchement des notifications de cache

Ces opérations de cache sont définies par les membres de la classe DataCacheOperations .

Opérations de région

Votre application peut recevoir des notifications de cache lorsque les opérations de cache suivantes surviennent sur une région :

  • CreateRegion : lorsqu’une région est créée dans le cache.

  • ClearRegion : lorsqu’une région est effacée dans le cache.

  • RemoveRegion : lorsqu’une région est supprimée du cache.

Opérations d'élément

Votre application peut recevoir des notifications de cache lorsque les opérations de cache suivantes surviennent sur un objet mis en cache (ou élément du cache) :

  • AddItem : lorsqu’un élément est ajouté au cache.

  • ReplaceItem : lorsqu’un élément est remplacé dans le cache.

  • RemoveItem : lorsqu’un élément est supprimé du cache.

Notes

À elles seules, ces opérations d'élément ne dépendent pas du fait qu'elles surviennent dans une région ou non. Vous pouvez choisir de limiter l'étendue de notification de votre rappel à une région spécifique. Ce sujet est abordé dans la section « Étendue de notification » du présent document.

Étendue de notification

En fonction de l'activité et des besoins de l'application, vous ne vous intéresserez peut-être pas aux événements issus de chaque objet et de chaque région du cache entier. Vous pouvez réduire l'étendue de vos notifications du niveau du cache au niveau de la région et de l'élément. L'étendue de notification que vous sélectionnez lors de l'ajout d'un rappel a des répercussions significatives sur les notifications de cache que vous recevez.

Au niveau du cache, votre application peut être notifiée de toutes les opérations de cache issues de l'ensemble des objets et régions du cache. Au niveau de la région, votre application est notifiée uniquement des opérations de cache issues d'une région spécifique et des objets associés. Au niveau de l'élément, votre application est notifiée uniquement des opérations de cache appartenant à un seul objet.

Pour spécifier l'étendue de notification souhaitée, choisissez l'une des trois méthodes d'ajout d'un rappel de notification de cache :

  • AddCacheLevelCallback : lorsque vous souhaitez être averti des opérations de cache basées sur des régions et des éléments qui se produisent sur toutes les régions et éléments.

  • AddRegionLevelCallback : lorsque vous souhaitez être averti des opérations de cache basées sur des régions et des éléments qui se produisent sur une région spécifique.

  • AddItemLevelCallback : lorsque vous souhaitez être averti des opérations de cache basées sur des éléments qui se produisent sur un élément spécifique.

Ordre des notifications

L'ordre des notifications reçues par le client de cache est assuré dans le contexte d'une seule région. Par exemple, supposons que vous ayez créé une région nommée RegionA. Dans la mesure où toutes les données d'une zone de cache sont limitées à la même région, toutes les opérations de cache appartenant à la RegionA (étendue de notification au niveau de la région) arrivent dans le client de cache dans l'ordre adéquat les unes par rapport aux autres. Les opérations de cache basées sur une région et un élément qui surviennent sur d'autres hôtes de cache ne sont pas assurées d'arriver dans l'ordre approprié par rapport aux opérations qui se sont produites dans la RegionA.

Pour des raisons de performances, l'ordre des notifications impliquant plusieurs régions ou objets non stockés dans la même région ne peut pas être assuré.

Les informations de version pour les événements d’élément, sous la forme de l’objet DataCacheItemVersion , sont transmises à la méthode appelée par la notification de cache avec le version paramètre. Cet objet DataCacheItemVersion correspond à la version de l’objet qui a déclenché l’événement d’élément. À l’aide de la méthode CompareTo , vous pouvez comparer les versions pour déterminer les opérations de cache qui ont été effectuées en premier.

Notes

Les comparaisons de versions n'ont de sens que lorsqu'elles comparent des versions du même élément spécifiées avec la même clé. Il n’est pas possible de déduire l’ordre en comparant les versions de différentes clés; La méthode CompareTo peut retourner un résultat, mais le résultat n’est valide que pour les versions de la même clé.

Fréquence d'interrogation

Lorsque vous utilisez les notifications de cache, votre application interroge régulièrement le cluster de cache pour vérifier si de nouvelles notifications sont disponibles. Par défaut, cette fréquence d'interrogation est de 300 secondes. Les applications qui écrivent fréquemment peuvent définir cette fréquence sur une valeur plus petite, mais pour les caches qui ne changent pas souvent, un intervalle plus large peut s'avérer préférable. La fréquence par défaut de 300 secondes est adaptée à la plupart des caches généraux.

Elle est spécifiée en unités de secondes dans les paramètres de configuration de l'application. Pour indiquer une fréquence spécifique, vous pouvez utiliser l'attribut pollInterval de l'élément clientNotifications dans le fichier de configuration de l'application. Vous pouvez également spécifier un intervalle d’interrogation spécifique par programmation avec la NotificationProperties propriété de l’objet DataCacheFactoryConfiguration .

Perte de notifications

La mémoire des hôtes de cache ne peut contenir qu'une certaine quantité d'opérations de cache. Il est possible que certains clients de cache ne reçoivent pas de notifications tant qu'ils n'ont pas été tronqués dans les files d'attente des hôtes de cache. Cette absence de notification peut également se produire en cas de perte de données due à une défaillance du serveur de cache alors que le reste du cluster est toujours en cours d'exécution. Dans ce cas, votre client de cache peut découvrir qu'il n'a pas reçu certaines notifications de cache par le biais d'une notification d'échec. Votre application peut ajouter un rappel pour recevoir des notifications d’échec à l’aide de la méthode AddFailureNotificationCallback . Pour plus d’informations, consultez Guide pratique pour ajouter un rappel de notification d’échec

Perte du cluster de cache

Il est important d'opérer une distinction entre la perte de notifications et la perte du cluster de cache. Si votre application perd une ou plusieurs notifications, elle peut en être avertie par une notification d'échec. Si le cluster de cache entier est arrêté, redémarré ou perdu, aucune notification n'est déclenchée. Au lieu de cela, le client de cache lèvera des exceptions lors de la prochaine tentative d'utilisation du cache si celui-ci n'est pas en mesure de se connecter au cluster. Les événements liés à des clusters de cache, tels que la création ou la suppression du cache, ne sont pas signalés par des notifications. Si le cache est supprimé du serveur après l'enregistrement des notifications, l'envoi de notifications est tout simplement interrompu. Il est impossible de différencier un cache inexistant et des opérations non exécutées sur un cache.

Notes

Les notifications de cache signalent uniquement les modifications de données apportées aux régions et éléments de cache au sein du cluster, et non les événements du cluster lui-même.

Activation des notifications de cache

La fonctionnalité de notification de cache est configurée au niveau du cache dans les paramètres de configuration du cluster. En tant que propriété du cache, vous pouvez l'activer lorsque vous créez le cache pour la première fois. Par défaut, elle est désactivée lorsque vous créez un cache.

Aucun paramètre de configuration de l'application n'est nécessaire pour ajouter un rappel pour la réception des notifications de cache. Vous pouvez utiliser les paramètres de configuration de l'application pour spécifier une fréquence d'interrogation spécifique. Par défaut, celle-ci est de 300 secondes. Si vous souhaitez une durée différente, utilisez l’élément clientNotification dans le fichier de configuration d’application XML ou spécifiez votre intervalle souhaité par programmation avec la NotificationsProperties propriété de l’objet DataCacheFactoryConfiguration .

Utilisation des notifications de cache

Une fois les notifications de cache activées, il existe trois tâches liées à l’utilisation des notifications de cache : ajout de rappels de notification de cache, ajout d’un rappel de notification d’échec et suppression des rappels de notification de cache. Les procédures correspondantes sont décrites dans le reste de cette documentation.

Voir aussi

Concepts

Fonctionnalités de In-Role Cache dans Azure Cache