Cache Loader e Atualizador em NCache

NCache é um cache distribuído in-memory extremamente rápido e escalável para .NET e armazena dados de aplicativos em cache para reduzir viagens caras ao banco de dados. Usar NCache para remover gargalos de desempenho relacionados ao seu armazenamento de dados e banco de dados.

À medida que o tamanho do seu cache aumenta e você está armazenando cada vez mais dados de referência/pesquisa em cache, você enfrenta o problema de precisar preencher um cache vazio na inicialização. Depois, há a questão de manter esses dados armazenados em cache atualizados e também adicionar mais dados a eles regularmente para manter conjuntos de dados inteiros no cache. E, para fazer tudo isso, você não apenas precisa desenvolver um aplicativo personalizado, mas também hospedá-lo em algum lugar e garantir que ele sempre seja executado na inicialização do cache e também em intervalos programados.

Isso é muito gerenciamento extra e dor de cabeça que NCache assume para você através de seu poderoso recurso Cache Loader / Refresher. NCache permite desenvolver código personalizado do lado do servidor e registrá-lo para o Cache Loader and Refresher.

NCache fornece o seguinte para você:

  1. Cache Loader (Distribuído e Paralelo): você pode desenvolver um Cache Loader como código do lado do servidor que é implantado e executado em todos os servidores de cache no cluster. Então, quando o cache é iniciado, NCache chama esse Cache Loader em cada servidor de cache em paralelo para ler sua parte dos dados (chamados conjuntos de dados) do banco de dados/fonte de dados e carregá-los no cache. O Cache Loader é executado em paralelo em todos os servidores de cache para distribuir o trabalho de carregamento de dados em vários conjuntos de dados paralelos.
  2. Atualizador de Cache (Distribuído e Paralelo): você pode desenvolver um Cache Refresher como código do lado do servidor que é implantado e executado em todos os servidores de cache no cluster. Então, NCache chama seu Cache Refresher regularmente (agendamento) para obter atualizações ou novos dados do seu banco de dados / fonte de dados e colocá-los no cache. Você também pode chamar o Cache Refresher sob demanda. O Cache Refresher é executado em paralelo em todos os servidores de cache para distribuir o trabalho de carregamento de dados em vários conjuntos de dados paralelos.
Cache Loader e Atualizador em NCache

Benefícios do Cache Loader/Refresher

Aqui estão alguns benefícios de usar o recurso Cache Loader/Refresher em NCache.

  1. Carregamento/atualização paralela de conjuntos de dados: se o seu cache for grande, carregá-lo ou atualizá-lo pode levar algum tempo. E, se você mesmo escrever código para esse propósito, provavelmente o executará em um único computador e, portanto, carregará todos os dados sequencialmente. Mas, NCache distribui e executa o Cache Loader / Refresher em todos os servidores de cache. Como resultado, o carregamento de dados é paralelo e muito mais rápido.
  2. Alta disponibilidade do carregador/atualizador de cache: NCache implanta o Cache Loader/Refresher em todos os servidores de cache. Isso significa que se algum servidor de cache ficar inativo, o carregamento/atualização não será interrompido porque está sendo executado em outros servidores de cache. E, conforme você adiciona um novo servidor de cache ao cluster, NCache também disponibiliza o Cache Loader / Refresher nele, aumentando assim a alta disponibilidade. Isso é algo que você não pode alcançar se você escreveu esse código e executou você mesmo.
  3. NCache Hospeda para você: se você tivesse que desenvolver e executar esse código por conta própria, precisaria garantir que ele sempre seja executado, mesmo que o servidor no qual você está executando esse código fique inativo. Isso ocorre porque seu cache depende desse código para permanecer atualizado e completo. E, isso é muito trabalho para gerenciar uma coisa dessas na produção. Felizmente, NCache assume essa responsabilidade para você e hospeda o Cache Loader / Refresher para você em todos os servidores de cache. NCache também garante que esse código seja executado em vários servidores para alta disponibilidade, conforme explicado acima.
  4. O carregador/atualizador é executado muito próximo ao cache: como você sabe, NCache implanta e executa o Cache Loader/Refresher em todos os servidores de cache no cluster. Isso significa que o código do carregador/atualizador de cache está sendo executado muito próximo ao próprio cache. E isso também acelera o carregamento/atualização de dados no caso de grandes conjuntos de dados.

Destaques dos recursos

Aqui estão alguns destaques do recurso Read-through, Write-through e Write-behind em NCache.

  1. Código do lado do servidor (.NET): você desenvolve seu Cache Loader/Refresher em .NET. Há uma interface para Loader e Refresher que você desenvolve e depois implanta seu código em todos os servidores de cache no cluster. NCache é então capaz de chamá-los na inicialização do cache ou posteriormente para atualização. Seu código é desenvolvido em .NET e é chamado nativamente por NCache uma vez que também é desenvolvido em .NET.
  2. O carregador/atualizador é executado em processo separado: NCache executa seu Cache Loader / Refresher em um processo separado em cada servidor de cache do que o processo que possui os dados de cache. Isso significa que seu cache não é afetado por nenhum erro ou falha no código do Cache Loader / Refresher, pois seu processo pode ser facilmente reiniciado por NCache Serviço de Gerenciamento no mesmo servidor de cache.
  3. Vários conjuntos de dados nomeados: você pode definir vários conjuntos de dados nomeados para dividir o carregamento/atualização de dados em blocos de dados paralelos. Ao nomear o conjunto de dados na configuração, seu código Cache Loader/Refresher responsável por carregar/atualizar qualquer conjunto de dados nomeado sabe qual é o conjunto de dados e pode usar o código apropriado para buscar apenas esses dados.
  4. Conjuntos de dados distribuídos para servidores de cache em tempo de execução: NCache usa um algoritmo round-robin para distribuir conjuntos de dados para todos os servidores de cache no cluster para carregar/atualizar em paralelo. Isso acelera um pouco o carregamento / atualização, pois você sempre tem pelo menos 2 servidores de cache no cluster e provavelmente mais de 2.
  5. Agendamento de nível de conjunto de dados (mensal, semanal, horário diário, intervalo diário): NCache permite definir o agendamento de carregamento/atualização no nível do conjunto de dados para que cada conjunto de dados possa ter seu próprio agendamento. O agendamento pode ser Mensal, Semanal, Horário Diário e Intervalo Diário. Daily Time significa uma hora específica do dia todos os dias, enquanto Daily Interval significa executar várias vezes em um dia todos os dias, mas depois de aguardar um intervalo específico da última execução.
  6. Atualização do conjunto de dados sob demanda: além de fornecer agendamento no nível do conjunto de dados, NCache também fornece um cmdlet do PowerShell que permite invocar uma atualização de conjunto de dados específica sob demanda. Dessa forma, se você sentir que algum dado do conjunto de dados foi alterado, mas o horário agendado ainda não chegou, você pode ligar para NCache para atualizá-lo. Você pode integrar esta chamada em qualquer um de seus aplicativos onde você tem uma melhor compreensão sobre o estado de seus dados em seu banco de dados/fonte de dados que seu aplicativo pode fazer a chamada para atualizar sob demanda ou não.

Carregador de cache/interface de atualização

É bastante simples desenvolver o código do Cache Loader/Refresher. Abaixo está um exemplo de interface para ele.

Carregador de cache/interface de atualização

public interface ICacheLoader : IDisposable {
	void Init(IDictionary<string, string> parameters, string cacheName);
	object LoadDatasetOnStartup(string dataset);
	object RefreshDataset(string dataset, object userContext);
	IDictionary<string, RefreshPreference> 
GetDatasetsToRefresh(IDictionary<string, object> userContexts);
}
© Copyright Alachisoft 2002 - . Todos os direitos reservados. NCache é uma marca registrada da Diyatech Corp.