Notificações de eventos em cache: uma visão geral
Em um paradigma de cache distribuído, seu aplicativo cliente pode precisar ser notificado sobre a variedade de operações que ocorrem no cache. NCache pode gerar diferentes tipos de eventos enquanto seus aplicativos cliente podem se registrar para eventos de interesse para serem notificados.
Note
Este recurso está disponível apenas em NCache Enterprise.
Aqui estão alguns pontos-chave relacionados aos eventos no cache:
- Um evento é gerado somente se um aplicativo cliente estiver registrado para ele.
- Um evento é publicado apenas para clientes inscritos.
- O cache determina quando um evento é gerado e o cliente determina a ação a ser tomada em resposta a um evento.
- Um cliente pode se registrar para vários eventos e também pode manipular vários eventos de vários caches.
Note
Um aplicativo não poderá receber eventos, a menos que se registre no cache usando a chamada de API de registro de evento específica.
Importância das notificações de eventos no cache
Muitos aplicativos hoje precisam compartilhar dados de forma assíncrona entre si em tempo de execução para fornecer integridade de dados. Além disso, eles precisam atualizar seu estado de dados ou sincronizar o instantâneo de dados com o estado do lado do servidor. Portanto, o aplicativo precisa de um mecanismo para monitorar seu estado de dados com o servidor. As notificações de eventos fornecem esse mecanismo para notificar o aplicativo cliente sempre que os dados são alterados no cache.
Assim, os eventos permitem compartilhamento de dados em tempo de execução entre aplicativos separados ou módulos separados do mesmo aplicativo. Além disso, a busca de dados orientada a eventos suportada por NCache permite que aplicativos cliente recebam dados sem qualquer solicitação explícita de busca de dados para o servidor de cache.
Eventos em NCache
Os eventos podem ser gerados para atividades em nível de cache específicas para dados ou operações de gerenciamento. Aqui, categorizamos eventos e discutimos detalhes relevantes.
Eventos específicos de dados
Como o nome indica, esses eventos são acionados quando os dados no cache são modificados devido a adicionar, atualizarou remover operações. Além dessas operações CRUD básicas, eventos específicos de dados também são acionados quando os dados são adicionados, atualizados ou removidos do cache devido a Carregador/Atualizador de Inicialização do Cache e Fonte de apoio.
Para registrar esses eventos para notificação, o MessagingService.RegisterCacheNotification
método é usado. Da mesma forma, o registro de notificações específicas de dados pode ser facilmente cancelado se não for mais necessário, usando o MessagingService.UnRegisterCacheNotification
método.
Você precisa especificar o apropriado EventType
ao se registrar para eventos específicos de dados usando Eventtype enum. As seguintes notificações podem ser disparadas com base no registro EventType
:
Adicionar notificação: A notificação de adição é acionada quando o
ItemAdded
o tipo de evento é registrado e um novo item é adicionado ao cache.Notificação de atualização: A notificação de atualização é acionada quando o
ItemUpdated
tipo de evento é registrado e um item existente é atualizado no cache.Remover notificação: A notificação de remoção é acionada quando o
ItemRemoved
tipo de evento é registrado e um item é removido do cache.
Você também pode controlar as informações retornadas na execução de um evento usando EventDataFilter que é mais discutido em Filtros de Eventos seção.
Os eventos específicos de dados podem ser categorizados da seguinte forma:
Eventos de nível de cache
Eventos de nível de cache são eventos gerais para cache que são acionados na execução do Adicionar, Atualizarou Eliminar operações em dados de cache. O objetivo é notificar diferentes clientes sobre cada operação realizada no cache.
Aviso
Os eventos de nível de cache podem degradar o desempenho do aplicativo quando as notificações são registradas para todas as operações em todo o conjunto de dados de cache.
Por padrão, os eventos de nível de cache são desativados (exceto para operação de limpeza de cache) para qualquer configuração de cache e devem ser ativados para que os eventos sejam publicados usando o NCache Centro de Gerenciamento.
Eventos de nível de item
Eventos de nível de item pode ser útil quando você deseja ser notificado sobre um conjunto limitado de dados, em vez de todas as operações executadas no cache. Por exemplo, se o cache contiver uma grande quantidade de dados e for notificado sempre que ocorrer alguma alteração no conjunto de dados, haverá sobrecarga e o desempenho do aplicativo será afetado.
Note
Para um melhor desempenho, você pode registrar notificações apenas para o conjunto de dados de seu interesse.
O cache será responsável por monitorar as alterações nas chaves especificadas. Como o conjunto de dados selecionado já existe no cache, os eventos de nível de item são recebidos somente na operação de atualização ou remoção. Os aplicativos registram métodos de retorno de chamada para uma chave específica no cache usando chamadas de API e recebem uma notificação quando essa chave é atualizada ou removida do cache. Essas notificações são enviadas de forma assíncrona ao cliente para que não haja sobrecarga nas atividades do cliente.
Note
Como os eventos de nível de item são registrados para conjuntos de dados já no cache, a notificação de adição não pode ser recebida.
Eventos de nível de gerenciamento
Eventos de nível de gerenciamento pode se registrar para ser notificado quando qualquer operação de gerenciamento for executada no cluster de cache usando o Serviço de notificação interface.
Esses eventos podem ser usados para validação para ver se as operações continuam no cache ou não. Por exemplo, o cliente é um aplicativo multithread onde um thread é dedicado à inserção de itens a uma taxa constante. Se o cache for interrompido durante a inserção, o NCache cliente vai jogar OperationFailedException
. Para evitar que a exceção seja lançada, o thread deve tomar as medidas apropriadas ao parar o cache. Isso pode ser conseguido simplesmente registrando-se em um evento contra a ação de parada de cache.
Este exemplo também se aplica a notificações de limpeza de cache se o thread do aplicativo cliente validar operações durante sua execução enquanto o cache é limpo. Todas as validações falharão se o aplicativo cliente não considerar um evento de limpeza de cache.
As seguintes notificações são disparadas quando as operações de gerenciamento são executadas no cache:
Notificação de limpeza de cache: A notificação de limpeza de cache é disparada quando o cache é limpo.
Notificação de cache interrompido: A notificação de cache interrompido é disparada quando o cache é interrompido. Se um aplicativo continuar executando operações quando o cache for interrompido sem saber que o cache foi interrompido, uma exceção será lançada para as operações executadas.
Notificação de membro associado: A notificação de ingresso de membro é disparada quando um membro ingressa no cluster. Um administrador de cache ou um usuário que monitora o estado do cache durante as operações poderia automatizar suas tarefas para monitorar o estado do cluster. Portanto, se um membro ingressar no cluster, o evento deverá ser tratado para evitar qualquer interrupção nas tarefas automatizadas.
Notificação de membro esquerdo: A notificação de membro esquerdo é acionada quando um membro sai do cluster.
Eventos de atividade do cliente
Os eventos de atividade do cliente notificam a conexão/desconexão de clientes. Cada cliente conectado a um cache clusterizado pode assinar esses eventos para ser notificado sobre os eventos de conexão/desconexão de outros clientes.
Você também pode especificar o Período de Retenção, que é o tempo após o qual um cliente desconectado é considerado desconectado e seu evento de desconexão é disparado. Se um cliente se reconectar dentro do período de retenção, seu evento de desconexão não será disparado.
Isso é para compensar quaisquer desconexões acidentais que ocorram devido a redes com erros desde o NCache cliente se reconecta automaticamente nessas redes sem interromper as operações do cliente. Observe que isso não se aplica aos clientes que descartam e reinicializam manualmente.
Você precisa habilitar notificações de atividade do cliente in NCache Centro de Gerenciamento antes de usar.
Filtros de dados de eventos
NCache fornece EventDataFilter
para controlar a quantidade de informações retornadas na execução de eventos específicos de dados. Os tipos de filtros de eventos são explicados abaixo.
Aviso
O filtro de dados do evento deve ser cuidadosamente configurado para evitar o consumo desnecessário de largura de banda da rede.
nenhum
Este filtro retorna apenas as chaves afetadas pela operação na notificação de eventos. Isso é usado se o aplicativo estiver interessado apenas em saber quais chaves foram afetadas. Por exemplo, um site de comércio eletrônico deseja saber quais chaves de produto foram adicionadas e não os valores em si.
metadados
Com esse filtro, as chaves afetadas junto com seus metadados são retornadas na notificação do evento. Os metadados retornados incluem o grupo, prioridade do item de cache, expiração, CacheItemVersão, Opções de ressincronização, CacheItemRemovidoMotivo e Tipo de entrada. Esta informação pode ser solicitada pelo usuário. Por exemplo, quando uma aplicação deseja saber quais chaves foram removidas do cache e a quais grupos elas pertenciam.
Dados com Metadados
Esse filtro retorna as chaves junto com os itens em cache e seus metadados associados. Isso pode ser usado nos casos em que um aplicativo precisa processar os dados modificados. Por exemplo, um aplicativo bancário pode exigir saber quais informações do cliente foram modificadas. Assim, ele pode registrar notificações para operações de atualização de itens com esse filtro para que a chave do item e o item modificado também sejam retornados ao usuário assim que o evento for disparado.
Com o DataWithMetadata
filtro salva uma viagem ao buscar itens novamente com o Get API. Porém, este filtro deve ser utilizado quando necessário, pois pode causar sobrecarga na rede quando a quantidade de dados retornados for enorme.
Aviso
Em caso de desconexão do cliente, os eventos não são registrados durante o período de desconexão do cliente.
Comportamento Sábio de Topologia
As notificações de eventos são disparadas de acordo com a topologia de cache que está sendo usada. O comportamento da topologia para notificações de eventos é descrito a seguir:
Topologia do espelho: Na Topologia Mirror, um nó ativo do cluster é responsável por notificar o evento ao cliente.
Topologia replicada: Na Topologia Replicada, o nó do cluster que está conectado ao cliente é responsável por gerar as notificações de eventos.
Topologia Partição-Réplica: Na topologia partição-réplica, os eventos são disparados a partir dos nós ativos. O nó onde residem os dados baseados em critérios é responsável pelas notificações de eventos.
Topologia Particionada: Na Topologia Particionada, os eventos são disparados de todos os nós. O nó onde residem os dados baseados em critérios é responsável pelas notificações de eventos.
Veja também
.INTERNET: Alachisoft.NCache.Tempo de execução.Eventos espaço para nome.
Java: com.alachisoft.ncache.eventos espaço para nome.
Node.js: EventCacheItem classe.
Pitão: ncache.runtime.caching.events classe.