Visão geral do cache Write Through e Write Behind
NCache suporta cache Write Through, que permite operações de gravação diretamente na fonte de dados por meio do cache. Dessa forma, você pode sincronizar seu cache e a fonte de dados. No cache Write-Through, NCache atualiza o armazenamento de cache primeiro e, em seguida, aplica essa operação à fonte de dados. Por exemplo, se um aplicativo cliente atualizar uma entrada no cache, NCache também atualizará a fonte de dados (se o Write-Through estiver ativado).
Note
Este recurso está disponível apenas em NCache Enterprise edição.
Para usar o Cache Write-Through em seu aplicativo, você precisa primeiro implementar o IWriteThruProvider
interface. NCache usará internamente esse provedor personalizado para executar operações de gravação na fonte de dados. NCache chamará seu provedor por trás das chamadas de API de operações de gravação (Adicionar, Inserir, Remover/Excluir) com Write-Through.
Atualmente NCache fornece dois modos para cache Write-Through fornecidos abaixo:
- Write-Through (atualiza a fonte de dados de forma síncrona)
- Write-Behind (atualiza a fonte de dados de forma assíncrona)
Note
NCache fornece um contador de desempenho Write-thru/sec
para operações Write-Through.
Escreva através
No cache Write-Through, uma operação é aplicada primeiro no armazenamento de cache e, em seguida, atualizada de forma síncrona para a fonte de dados configurada. Usando Write-Through, as operações serão concluídas após NCache aplica essa operação na fonte de dados. Você pode usar o cache Write-Through se as atualizações imediatas da fonte de dados forem críticas e você precisar atualizar a fonte de dados assim que o cache for atualizado.
Escrever atrás
Em Write-Through, devido a operações síncronas na fonte de dados, a taxa de operações será igual à taxa de operações do usuário no cache. Para aplicativos com alto tráfego de usuários, a taxa de operações do usuário no cache pode ser muito alta, o que pode sobrecarregar sua fonte de dados. Além disso, as operações síncronas da fonte de dados podem afetar o tempo de resposta de uma operação do usuário.
Para superar esses problemas, Write-Behind pode ser usado em vez de Write-Through. No Write-Behind, as operações da fonte de dados são executadas de forma assíncrona após NCache executa operações no armazenamento de cache. Depois de atualizar o armazenamento em cache, essas operações são enfileiradas e posteriormente aplicadas às fontes de dados configuradas de forma assíncrona. Assim, usar Write-Behind aumentará o tempo de resposta das operações de cache.
NCache fornece diferentes definições de configuração em Write-Behind para controlar o fluxo de operação na fonte de dados. Por exemplo, você pode especificar a taxa na qual NCache aplicará operações Write-Behind na fonte de dados por meio de limitação.
Estrangulamento
Indica o número de operações aplicadas na fonte de dados por segundo. O valor padrão para limitação é 500 ops/seg. Você pode alterar esse valor por meio das configurações de fonte de apoio no NCache Novos Negócios.
Note
NCache fornece um contador de desempenho Write-behind/sec
para operações Write-Behind.
Modos Write-Behind
NCache permite aplicar operações Write-Behind individualmente ou em lote. Uma fila Write-Behind é mantida para operações Write-Behind. Todas as operações Write-Behind serão enfileiradas nesta fila e posteriormente aplicadas à fonte de dados de acordo com o modo em lote ou não em lote configurado explicado abaixo.
Modo não em lote
Por padrão, o modo não em lote será configurado para operações Write-Behind. Nesse modo, as operações na fila Write-Behind serão aplicadas uma a uma na fonte de dados de acordo com a taxa de limitação configurada. Por exemplo, se a taxa de limitação for de 500 operações por segundo, NCache aplicará as operações Write-Behind uma de cada vez à fonte de dados e não excederá de 500 operações por segundo.
Modo de lote
No modo Lote, um lote/volume de operações é selecionado de acordo com sua operation delay
. Você pode configurar operation delay
para operações Write-Behind, que indica o tempo em milissegundos que cada operação deve aguardar na fila Write-Behind antes de ser aplicada na fonte de dados. Por padrão, seu valor é zero.
O intervalo do lote é o intervalo configurável de acordo com o qual NCache verifica periodicamente as operações de atraso de operação esgotadas na fila Write-Behind. Por exemplo, se o atraso da operação estiver configurado como 1000ms e o intervalo de lote como 5s, NCache verifica as operações na fila Write-Behind a cada 5 segundos e seleciona todas as operações com atrasos de operação expirados (todas as operações que estão na fila nos últimos 1000 milissegundos).
Após a seleção de operações em massa, elas são aplicadas à fonte de dados de acordo com a taxa de limitação configurada. Digamos que um volume de 1000 operações seja selecionado na fila Write-Behind, que é então aplicado à fonte de dados em um lote de 500 operações (se a taxa de limitação for 500 ops/s) como a operação máxima aplicada à fonte de dados por segundo não pode exceder o valor de limitação configurado.
Você pode especificar um tempo de atraso de operação que varia de segundos a dias e meses. Dessa forma, você pode pausar suas operações na fonte de dados em um período de tempo configurável. NCache também fornece contadores de desempenho para fila write-behind, contagem de operações e contagem atual de operações em lote. Para Write-Behind, se o processamento em lote estiver habilitado, as operações que estão prontas para serem executadas na fonte de dados são retiradas da fila Write-Behind.
Note
O número de operações desenfileiradas no intervalo de lote atual será exibido pelo contador de contagem de operação em lote atual.
Suporte Hot Apply para configuração Write-Behind
NCache oferece suporte a configurações de Write-Behind aplicáveis, que permitem alterar as configurações de Write-Behind em tempo de execução, sem interromper o cache. Você pode alterar os atributos configuráveis Write-Behind por meio do NCache Gerente e NCache incorporará essas mudanças dinamicamente.
No suporte hot apply, você pode alterar o modo Write-Behind de lote para não lote e vice-versa. Por exemplo, se você alterou o modo de lote para não lote, então NCache irá ignorar o valor de atraso da operação e iniciará a execução das operações individualmente. Além disso, você pode alterar a taxa de limitação no tempo de execução de acordo com sua necessidade, da mesma forma, atraso de operação, intervalo de lote, limite de fila de operações com falha e taxa de despejo de operações com falha também podem mudar em tempo de execução.
Aviso
Você só pode aumentar o valor do limite da fila de operações com falha; de outra forma, NCache usará seu valor padrão para outras operações.
Write-Behind em ambiente em cluster
Como uma fila Write-Behind é mantida para operações Write-Behind, um monitor de thread dedicado separado executa sua operação. Os detalhes do nível de topologia para Write-Behind são mencionados abaixo:
Topologia replicada: A fila Write-Behind é mantida em todos os nós, mas o processador assíncrono Write-Behind está presente apenas no nó coordenador. Isso significa que todas as operações Write-Behind são executadas por meio desse nó e replicadas para outras filas de nós em todo o cluster. Dessa forma, se um nó estiver inativo, o próximo nó coordenador executará todas as operações de write-behind restantes.
Topologia replicada particionada: A fila Write-Behind é mantida em cada nó ativo e também replicada para suas réplicas correspondentes. Cada nó é responsável por sua operação Write-Behind na fonte de dados.
Topologia espelhada: A fila Write-Behind é mantida em nós ativos e passivos, mas apenas o nó ativo é responsável por realizar operações Write-Behind. Da mesma forma, se o nó ativo estiver inativo, o nó passivo se tornará ativo e executará as operações Write-Behind restantes.
Topologia Particionada: A fila Write-Behind é mantida em cada partição e cada nó é responsável por suas operações Write-Behind na fonte de dados.
Resultado da operação de cache
NCache oferece a flexibilidade de sincronizar as operações Write-Through no cache com base no resultado da operação. Após aplicar uma operação (Adicionar/Inserir) na fonte de dados, você pode especificar o status da operação com base no qual NCache irá sincronizar o armazenamento de cache. Por exemplo, em caso de falha na operação da fonte de dados, você pode decidir remover esses dados do cache ou mantê-los. Você também pode repetir essa operação na fonte de dados. Para isso, você deve especificar Success
/Failure
/FailureRetry
/FailureDontRemove
as
OperationResult.Status
of OperationResult
. Isso é fornecido no cache Write-Through e Write-Behind.
Status da operação da fonte de dados e suas ações correspondentes por NCache são descritos abaixo:
RESULTADOS: Isso significa que a operação da fonte de dados foi bem-sucedida e o item foi adicionado à fonte de dados para NCache irá mantê-lo no cache também.
Falha: Isso significa que a operação da fonte de dados falhou e o item não pôde ser adicionado à fonte de dados, então NCache irá removê-lo do cache também.
FalhaNãoRemover: Isso significa que a operação da fonte de dados falhou e o item não pôde ser adicionado à fonte de dados, mas NCache irá mantê-lo no cache.
FalhaRepetir: Isso significa que a operação da fonte de dados falhou e o item não pôde ser adicionado à fonte de dados, então NCache manterá o item em cache e tentará novamente. As novas tentativas serão feitas como operações Write-Behind.
Repetindo operações com falha
NCache permite que você tente novamente as operações em Write-Through/Write-Behind caso elas falhem na fonte de dados. Para isso, se você habilitar a repetição da operação, então NCache repetirá essa operação na fonte de dados. No caso de Write-Through ou Write-Behind, todas as operações de repetição serão enfileiradas na fila Write-Behind, o que significa que uma operação de repetição Write-Through será repetida de forma assíncrona como uma operação Write-Behind.
Note
NCache também fornece um contador de desempenho para Datasource failed operations/sec
. Operações de gravação executadas no retorno da fonte de dados Failure
/FailureRetry
/FailureDontRemove
as OperationResult.Status
of
OperationResult
são contados por segundo por este contador.
NCache permite limitar o número de operações com falha a serem repetidas. Em tal situação, você mencionará o limite da fila de operação com falha por meio do
NCache Manager e se esse limite for excedido, você pode remover operações com falha por meio de uma taxa de remoção configurável. Aqui, NCache irá despejar a maioria das operações repetidas quando a fila de novas tentativas estiver cheia. Cada operação tem um RetryCount
propriedade associada a ele, que é incrementada em cada operação repetida na fonte de dados.
Por esta, NCache fornece um contador de desempenho para
Write-behind failure retry count
e Write-behind evictions/sec
. O Write-behind failure retry count
mostra o número de operações reenfileiradas para nova tentativa. Retornando as operações de gravação da fonte de dados FailureRetry
as Status
in OperationResult
será recolocado na fila para nova tentativa. Enquanto, Write-behind evictions/sec
contador exibe o número de operações de repetição despejadas por segundo.
Atualizando o cache após a operação da fonte de dados
Conforme declarado anteriormente, no cache Write-Through, a operação é executada primeiro no armazenamento em cache e depois na fonte de dados. Pode haver cenários nos quais, após executar operações na fonte de dados, os dados são modificados, por exemplo, no caso de colunas de identidade, seu valor pode ser modificado pela operação da fonte de dados. Em tal situação, os dados podem se tornar inconsistentes no cache e na fonte de dados. Para lidar com isso, NCache permite especificar se os dados no cache devem ser atualizados ou não após as operações da fonte de dados. Você pode habilitar UpdateInNCache
sinalizador para executar a operação (Adicionar/Inserir) novamente no armazenamento em cache para torná-lo sincronizado com a fonte de dados, portanto, atualizando as operações no armazenamento em cache de forma síncrona por meio de Write-Through ou de forma assíncrona por meio do cache Write-Behind.
Note
NCache também fornece um contador de desempenho Datasource updates/sec
que exibe o número de operações de atualização por segundo no cache após as operações de gravação da fonte de dados.
Nesta secção
Configurar provedor Write-Thru
Explica a interface Write-Through Provider e fornece uma implementação de exemplo para a interface.
Write-Thru com operações de cache
Fornece exemplos para usar Write-Through com operações básicas em NCache.
Write-Behind com operações de cache
Fornece exemplos para usar Write-Behind com operações básicas em NCache.
Monitorar contadores de gravação
Descreve os contadores de desempenho fornecidos por NCache para monitorar o cache de gravação.