Notificações de cache (cache do Windows Server AppFabric)

O Windows Server AppFabric oferece notificações de cache que permitem aos seus aplicativos receberem notificações assíncronas quando uma variedade de operações de cache ocorre no cluster de cache. As notificações de cache também fornecem invalidação automática de objetos armazenadas em cache localmente. Para obter mais informações, consulte Expiração e remoção (cache do Windows Server AppFabric).

Para receber notificações assíncronas de cache, adicione um retorno de chamada de notificação de cache ao seu aplicativo. Ao adicionar o retorno de chamada, você define os tipos de operações de cache que acionam uma notificação de cache e qual método no seu aplicativo deve ser chamado quando as operações especificadas ocorrem. Este tópico descreve o processo em detalhes.

Dica

Para usar as notificações de cache, você terá que habilitá-las em um cache nomeado com o comando New-Cache ou Set-CacheConfig do Windows PowerShell na ferramenta de administração de cache baseada no Windows PowerShell.

Acionando notificações de cache

Conforme exibido na figura a seguir, as alterações aos objetos em cache e região (conhecidos como itens dentro do cache) podem acionar notificações de cache.

Alterações que disparam notificações de cache

Essas operações de cache são definidas por membros da classe DataCacheOperations.

Operações de região

Seu aplicativo pode receber notificações de cache quando as seguintes operações de cache ocorrem em uma região:

Operações de item

Seu aplicativo pode receber notificações de cache quando as operações de cache a seguir ocorrem em um objeto em cache (conhecido como um item dentro do cache).

  • AddItem: Quando um item é adicionado ao cache.

  • ReplaceItem: Quando um item é substituído no cache.

  • RemoveItem: Quando um item é removido do cache.

Dica

Por si só, essas operações de item não dependem da ocorrência dentro de uma região ou não. Você pode optar por limitar o escopo de notificação do seu retorno de chamada para uma determinada região. Isso é discutido na seção Escopo de Notificação deste documento.

Escopo de notificação

Dependendo da atividade e necessidades do seu aplicativo, você pode não prestar atenção aos eventos de cada objeto e região em todo o cache. O AppFabric permite que você restrinja o escopo de suas notificações do nível do cache aos níveis de região e de item. Como visto no diagrama a seguir, o escopo de notificação que você seleciona ao adicionar um retorno de chamada impacta drasticamente nas notificações de cache que serão recebidas.

Escopo de Notificação de Cache

No nível do cache, seu aplicativo pode ser notificado sobre todas as operações de cache de todos os objetos e regiões no cache. No nível de região, seu aplicativo será notificado apenas sobre as operações de cache de uma única região e os objetos nela. No nível do item, seu aplicativo será notificado somente sobre as operações de cache pertencentes a um único objeto.

Para especificar o escopo de notificação desejado, escolha um desses três métodos para adicionar um retorno de chamada de notificação de cache:

  • AddCacheLevelCallback: Quando você deseja ser notificado sobre as operações de cache baseadas em região e item que ocorrem em todas as regiões e itens.

  • AddRegionLevelCallback: Quando você deseja ser notificado sobre as operações de cache baseadas em região e item que ocorrem em uma região específica.

  • AddItemLevelCallback: Quando você deseja ser notificado sobre as operações de cache baseadas em item que ocorrem em um item específico.

Pedido de notificação

O pedido de notificações recebido pelo cliente de cache é garantido no contexto de uma única região. Por exemplo, suponha que você tenha criado uma região chamada RegionA. Como todos os dados colocados em uma região de cache são limitados para a mesma região, todas as operações de cache pertinentes à RegionA (escopo de notificação no nível de região) chegam ao cliente de cache na ordem apropriada relativa um ao outro. As operações de cache baseadas em região e item que ocorreram em outros hosts de cache não são garantidas para chegar na ordem apropriada relativa às operações que ocorreram em RegionA.

Em relação ao desempenho, a ordem de notificações que envolvem mais de uma região ou objetos que não são armazenados na mesma região não pode ser garantida.

As informações de versão para eventos do item, na forma do objeto DataCacheItemVersion, são passadas para o método chamado pela notificação de cache com o parâmetro version. Este objeto DataCacheItemVersion corresponde à versão do objeto que disparou o evento de item. Usando o método CompareTo, você pode comparar versões para determinar quais operações do cache ocorrem primeiro.

Dica

As comparações de versão só são significativas ao comparar versões do mesmo item especificado com a mesma chave. Não é possível deduzir a ordem comparando versões de diferentes chaves; o método CompareTo pode retornar um resultado mas o resultado só será válido para versões da mesma chave.

Intervalo de sondagem

Quando você usa notificações de cache, seu aplicativo verifica o cluster de cache em um intervalo regular para ver se alguma nova notificação está disponível. Esse intervalo, chamado de intervalo de sondagem, é cada 300 segundos por padrão.

O intervalo de sondagem é especificado em unidades de segundos nas definições de configuração do aplicativo. Para especificar um intervalo específico, você pode usar o atributo pollInterval do elemento clientNotifications no arquivo de configuração do aplicativo. Você também pode especificar um determinado intervalo de sondagem programaticamente com a propriedade NotificationProperties do objeto DataCacheFactoryConfiguration.

Quando as notificações são perdidas

Os hosts de cache podem armazenar somente uma determinada quantidade de operações de cache na memória. É possível, dependendo da carga do sistema, que alguns clientes de cache possam não receber notificações antes de serem truncados nas filas do host de cache. Os clientes de cache também podem perder notificações quando os dados são perdidos devido a uma falha do servidor de cache enquanto o restante do cluster permanece em execução. Nesses casos, seu cliente de cache pode descobrir que perdeu algumas notificações de cache usando uma notificação de falha. Seu aplicativo pode adicionar um retorno de chamada para receber notificações de falha, usando o método AddFailureNotificationCallback. Para obter mais informações, consulte Adicionar um retorno de chamada de notificação de falha (cache do Windows Server AppFabric)

Quando o cluster de cache é perdido

Há uma distinção importante entre perda de notificações e perda do cluster de cache. Se o seu aplicativo perde uma ou mais notificações, ele poderá saber dessa perda por meio de uma notificação de falha. Se todo o cluster de cache for interrompido, reiniciado ou perdido, nenhuma notificação será acionada. Em vez disso, seu cliente de cache jogará fora as exceções na próxima vez que você tentar usar o cache se ele não puder se conectar ao cluster.

Dica

As notificações de cache reportam apenas as alterações relacionadas aos dados para regiões e itens de cache no cluster. Elas não reportam eventos do próprio cluster.

Habilitando notificações de cache

O recurso de notificações de cache é configurado no nível do cache nas definições de configuração do cluster. Como uma propriedade do cache, você pode habilitá-lo ao criar pela primeira vez o cache usando o comando New-Cache com a chave NotificationsEnabled. Por padrão, o recurso de notificações de cache é desabilitado quando você cria um novo cache. Para obter mais informações sobre edição de definições de configuração de cache, consulte Editar definições de configuração de cache com o Windows PowerShell (cache do Windows Server AppFabric).

Nenhuma definição de configuração do aplicativo é necessária para adicionar um retorno de chamada para receber notificações de cache. Você pode usar as definições de configuração do aplicativo para especificar um determinado intervalo de sondagem. Por padrão, o intervalo de sondagem é 300 segundos. Se você quiser uma duração diferente, use o elemento clientNotification no arquivo de configuração de aplicativo baseado em XML ou especifique seu intervalo desejado programaticamente com a propriedade NotificationsProperties do objeto DataCacheFactoryConfiguration.

Usando notificações de cache

Após habilitar as notificações de cache, há três tarefas relacionadas ao uso do cache de notificações: adicionar retornos de chamada de notificação de cache, adicionar um retorno de chamada de notificação de falha e remover retornos de chamada de notificação de cache. Os procedimentos de cada uma dessas tarefas são descritos em Usando notificações de cache (cache do Windows Server AppFabric).

Consulte também

Conceitos

Diagrama de arquitetura física de cache do Windows Server AppFabric
Diagrama de arquitetura lógica de cache do Windows Server AppFabric
Desenvolvendo um cliente de cache (cache do Windows Server AppFabric)

  2011-12-05