Os aplicativos atuais precisam dimensionar e lidar com níveis extremos de cargas de transação. Mas os bancos de dados não são capazes de escalar e, portanto, tornam-se um gargalo. Para resolver isso, muitas pessoas estão se voltando para cache distribuído na memória porque escala linearmente e remove os gargalos do banco de dados.
Um cache distribuído normalmente contém dois tipos de dados, dados transacionais e dados de referência. Os dados transacionais são alterados com muita frequência e, portanto, são armazenados em cache por um período muito curto. Mas, o armazenamento em cache ainda fornece um aumento considerável no desempenho e na escalabilidade.
Os dados de referência, por outro lado, não mudam com muita frequência. Podem ser dados estáticos ou dados dinâmicos que mudam a cada hora, dia, etc. Às vezes, esses dados podem ser enormes (em gigabytes). Seria bom se esses dados de referência pudessem ser pré-carregados em um cache distribuído na inicialização do cache, pois seus aplicativos não precisariam carregá-los em tempo de execução. Carregando dados de referência em tempo de execução diminuiria o desempenho do aplicativo, especialmente se houver muitos dados.
NCache Adicionar ao carrinho NCache Docs Carregador de cache e documentos de atualização
Como os dados de referência devem ser pré-carregados em um cache distribuído?
Uma abordagem é projetar seu aplicativo de forma que, durante a inicialização do aplicativo, ele busque todos os dados de referência necessários do banco de dados e os coloque no cache distribuído.
No entanto, esta abordagem levanta algumas outras questões. Primeiro, ele retarda a inicialização do aplicativo porque seu aplicativo agora está envolvido no pré-carregamento do cache. Em segundo lugar, se você tiver vários aplicativos compartilhando um cache distribuído, você terá duplicação de código em cada aplicativo ou todos os seus aplicativos dependem de um aplicativo pré-carregando o cache distribuído. Por fim, incorporar o código de pré-carregamento de cache dentro do seu aplicativo corrompe o design do seu aplicativo porque você está adicionando código que não pertence ao seu aplicativo. Claro, nenhuma dessas situações é muito desejável.
E se dermos isso responsabilidade de pré-carregamento para o próprio cache distribuído? Nesse caso, o pré-carregamento pode fazer parte do processo de inicialização do cache e, portanto, não envolve seu aplicativo. Você pode configurar o cache para pré-carregar todos os dados necessários na inicialização para que esteja disponível para todos os aplicativos usarem desde o início. Isso simplifica seu aplicativo porque ele não precisa mais se preocupar com a lógica de pré-carregamento.
NCache Adicionar ao carrinho NCache Docs Carregador de cache e documentos de atualização
Pré-carregando dados de referência no cache
NCache fornece um recurso muito poderoso e flexível para pré-carregar seu cache na inicialização. Você pode escrever código personalizado para seu carregador de cache e registrá-lo com NCache. Feito isso, NCache chama o carregador de cache (com seu código personalizado) na inicialização do cache. Antes de passar para a implementação, vamos primeiro conhecer os componentes básicos do NCache Carregador de inicialização de cache.
- Serviço de carregador: Para uma topologia em cluster, um serviço de carregador é executado em cada nó para carregar dados de acordo com o asshttps://www.alachisoft.com/resources/docs/ncache/prog-guide/cache-startup-loader-overview.html#loader-service conjunto de dados assinado. Isso melhora o desempenho de carregamento reduzindo a carga no processo de cache.
- Conjuntos de dados: Os dados a serem carregados são divididos em conjuntos de dados lógicos pelo usuário e distribuído aos nós usando o algoritmo round-robin. Isso acelera o processo de carregamento ao atingir o paralelismo.
Para cavar mais fundo no NCache recurso de pré-carregamento, você pode ver o propriedades do carregador de cacheAlém disso, NCache também facilita a atualização dos dados de cache carregados, fornecendo o Atualizador de cache recurso.
Implementar a interface ICacheLoader
Para habilitar o pré-carregamento usando NCache, você precisa implementar uma interface simples chamada ICacheLoader
. Ele é chamado para auxiliar o cache a responder a pergunta “Como e quais dados carregar?”. Aqui está como você pode simplesmente customizar o código dos seguintes métodos de ICacheLoader
interface com base em seus requisitos de negócios.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
class CacheLoader : ICacheLoader { public void Init(IDictionary<string, string> parameters, string cacheName) { //connect to cache cache = CacheManager.GetCache(cacheName); //Connection string is passed as parameters at the time of configuration // connectionString = parameters.ContainsKey("ConnectionString") ? parameters["ConnectionString"] : null; if (connectionString != null) { //Let's connect to the database connection = new SqlConnection(connectionString); } } public object LoadDatasetOnStartup(string dataSet) { // Create a list of datasets to load at cache startup IList<object> datasetToLoad; if (dataSet != null) { switch (dataSet.ToLower()) { // If dataset is "products", fetch products from data source to load in cache case "products": datasetToLoad = FetchProductsFromDataSource(); // Insert fetched product in the cache // You can also use NCache bulk API to insert data into cache foreach (var product in datasetToLoad) { string key = $"ProductID:{product.Id}"; cache.Insert(key, product); } break; // You can add more cases for different datasets as per requirement and fetch them from the data source default: // Invalid dataset throw new Exception($"Unknown dataset is configured. Dataset {dataSet}"); break; } } return null; } } |
Qualquer exceção que ocorreu durante o processamento do carregador de inicialização é registrada sem criar nenhum problema para seu aplicativo. Simples e eficaz!
Configurar carregador de inicialização
Depois de implementar o Cache Startup Loader, você pode configurá-lo para o seu cache, usando NCache Gerenciador Web. Você pode habilitar o cache loader na página de configuração detalhada do cache em NCache Gerenciador Web. Para etapas detalhadas, você pode consultar como configurar o carregador de inicialização do cache usando NCache Web Manager.
Você também pode adicionar e remover conjuntos de dados de um cache com o carregador de cache configurado usando o Add-StartupLoader
e Remove-StartupLoader
cmdlets do PowerShell, respectivamente. Você pode ver os exemplos relevantes para adicionar conjunto de dados do carregador e remover carregador de inicialização para uma melhor compreensão.
Conclusão!
Como você pode ver, NCache fornece um mecanismo poderoso para pré-carregar seu cache distribuído e manter o desempenho de seus aplicativos sempre alto. Além do mais, NCache também facilita a atualização dos dados de cache carregados, fornecendo o Atualizador de cache característica. Então, baixe NCache agora e prepare-se para usar seus vastos recursos!
NCache Adicionar ao carrinho NCache Baixar Comparação de edições
É, na realidade, uma boa e útil informação. Estou satisfeito por você ter compartilhado essas informações úteis conosco.
Por favor, fique nos informou como este. Obrigado por compartilhar.
Olá, encontrei seu site por meio de
Google ao pesquisar um tópico comparável, seu site chegou aqui
para cima, parece ser bom. Eu marquei em meus favoritos do google.
Olá, simplesmente fiquei alerta para o seu blog via Google, e descobri que ele é realmente informativo.
Vou tomar cuidado com Bruxelas. Eu apreciarei se você continuar com isso
no futuro. Muitas pessoas provavelmente serão beneficiadas
da sua escrita. Felicidades!