Em um ambiente de cache distribuído, pode haver cenários em que determinados dados devem estar presentes no cache para o aplicativo usar imediatamente após iniciar a execução. Inicialmente, quando um cache é iniciado, ele não contém nenhum dado que possa causar viagens caras à fonte de dados para obter dados, afetando o desempenho do aplicativo. Portanto, torna-se importante que o cache usado para armazenar dados seja pré-carregado com alguns dados de referência antes que o aplicativo comece a usá-lo.
Para esse fim, NCache fornece uma Carregador de inicialização de cache recurso que permite aos usuários implementar uma interface para pré-carregar os dados de referência desejados no cache assim que o cache for inicializado. Como resultado, o aplicativo do usuário não terá perdas de cache e menos viagens à fonte de dados, obtendo assim um desempenho mais rápido.
Componentes do Cache Startup Loader
Sempre que o cache é inicializado, o Cache Startup Loader busca automaticamente os dados da fonte de dados para o usuário usar antecipadamente. Portanto, antes de passar para o funcionamento do Cache Loader, o usuário deve conhecer algumas de suas características que são explicadas a seguir.
- Conjuntos de dados: Um conjunto de dados é uma maneira de o usuário agrupar diferentes tipos de dados para que possam carregá-los ou atualizá-los separadamente em diferentes intervalos ou eventos para obter paralelismo.
- Serviço de carregador: Ele é responsável por gerenciar as tarefas e carregar dados da fonte de dados no cache na inicialização.
- Novas tentativas do carregador de cache: Caso uma operação falhe durante o carregamento do cache, essas operações com falha podem ser executadas novamente antes de passar para a próxima através da opção de número de tentativas que é configurada através NCache Gerenciador Web.
NCache Adicionar ao carrinho Carregador de cache e documentos de atualização NCache Docs
Como implementar o carregador de inicialização de cache?
Para habilitar o Cache Startup Loader, o usuário, antes de tudo, precisa implementar o ICacheLoaderName interface. NCache usa essa interface com os métodos explicados abaixo para carregar dados da fonte de dados no cache na inicialização do cache.
Inicializar o carregador de inicialização do cache
Nisso é chamado na inicialização do cache para passar os parâmetros configurados para que o usuário possa usá-lo adequadamente para inicializar seu cache e a fonte de dados. Basta configurar a conexão abrindo uma conexão de banco de dados como SQL e inicializar um cache com o nome fornecido como a implementação de exemplo abaixo para .NET e Java.
1 2 3 4 5 6 7 8 9 |
public void Init(IDictionary<string, string> parameters, string cacheName) { cache = CacheManager.GetCache(cacheName); connectionString = parameters.ContainsKey("ConnectionString") ? parameters["ConnectionString"] : null; if (connectionString != null) { connection = new SqlConnection(connectionString); } } |
1 2 3 4 5 6 7 8 |
public void init(Map<String, String> parameters, String cacheName) { cache = CacheManager.getCache(cacheName); connectionString = parameters.containsKey("ConnectionString") ? parameters.get("ConnectionString") : null; if (connectionString != null) { connection = DriverManager.getConnection(connectionString); } } |
Carregar dados na inicialização do cache
A implementação de exemplo a seguir para .NET e Java, do método LoadDatasetOnStartup of ICacheLoader
A interface busca os dados da fonte de dados e os adiciona ao cache na inicialização do cache para pré-carregar o cache. Ele retorna um contexto de usuário que contém as informações sobre os dados carregados no cache.
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 |
public object LoadDatasetOnStartup(string dataset) { // Create a list of datasets to load at cache startup IList<object> datasetToLoad; 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 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 } // User context is the time at which datasets were loaded in the cache object userContext = DateTime.Now; return userContext; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
public Object loadDatasetsOnStartup(String dataset) { // Create a list of datasets to load at cache startup List<Object> datasetToLoad; switch (dataset.toLowerCase()) { // If dataset is "products", fetch products from data source and add in cache case "products": datasetToLoad = fetchProductsFromDataSource(); // Insert fetched product in the cache for (var product : datasetToLoad) { string key = "ProductID:" + product.productID; cache.insert(key, product); } break; // You can add more cases for different datasets as per the requirement and fetch them from data source default: // Invalid dataset } // User context is the time at which datasets were loaded in the cache Object userContext = LocalDateTime.now(); return userContext; } |
Assim como o pré-carregamento de dados é uma coisa importante a fazer, pode haver uma grande chance de que os dados carregados fiquem desatualizados. Os dados já carregados no cache podem ser alterados devido a qualquer alteração que ocorra na fonte de dados, e é por isso que os pré-carregados podem ficar obsoletos. Para manter esses dados carregados atualizados, NCache fornece um recurso de Atualizador de cache que usa a implementação do Cache Loader para manter os dados carregados atualizados e sincronizados com a fonte de dados.
NCache Adicionar ao carrinho Configurar o Carregador e Atualizador de Cache Documentos de atualização de cache
Configure o Cache Loader por meio de NCache Web Manager
Uma vez que o usuário tenha implementado o Cache Startup Loader, ele pode configurá-lo através NCache Web Manager. Abaixo está como isso pode ser feito.
Conclusão!
Como você pode ver, NCache fornece a seus usuários um poderoso recurso Cache Startup Loader para pré-carregar dados no cache em vez de acompanhamento manual. Então, segure-se NCache e adquira todos os seus incríveis recursos para desempenho e escalabilidade de aplicativos mais rápidos!
NCache Adicionar ao carrinho Baixar NCache Comparação de edições