Notificaciones de caché (Almacenamiento en caché de AppFabric 1.1)
Microsoft AppFabric 1.1 para Windows Server ofrece notificaciones de caché que permitirán que las aplicaciones reciban notificaciones asincrónicas cuando se produzcan varias operaciones de caché en el clúster de caché. Las notificaciones de caché también proporcionan la invalidación automática de los objetos almacenados localmente en caché. Para obtener más información, vea Caducidad y expulsión (Almacenamiento en caché de AppFabric 1.1).
Para recibir notificaciones de caché asincrónicas, agregue una devolución de llamada de notificación de caché a la aplicación. Al agregar la devolución de la llamada, defina los tipos de operaciones de caché que desencadenarán una notificación de caché y qué método de la aplicación debe llamarse en caso de producirse las operaciones especificadas. En este tema se describe con detalle el proceso.
Nota
Para usar notificaciones de caché, deberá habilitar las notificaciones de caché en una caché con nombre con los comandos New-Cache
o Set-CacheConfig
de Windows PowerShell de la herramienta de administración de caché basada en Windows PowerShell.
Activación de notificaciones de caché
Como muestra la figura a continuación, los cambios realizado tanto en regiones como en objetos almacenados en caché (a los que se hace referencia como elementos en la caché) pueden activar notificaciones de caché.
Estas operaciones de caché las definen los miembros de la clase DataCacheOperations.
Operaciones de la región
La aplicación puede recibir notificaciones de la caché cuando se producen las siguientes operaciones en una región:
CreateRegion: cuando se crea una región en la caché.
ClearRegion: cuando se borra una región de la caché.
RemoveRegion: cuando se quita una región de la caché.
Operaciones de elemento
La aplicación puede recibir notificaciones de la caché cuando se producen las siguientes operaciones de caché en un objeto almacenado en caché (un elemento en la caché).
AddItem: cuando se agrega un elemento a la caché.
ReplaceItem: cuando se reemplaza un elemento en la caché.
RemoveItem: cuando se quita un elemento de la caché.
Nota
Por sí solas, estas operaciones de elemento no dependen de si se producen dentro de una región o no. Puede optar por limitar el ámbito de la notificación de la devolución de la llamada a una región determinada. Esto se trata en la sección Ámbito de la notificación de este documento.
Ámbito de la notificación
Según sean la actividad y las necesidades de la aplicación, quizá desee prestar atención a los eventos de cada uno de los objetos y regiones de la caché. AppFabric le permite limitar el ámbito de las notificaciones desde el nivel de la caché hacia el nivel de la región y el nivel del elemento. Como se muestra en el diagrama siguiente, el ámbito de la notificación que haya seleccionado al agregar una devolución de llamada tiene un impacto determinante en las notificaciones de caché que va a recibir.
En el nivel de la caché, la aplicación puede recibir notificaciones de todas las operaciones de la caché, de todos los objetos y regiones de la misma. En el nivel de la región, la aplicación recibirá notificaciones solamente de las operaciones de caché de una única región y de los objetos que en ella se encuentran. En el nivel del elemento, la aplicación recibirá sólo notificaciones de las operaciones de caché correspondientes a un único objeto.
Para especificar el ámbito de notificación que desea, elija uno de estos tres métodos para agregar una devolución de llamada de notificación de caché:
AddCacheLevelCallback: si desea que se le notifique de las operaciones de caché basadas en regiones y elementos que se producen en todas las regiones y los elementos.
AddRegionLevelCallback: si desea que se le notifique de las operaciones de caché basadas en regiones y elementos que se producen en una región específica.
AddItemLevelCallback: si desea que se le notifique de las operaciones de caché basadas en elementos que se producen en un elemento específico.
Orden de notificación
El orden de las notificaciones recibidas por el cliente de caché se garantiza en el contexto de una única región. Por ejemplo, supongamos que ha creado una región denominada RegionA
. Puesto que todos los datos de una región de caché se limitan a la misma región, todas las operaciones de caché pertenecientes a la RegionA
(ámbito de notificación del nivel de la región) llegan al cliente de caché en el orden adecuado, unas en relación a las otras. En el caso de operaciones de caché basadas en elementos y regiones que se producen en otros hosts de caché no se garantiza que lleguen en el orden adecuado en relación con las operaciones que se han producido en la RegionA
.
Para no provocar perjuicios en el rendimiento, no se puede garantizar el orden de las notificaciones en las que haya implicados más de una región o distintos objetos que no están almacenados en la misma región.
La información de versión de los eventos de elementos, en forma de objeto DataCacheItemVersion, se pasa al método invocado por la notificación de caché con el parámetro version
. Este objeto DataCacheItemVersion corresponde a la versión del objeto que desencadenó el evento de elemento. Con el método CompareTo, puede comparar versiones para determinar qué operaciones de caché deben ir en primer lugar.
Nota
Las comparaciones de versión sólo son significativas si se comparan versiones del mismo elemento especificadas con la misma clave. No es posible deducir el orden comparando versiones de distintas claves; el método CompareTo puede devolver un resultado, pero este sólo es válido para las versiones con la misma clave.
Intervalo de sondeo
Si usa notificaciones de caché, la aplicación comprueba el clúster de caché a intervalos regulares para detectar si hay nuevas notificaciones disponibles. Este intervalo, denominado intervalo de sondeo, se produce cada 300 segundos de forma predeterminada.
El intervalo de sondeo se especifica en unidades de segundos en las opciones de configuración de la aplicación. Para especificar un intervalo específico, puede usar el atributo pollInterval
del elemento clientNotifications
en el archivo de configuración de la aplicación. También puede especificar un intervalo de sondeo específico mediante programación con la propiedad NotificationProperties
del objeto DataCacheFactoryConfiguration.
Cuando se pierden las notificaciones
Los hosts de caché pueden contener sólo una determinada cantidad de operaciones de caché en memoria. Es posible, en función de la carga del sistema, algunos clientes de caché no reciban notificaciones antes de estar truncados en las colas de host de caché. Los clientes de caché también pueden perder algunas notificaciones si los datos se pierden debido a un error en el servidor de caché, mientras el resto del clúster sigue en ejecución. En estos casos, el cliente de caché puede descubrir que ha perdido algunas notificaciones mediante una notificación de error. La aplicación puede agregar una devolución de llamada al recibir notificaciones de error mediante el método AddFailureNotificationCallback. Para obtener más información, consulte Agregar una devolución de llamada de notificación de error
Cuando se pierde el clúster de caché
Hay una distinción importante entre la pérdida de notificaciones y la pérdida del clúster de caché. Si la aplicación pierde una o más notificaciones, puede resultar obvio que la pérdida está causada por una notificación de error. Si todo el clúster de la caché se detiene, reinicia o se pierde, no se desencadenará ninguna notificación. En su lugar, el cliente de caché lanzará excepciones la próxima vez que intente usar la caché si no consigue conectarse con el clúster.
Nota
Las notificaciones de caché solamente informan de cambios relacionados con los datos de las regiones y los elementos de caché en el clúster. No informan de eventos del mismo clúster.
Habilitación de las notificaciones de caché
La característica de notificaciones de caché está configurada en el nivel de la caché en las opciones de configuración del clúster. Como propiedad de la caché, puede habilitarse en la creación inicial de la caché con el comando New-Cache
con el cambio NotificationsEnabled
. De forma predeterminada, la característica de notificaciones de caché está deshabilitada cuando crea una nueva memoria caché. Para obtener más información acerca de la edición de las opciones de configuración de la memoria caché, vea Edición de valores de configuración de caché con Windows PowerShell.
No se necesita ninguna opción de configuración de la aplicación para agregar una devolución de llamada para la recepción de notificaciones de caché. Puede usar las opciones de configuración de la aplicación para especificar un intervalo de sondeo específico. De forma predeterminada, el intervalo de sondeo es de 300 segundos. Si desea cambiar esta duración, use el elemento clientNotification
del archivo de configuración de aplicación basado en XML o especifique el intervalo deseado por medio de programación con la propiedad NotificationsProperties
del objeto DataCacheFactoryConfiguration.
Uso de notificaciones de caché
Una vez habilitadas las notificaciones de caché, hay tres tareas relacionadas con el uso de notificaciones de caché: la adición de devoluciones de llamada de notificación de caché, la adición de una devolución de llamada de una notificación de error y la eliminación de devoluciones de llamadas de notificaciones de caché. Los procedimientos para cada una de estas tareas se describen en Uso de notificaciones de caché.
Vea también
Conceptos
Diagrama de la arquitectura física de AppFabric (Almacenamiento en caché de AppFabric 1.1)
Diagrama de la arquitectura lógica de almacenamiento en caché de AppFabric (Almacenamiento en caché de AppFabric 1.1)
Desarrollar un cliente de caché
2012-03-05