No passado, os especialistas tentaram remover gargalos de desempenho usando caches do sistema, mas, com o aumento do tráfego de usuários, a necessidade de aplicativos de alta velocidade tornou-se pertinente. Portanto, soluções de cache distribuído em memória, linearmente escaláveis, como NCache está se tornando popular, aumentando o desempenho do sistema múltiplas.
Geralmente, com uma camada de cache adicionada em sua arquitetura de sistema, os aplicativos são responsáveis por manter a integridade dos dados de dois saltos – em cada solicitação de gravação, os dados precisam ser atualizados tanto no cache quanto na fonte de dados de back-end. Portanto, se você tiver vários aplicativos, acessando o mesmo cache e o banco de dados, terá que duplicar seu código de persistência em todos eles. Isso adiciona complexidade de código no nível do aplicativo.
NCache Adicionar ao carrinho NCache Documentos de gravação NCache Guia de administração de gravação
O que é Write-Through?
Write-Through é uma técnica de armazenamento em cache, onde quando os aplicativos gravam dados no cache e uma fonte de apoio é configurada, ela também atualiza os registros no banco de dados.
NCache fornece um IWriteThru interface que você pode implementar, adicionando toda a lógica de código de persistência que de outra forma existiria em seu aplicativo cliente. Você precisa implantar o código em todos os servidores de cache por meio do NCache Gerenciador de Web.
Dessa forma, sempre que uma operação de gravação for realizada no cache, o provedor implantado será chamado e o banco de dados será atualizado de acordo com sua lógica.
Para saber como configurar um provedor Write-Through, consulte o oficial NCache Documentação do provedor Write-Through.
Às vezes, suas operações Write-Through podem falhar. Isso pode acontecer por vários motivos, como problemas de conexão de rede ou devido a um erro na lógica de implementação da interface. Como o Write-Through é síncrono, NCache lança uma exceção para o aplicativo. Você também encontrará o erro registrado nos logs de cache.
Além disso, desde NCache também fornece o status da operação – oferece a seus usuários a flexibilidade de lidar com vários cenários predeterminados. Por exemplo, caso a operação falhe e você queira tentar novamente, você pode definir a opção relevante e NCache realizará as aposentadorias para você.
Para obter mais detalhes sobre essas operações, consulte NCache Docs.
A Interface do Provedor Write-Through
Como mencionado anteriormente, NCache expõe um IWriteThru interface que o usuário deve implementar e, em seguida, implantar no servidor. O trecho de código abaixo mostra os métodos IWriteThuProvider:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public interface IWriteThruProvider { // Perform tasks associated with freeing, releasing, or resetting resources. void Dispose(); // Perform tasks like allocating resources or acquiring connections void Init(IDictionary parameters, string cacheId); //Responsible for write operations on data source. OperationResult WriteToDataSource(WriteOperation operation); ICollection WriteToDataSource(ICollection operations); ICollection WriteToDataSource(ICollection dataTypeWriteOperations); } |
Existem três sobrecargas do WriteToDataSource método. Um atende a solicitações de atualização de banco de dados atômico, enquanto o outro lida com solicitações de gravação de banco de dados em massa. NCache também expõe um método onde você pode adicionar lógica de código para atualizar NCache-estruturas de dados suportadas para a fonte de apoio.
NCache Adicionar ao carrinho Documentos de cache de gravação Configurar provedor de gravação
Write-Through no aplicativo
O aplicativo front-end só precisa acessar o cache para qualquer operação de gravação com a opção de WriteThru especificado para que o cache aplique essa operação no banco de dados por meio do provedor Write-Through.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// Pre-Condition: Cache is already connected // Fetch product with the given ProductID Product product = FetchProductByProductID(1001); // Specify the key of the item string key = $"product.ProductID"; product.UnitPrice = 200; // Create a new cacheItem with the product var cacheItem = new CacheItem(product); // Enable write through for the cacheItem created var writeThruOptions = new WriteThruOptions(); writeThruOptions.Mode = WriteMode.WriteThru; // Add the item in the cache with WriteThru enabled CacheItemVersion itemVersion = cache.Insert(key, cacheItem, writeThruOptions); |
O que é Cache Write-Behind?
Escrever atrás em um cache distribuído é o mesmo que o cache Write-Through, exceto que ele atualiza o banco de dados de forma assíncrona. Isso significa que o aplicativo nunca precisa esperar que a fonte de dados seja atualizada, aumentando o desempenho do aplicativo, pois as atualizações nas fontes de dados de back-end são as operações mais lentas do aplicativo.
Lembre-se de que, embora seja seguro assumir que os dados serão atualizados no banco de dados, é recomendável que você opte pelo Write-Through se estiver lidando com dados altamente confidenciais. Além disso, como é um mecanismo assíncrono, as falhas no write-behind são registradas como exceções e erros nos logs de cache, mas não lançadas para o aplicativo. NCache fornece opções para lidar com falhas da mesma forma que com Write-Through porque também retorna status de operação.
Consulte o NCache docs para obter detalhes sobre essas operações.
Write-Behind em aplicativos
Write-behind é uma maneira mais rápida de executar operações Write-Through, pois usa o mesmo provedor Write-Through, mas de forma assíncrona. A única alteração no aplicativo é a diferença na especificação da opção Write-Through como WriteBehind em vez de WriteThru.
Dê uma olhada no código de exemplo abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// Pre-Condition: Cache is already connected // Fetch product with the given ProductID Product product = FetchProductByProductID(1001); // Specify the key of the item string key = $"product.ProductID"; product.UnitPrice = 200; // Create a new cacheItem with the product var cacheItem = new CacheItem(product); // Enable write through for the cacheItem created var writeThruOptions = new WriteThruOptions(); writeThruOptions.Mode = WriteMode.WriteBehind; // Add the item in the cache with WriteThru enabled CacheItemVersion itemVersion = cache.Insert(key, cacheItem, writeThruOptions); |
NCache Adicionar ao carrinho Documentos de cache de gravação Usando Write-Behind em Cache
Conclusão
Com soluções de cache distribuído como NCache agora fornecendo recursos como Write-Through e Write-Behind, as atualizações no banco de dados back-end são mais simples e gerenciáveis. Ele encapsula toda a lógica do código de persistência em um único provedor. Isso permite manter a camada de banco de dados no nível do provedor e a camada de cache no nível do aplicativo. Então com NCache, você obtém o melhor dos dois mundos. Você obtém desempenho de cache para operações de leitura e manutenção de dados para operações de gravação. Assim, melhore o desempenho do seu sistema com a ajuda de soluções empresariais como NCache. Entre em contato conosco e deixe nossos especialistas ajudá-lo!
NCache Adicionar ao carrinho Baixar NCache Comparação de edições