O único propósito de NCache é fornecer o melhor desempenho para sua aplicação. E para atingir esses números de desempenho, você precisa que seu ambiente de cache possa ser dimensionado com facilidade e economia.
As NCache é um armazenamento de dados na memória, a primeira preocupação é a memória limitada que foi atribuída a ele em uma caixa física. O segundo é o limite computacional. Nós todos sabemos isso NCache, além de fornecer operações básicas de CRUD, também suporta muitos recursos avançados como Pub / Sub, Consultas, chamadas de busca baseadas em critérios, etc. E quando as solicitações do cliente sobre esses recursos se tornam muito, a necessidade de mais poder de processamento aumenta. Isso significa que, mais cedo ou mais tarde, seu servidor de cache atingirá seu limite máximo de processamento. Quando isso acontece, NCache não te abandona. Em vez disso, existe uma solução para isso e estou aqui para explicar isso a você.
NCache Adicionar ao carrinho Cache distribuído em .NET Altamente Disponível NCache
Escalabilidade Linear em NCache
Quando seu ambiente atinge os limites mencionados acima, NCache permite adicionar um novo nó de servidor (ou vários nós) ao cluster de cache. Adicionar um novo servidor é basicamente você adicionar um novo nó físico ao cluster por meio de NCache Web Manager or NCache Ferramenta PowerShell que aprimora a memória geral e fornece outro recurso para tratar de solicitações recebidas em excesso.
Isso garante escalabilidade linear. Como? Porque quanto mais nós você adicionar, melhor desempenho você obterá. Dentro NCache, adicionar nós adicionais ao cluster não induz nenhuma sobrecarga que faça com que a taxa de transferência consistente vacile. E de acordo com os benchmarks de desempenho feitos recentemente, NCache alcançado 2 milhões de operações/segundo com 5 nós de servidor! Se isso não é uma vitória, então eu não sei o que é.
E a melhor parte de tudo isso vem com o dinâmico natureza de NCache agrupamento. Isso significa que você não precisa parar processos, aplicativos ou nós existentes simplesmente para adicionar um novo nó ao cluster.
NCache Adicionar ao carrinho NCache Benchmarks de desempenho NCache Benchmarks de desempenho – Vídeo
Vamos cavar um pouco mais fundo e iluminar o que NCache recursos trazem para a tabela de escalabilidade.
Operações do cliente para escalabilidade
NCache cliente tem esse recurso interno que se conecta automaticamente com cada nó do servidor diretamente. E NCache O mapa de distribuição permite que o cliente saiba qual nó possui os dados necessários. Assim, a operação proveniente do cliente não passa por vários saltos e nós. Em vez disso, leva um salto direto para o servidor que possui os dados específicos. Essa funcionalidade simples, porém inteligente, ajuda a dimensionar seu ambiente.
Paralelismo para escalabilidade nas operações
NCache suporta várias operações avançadas como Consultas, Operações em massa, Tags, e muitas outras operações que precisam ser executadas em vários nós. Em vez de enviar essas operações para todos os nós de maneira Round Robin, NCache permite enviar todas as operações para todos os nós em paralelo.
Por exemplo, um cliente deseja consultar dados armazenados no cache, então ele envia essa consulta para todos os nós do cluster. Cada nó executará essa consulta localmente no conjunto de dados armazenado e compartilhará o resultado com o cliente. O cliente mescla todos os resultados provenientes de todos os nós do servidor e retorna um único resultado para todos os aplicativos finais. Cada nó executa a mesma consulta em paralelo, o que induz a escalabilidade e acelera o sistema.
Pipelining para operações de dimensionamento
NCache usos Pipelining para criar blocos de operações que precisam ser enviados por uma rede em uma única chamada TCP. Essa técnica reduz a sobrecarga de enviar várias solicitações uma a uma e aguardar sua confirmação.
Vamos dar um exemplo aqui. Diga que o NCache cliente está enviando 100 operações para o servidor, o que normalmente significa que o cliente realizará 100 operações de E/S. Para o sucesso dessas operações, cada transação do modo usuário ao kernel consumirá muita energia da CPU. O consumo excessivo de CPU é caro e reduzirá o desempenho do meu aplicativo.
Aqui, o que o pipeline do lado do cliente faz é combinar todas as operações que vão para um servidor e enviar esse pedaço em uma chamada de E/S dedicada. O pipeline do lado do servidor garante que o servidor receba várias chamadas de E/S em uma chamada simples. As respostas que os servidores enviam de volta também são recebidas juntas. Não apenas isso, mas o servidor também tenta gerar respostas máximas para essas operações de entrada de uma só vez.
Assim, as 100 operações que foram enviadas ao servidor em chamadas dedicadas são recebidas pelo servidor em uma única chamada. E os resultados das operações obtidas são enviados em uma chamada pelo servidor. Essa técnica ajuda a dimensionar o sistema tremendamente.
NCache Adicionar ao carrinho Operações do lado do cliente Canalização em NCache
Replicação em segundo plano escalável na réplica de partição
Qualquer operação de atualização que o cliente execute em um nó de servidor precisa ser replicada para tolerância a falhas e alta disponibilidade para o servidor de réplica. NCache servidor faz essa replicação em segundo plano sem qualquer envolvimento do cliente. Além de ser um processo em segundo plano, essa replicação é feita em massa para economizar o máximo de custo. Esse processo induz a escalabilidade, pois todas as operações estão sendo dimensionadas por meio da replicação em segundo plano e também torna seu cache altamente disponível. Ganha-ganha.
Cache Write-Behind para Escalabilidade
Se o cliente quiser gravar dados no banco de dados, a mesma solicitação enviada ao servidor gravará esses dados no cache e no banco de dados.
Uma implementação assíncrona deste recurso é Escrever atrás que permite que seu servidor acesse o banco de dados sem qualquer atraso computacional. Dessa forma, seu banco de dados e cache permanecem sincronizados, mantendo o mesmo desempenho desejado de um cache na memória.
Se o NCache cliente envia ao servidor de cache uma solicitação com Write-behind habilitado, o servidor grava esses dados no cache, retorna o controle para o cliente e usa um sistema de lote em segundo plano para garantir que os dados também sejam armazenados no banco de dados. Esse mecanismo é o que torna seu aplicativo escalável.
Escalabilidade por meio do pool de objetos no gerenciamento de memória
No ambiente .NET, quando o Garbage Collector (GC) automático é ativado, todas as atividades em andamento no aplicativo são interrompidas, o que cria pausas na computação de dados na memória. Essas pausas causam um grande impacto no desempenho do seu aplicativo. Quanto maiores objetos você criar, mais o GC será ativado e maior será esse acerto.
Para evitar essas longas pausas de GC, NCache ser um cache .NET nativo usa a técnica Object Pooling como seu próprio gerenciamento de memória. Nesse mecanismo, NCache o servidor agrupa objetos e os reutiliza em vez de criar novos, o que resulta em menor necessidade de invocar o GC. Quanto menor for essa necessidade, mais desempenho você obterá de seu aplicativo e, portanto, mais escalabilidade.
NCache Adicionar ao carrinho Operações do lado do servidor Canalização em NCache
Cache de cliente para induzir escalabilidade
Quanto à escalabilidade, Cache de cliente revela-se uma das características mais importantes da NCache.
O cache do cliente armazena os dados usados com mais frequência de seu cache clusterizado na mesma máquina em que seu aplicativo está sendo executado. O uso do Client Cache entre seu aplicativo e o cache clusterizado fornece um recurso de cache local que reside próximo ao seu aplicativo. Esse cache atenderá a maioria das solicitações de leitura do seu aplicativo, o que inevitavelmente resultará em redução de custo de E/S. Assim, você não apenas obtém acesso rápido a dados atualizados, mas seu aplicativo também é dimensionado.
Esse gráfico de escalabilidade pode ser otimizado ainda mais se você passar do cache do cliente OutProc para o cache do cliente InProc, reduzindo o custo de acesso ao nó local.
Concluindo a Escalabilidade em NCache
Ao obter o melhor de sua aplicação, você pode encontrar dois grandes contratempos. Ou a carga computacional em seu cache aumenta ou você atinge os limites definidos de armazenamento de dados, os quais podem ser significativamente aprimorados com o dimensionamento NCache. Você tem controle total sobre NCache que é rico em recursos prontos para trazer escalabilidade em seu ambiente. Então, o que você está esperando? Obtenha NCaching!
NCache Adicionar ao carrinho Baixar NCache Comparação de edições