NCache é um cache distribuído em memória de código aberto para .NET, Java, Python e Node.js. Desenvolvido para cargas de trabalho com alto volume de transações, oferece velocidade extrema e escalabilidade linear para remover gargalos de desempenho e suportar processamento extremo de transações (XTP). NCache também fornece replicação inteligente de dados e autocorreção, clustering dinâmico para alta disponibilidade.
NCache Possui clustering de cache dinâmico com autorrecuperação baseado em uma arquitetura ponto a ponto para fornecer 100% de disponibilidade. Esses clusters são baseados em TCP; cada servidor no cluster é um par. Isso permite a expansão ou remoção de servidores do cluster sem interrupção, seja do cache ou da sua aplicação.
NCache O cluster possui uma arquitetura de cluster ponto a ponto. Isso significa que não há nós mestre/escravo, e cada servidor é um ponto. No entanto, o Coordenador de Clientes é o nó mais antigo do cluster. Se ele cair, o próximo nó mais antigo se torna automaticamente o coordenador.
Perspectiva do Arquiteto
Ao contrário das arquiteturas mestre-escravo que criam um único ponto de falha, NCache Utiliza um modelo ponto a ponto 100% descentralizado. Isso garante que, mesmo que o Coordenador do Cluster fique inativo, o próximo nó mais antigo assuma imediatamente o gerenciamento, mantendo as operações do cluster ininterruptas.
Este Coordenador de Cluster gerencia todas as operações do cluster e outras informações de configuração de cache. Ele também gerencia a integridade do cluster e remove à força quaisquer servidores de cache que estejam apenas parcialmente conectados aos outros servidores do cluster.
NCache Agrupamento dinâmico e propagação de mapas de distribuição em tempo real.
Clustering dinâmico
O núcleo do NCache A alta disponibilidade é um cluster dinâmico, que permite a adição ou remoção de servidores sem tempo de inatividade, propagando as alterações de membros via TCP em tempo real. Como discutido, NCache tem um arquitetura de cluster dinâmico. Isso permite NCache estar sempre em funcionamento, mesmo quando tais alterações estão sendo feitas.
O clustering dinâmico permite que você faça o seguinte:
-Adicionar/remover servidores de cache em tempo de execução sem parar o cache ou seu aplicativo.
-Associação ao cluster é atualizado em tempo de execução e propagado para todos os servidores no cluster e todos os clientes conectados ao cluster.
NCache Resolve cenários de "cérebro dividido" usando um algoritmo de detecção inteligente que reconcilia automaticamente subclusters divergentes para restaurar a integridade dos dados sem intervenção manual. Outra parte de NCache O Clustering Dinâmico é seu Detecção e Recuperação Inteligente de Cérebro Dividido Capacidade. O Split Brain ocorre quando, devido a problemas de rede, a conexão entre os servidores de cache é interrompida. Isso causa a formação de vários subclusters independentes, com cada um deles assumindo que os outros caíram e que ele é o único cluster restante.
Nesses casos, quando os servidores de cache saem do cluster abruptamente, os servidores restantes NCache Os servidores continuam tentando se reconectar. Mas, enquanto isso acontece, cada subcluster atualiza os dados de forma independente, criando múltiplas versões não sincronizadas dos dados.
Depois que o problema de rede for resolvido, NCache aciona automaticamente o Split Brain. Isso é feito automaticamente, decidindo quais servidores de cache podem manter seus dados (vencedores) e quais servidores devem cedê-los (perdedores). Isso é necessário, pois os servidores do cluster perdedor precisam se juntar novamente ao cluster vencedor como novos nós. Há alguma perda de dados, mas o resultado final é uma restauração rápida do cluster de cache sem qualquer intervenção humana.
NCache também permite que você adicionar ou remover clientes em tempo de execução sem interromper o cache ou qualquer um dos seus outros clientes. Ao adicionar um cliente, ele precisa apenas de um único servidor de cache no cluster para estabelecer uma conexão. Após se conectar a esse servidor, ele recebe as informações necessárias sobre a associação ao cluster e a topologia de cache. Em seguida, decide a quais outros servidores se conectar.
-Cache particionado/partição-réplica: O cliente se conecta a todas as partições do servidor de cache (mas não às réplicas, pois estas se comunicam apenas com suas partições). Isso permite que o cliente direcione a partição apropriada para operações de leitura e gravação. E, se um novo servidor for adicionado ao cluster, o cliente recebe informações atualizadas sobre a associação ao cluster e se conecta também a esse servidor recém-adicionado.
-Cache replicado: No caso de Cache replicado, o cliente se conecta a apenas um servidor de cache no cluster, mas de forma balanceada para garantir que todos os servidores de cache tenham o mesmo número de clientes. Assim, todas as leituras e gravações são possíveis em um único servidor de cache. Quando um novo servidor é adicionado ao cluster, o cliente obtém essas informações do servidor de cache e se reconecta a um novo servidor, se necessário.
-Cache espelhado: No caso de Cache espelhado, o cliente se conecta apenas ao único nó ativo neste cluster de 2 nós. Se o cliente se conectar ao nó passivo, este último informa o cliente sobre o nó ativo, e o cliente se reconecta automaticamente ao nó ativo. Se o nó ativo cair e o nó passivo se tornar ativo, todos os clientes se conectarão automaticamente ao novo nó ativo.
NCache Escalabilidade em tempo de execução para servidores e clientes de cache.
Configuração dinâmica
Conforme mencionado nas seções Conexões dinâmicas de cliente e Clustering dinâmico, NCache fornece configuração dinâmica do cache e dos clientes. Esta seção tem como objetivo explicar como essa configuração de tempo de execução funciona.
-Configuração de cache: Quando um cache é criado por meio de ferramentas de administração, essas informações de configuração são copiadas para todos os servidores de cache conhecidos naquele momento. Da mesma forma, qualquer novo servidor adicionado ao cluster em tempo de execução recebe toda a configuração de cache atualizada e a copia para seu disco local.
-Mudanças de configuração de aplicação a quente: Você pode alterar algumas das configurações de cache em tempo de execução por meio de "Aplicação a Quente". Por exemplo, ao alterar o Tamanho da memória cache ou habilitando Compressão. Nesse caso, as informações de configuração atualizadas são propagadas para todos os servidores de cache em tempo de execução e salvas em seus discos. Parte dessas informações também é enviada a todos os clientes, conforme necessário.
-Mapa de Distribuição (Cache Particionado/Partição-Réplica): Isso é criado quando um cache é iniciado e, em seguida, copiado para todos os servidores e clientes de cache. Este Mapa de Distribuição contém informações sobre quais buckets (de um total de 1000 buckets no cache clusterizado) estão localizados em qual partição.
Todos os servidores de cache no cluster são conectados via TCP. E cada servidor de cache é conectado a todos os outros servidores de cache no cluster, incluindo quaisquer novos servidores adicionados em tempo de execução. NCache fornece várias maneiras de garantir que todas as conexões dentro do cluster sejam mantido vivo apesar da falha de conexão. Essas falhas geralmente ocorrem devido a uma falha de rede causada por roteadores, firewalls ou um problema com a placa de rede/driver de rede.
-Novas tentativas de conexão:Se a conexão entre dois servidores de cache for interrompida, NCache tenta automaticamente várias tentativas para restabelecer esta conexão. Estas novas tentativas ocorrer durante o período de tempo limite especificado pelo usuário.
-Batimento cardíaco mantido vivo: NCache Também possui um recurso para que cada servidor de cache continue enviando pequenos pacotes de dados como um heartbeat para todos os outros servidores. Isso garante que, se houver um problema de soquete de rede, os servidores de cache o detectarão e o corrigirão por meio de novas tentativas.
-Servidores Parcialmente Conectados:Em alguns casos, problemas de rede podem dividir o cluster em subclusters (um "Cérebro dividido"). NCache detecta e resolve isso automaticamente quando a rede é restaurada, decidindo qual cluster mantém seus dados e exigindo que os outros se juntem novamente.
Failover de conexão com clientes
O failover de conexão em clientes é semelhante a novas tentativas de failover de cluster, heartbeats e reconexão automática a servidores íntegros.
-Novas tentativas de conexão: Em termos de failover, as tentativas de conexão são as mesmas nos níveis de cluster e cliente. No entanto, se uma conexão entre um cliente e servidores de cache for interrompida, NCache cliente faz automaticamente múltiplas tentativas de conexão para estabelecer esta conexão. Essas tentativas ocorrem durante o período de tempo limite. Se uma conexão não puder ser estabelecida, uma exceção será lançada para o aplicativo cliente para que ele possa lidar com a situação.
-Batimento cardíaco mantido vivo: Igual ao Failover de Conexão dentro do Cluster.
-Clientes Parcialmente Conectados (Cache Particionado/Réplica de Partição)Às vezes, apesar das novas tentativas, a conexão não é restaurada a tempo, então o cliente presume que outros servidores estão inacessíveis, mesmo que não estejam. Assim, no caso do Cache Particionado/Partição-Réplica, ele interage com outros servidores para ler ou gravar todos os dados, mesmo que seu Mapa de Distribuição informe que o servidor com o qual ele não consegue se comunicar possui os dados. Nesse caso, o outro servidor de cache atua como intermediário para operar com sucesso.
NCache fornece uma variedade de topologias de cache para permitir escalabilidade linear, mantendo a consistência e a confiabilidade dos dados. O objetivo é oferecer suporte a aplicações desde pequenos caches de dois servidores até grandes clusters com centenas de servidores. Uma topologia de cache é essencialmente uma estratégia de armazenamento de dados, replicação de dados e conexões de clientes em um cache clusterizado abrangendo vários servidores de cache.
Dados de referência versus dados transacionais
Dados de referência não mudam com muita frequência, e você os armazena em cache para atender a solicitações frequentes e evitar acessos dispendiosos ao banco de dados, atualizando-os apenas ocasionalmente. Dados transacionais, por outro lado, são dados que mudam com muita frequência, e você pode atualizá-los com a mesma frequência com que os lê.
No início, os caches eram usados principalmente para dados de referência, pois dados que mudavam com frequência ficavam obsoletos e fora de sincronia com os dados mais recentes do banco de dados. No entanto, NCache agora fornece recursos muito poderosos que permitem que o cache mantenha seus dados em cache sincronizados com o banco de dados.
Todos NCacheAs topologias de cache do são boas para dados de referência, mas algumas são particularmente benéficas para dados transacionais. Portanto, você precisa determinar quantas leituras e gravações fará para descobrir qual topologia é a melhor para você. Além disso, algumas topologias de cache não escalam tanto, especialmente para atualizações, então leve isso em consideração também.
Abaixo está uma lista de topologias de cache junto com seu impacto em leituras versus gravações.
-Cache particionado (sem replicação):Esta é a topologia mais rápida, mas não replica dados, então há perda de dados se um servidor de cache cair.
-Cache de réplica de partição (Mais popular): Esta topologia é super-rápida tanto para leitura quanto para gravação. No entanto, ela também replica dados para garantir a confiabilidade sem comprometer a confiabilidade. A melhor combinação de velocidade/escalabilidade e confiabilidade de dados.
-Cache replicado: Ótimo para ambientes menores. Cada servidor mantém um backup completo do cache, garantindo alta confiabilidade dos dados e tolerância a falhas. Super-rápido e linearmente escalável para leituras. Moderadamente rápido para gravações em um cluster de 2 nós, mas não escala à medida que você adiciona mais servidores, pois as gravações são feitas de forma síncrona em todos os servidores de cache.
-Cache espelhado: Esta topologia é muito boa para ambientes menores. Ela oferece operações de gravação mais rápidas do que o Cache Replicado para 2 nós ativos/passivos. Mas não escala além disso.
-Cache de cliente: Ótimo para casos de uso intensivo de leitura com todas as topologias de cache. Permite atingir a velocidade InProc com um cache distribuído.
O Cache Particionado é a topologia de cache mais rápida e escalável para leituras e gravações. Projetado para grandes clusters, ele oferece leituras e gravações rápidas mesmo sob picos de carga. No entanto, ele não replica dados. Portanto, não há backup em caso de queda de um servidor.
NCache Cache particionado para escalabilidade linear e distribuição.
Aqui estão algumas características do Cache Particionado.
-Partições Dinâmicas: O cache é dividido em partições em tempo de execução, com cada servidor de cache tendo uma partição. Há um total de 1000 buckets por cache clusterizado, distribuídos uniformemente por todas as partições. Essencialmente, adicionar/remover um servidor de cache resultará na criação/exclusão de partições em tempo de execução. A atribuição de buckets de partição não muda quando dados são adicionados ao cache. Em vez disso, ela só muda quando partições são adicionadas ou excluídas, ou quando dados são carga balanceada. Este rebalanceamento se refere ao processo de transferência de estado que move os buckets e seus dados para as partições de destino
-Mapa de Distribuição: O cluster de cache cria um Mapa de Distribuição que contém informações sobre quais buckets existem em quais partições. O Mapa de Distribuição é atualizado sempre que há uma transferência de estado. O Mapa de Distribuição é propagado para todos os servidores e clientes. Os clientes usam isso para descobrir com qual servidor de cache se comunicar para qualquer operação de leitura/gravação.
-Balanceamento Dinâmico de Dados: Como todos os buckets são baseados em HashMap e os dados são armazenados com base em um algoritmo de hash aplicado às chaves, isso pode fazer com que alguns buckets armazenem mais dados do que outros, dependendo das chaves utilizadas. Se esse desequilíbrio ultrapassar um limite configurável, NCache desloca automaticamente os baldes para reequilibrar esta carga.
-Clientes se conectam a TODAS as partições: Os clientes se conectam a todos os servidores de cache para que possam ler ou gravar dados diretamente em uma única solicitação do servidor. Se a conexão de um cliente com um servidor de cache cair, ele solicitará a um dos outros servidores que leia ou grave um item em cache existente no servidor, mas que ele não consegue acessar. E esse servidor ajuda o cliente a conseguir isso.
OBSERVAÇÃO: Tudo o que foi mencionado em Cache particionado também é verdade aqui.
Assim como Cache ParticionadoO Cache de Partições e Réplicas é uma topologia de cache extremamente rápida e linearmente escalável para leituras e gravações. Destina-se a clusters de cache maiores, e o desempenho de leituras e gravações permanece muito bom mesmo sob picos de carga. Além disso, o Cache de Partições e Réplicas também replica dados. Portanto, não há perda de dados mesmo se um servidor de cache cair.
Cache de réplica de partição é nossa topologia de cache mais popular porque oferece o melhor dos dois mundos: desempenho/escalabilidade linear e confiabilidade de dados.
NCache Cache de partições e réplicas para confiabilidade de dados e escalabilidade linear.
Abaixo estão algumas das características do Cache de Réplica de Partição.
-Partições Dinâmicas: Igual ao Cache Particionado.
-Réplicas Dinâmicas: Quando partições são criadas ou excluídas em tempo de execução, suas réplicas também são criadas ou excluídas. As réplicas estão sempre em um servidor de cache diferente e há apenas uma réplica para cada partição.
-Replicação Assíncrona: Por padrão, a replicação de uma partição para sua réplica é assíncrona. As gravações do cliente (adicionar/atualizar/excluir) atingem a partição e são enfileiradas para replicação assíncrona em massa para a réplica. Isso melhora o desempenho, mas apresenta um pequeno risco de perda de dados caso uma partição fique inativa e nem todas as atualizações tenham sido replicadas para a réplica. No entanto, isso é extremamente raro.
-Sincronizar replicação: Se seus dados forem muito sensíveis (por exemplo, dados financeiros) e você não puder se dar ao luxo de ter dados desatualizados, poderá escolher a opção Replicação Sincronizada na configuração. Quando selecionada, todas as operações de gravação serão executadas de forma síncrona na Partição e na Réplica até serem consideradas concluídas. Dessa forma, se a operação falhar na Réplica, ela também falhará na Partição. Portanto, é garantido que todos os dados no cache (tanto na Partição quanto na Réplica) sejam sempre consistentes. No entanto, isso tem implicações no desempenho, pois é mais lento que a Replicação Assíncrona.
-Mapa de Distribuição: Igual ao Cache Particionado.
-Balanceamento dinâmico de dados (partições e réplicas): Igual ao Cache Particionado. No entanto, no Cache de Partições e Réplicas, o balanceamento de dados também ocorre nas Réplicas quando as partições são balanceadas.
-Clientes se conectam a TODAS as partições: O mesmo que o Cache Particionado. No entanto, no Cache de Partições e Réplicas, os clientes se comunicam apenas com as partições e não com suas réplicas. Isso ocorre porque as réplicas são passivas e as partições se comunicam apenas com suas réplicas ao replicar dados para elas.
O Cache Replicado fornece confiabilidade de dados por meio da replicação em dois ou mais servidores de cache. É muito rápido e escalável para leituras. No entanto, não é escalável para gravações, pois são sincronizadas com todos os servidores do cluster. Para um cluster de 2 nós, as gravações são mais rápidas que as do seu banco de dados, mas não tão rápidas quanto um Cache de Réplica de Partição. Para clusters de 3 ou mais servidores, o desempenho de gravação diminui e, eventualmente, se torna dispendioso.
NCache Cache replicado para alta confiabilidade de dados e escalabilidade de leitura.
Abaixo estão algumas das características do Cache Replicado.
-Nós replicados dinâmicos: Você pode adicionar ou remover servidores de cache em tempo de execução a um cache existente sem interromper o cache ou o aplicativo. O servidor recém-adicionado faz uma cópia (réplica) de todo o cache para si mesmo. Além disso, o servidor removido atualiza a associação ao cluster, e todos os seus clientes são movidos para outros servidores.
-Cache inteiro em cada nó: O cache inteiro é copiado para todos os servidores do cluster.
-As leituras são escaláveis: As leituras são super-rápidas e escaláveis quando você adiciona mais servidores. No entanto, adicionar mais servidores não aumenta o tamanho do cache, pois o servidor recém-adicionado é apenas mais uma cópia do cache inteiro.
-As gravações são síncronas: As gravações são muito rápidas para um cluster de 2 nós e mais rápidas do que as do seu banco de dados. Mas as gravações são síncronas, o que significa que cada operação de gravação não é concluída até que todos os servidores de cache sejam atualizados de forma síncrona. Portanto, as gravações não são tão rápidas quanto outras topologias.
-O cliente se conecta apenas a um servidor: Cada cliente de cache se conecta a apenas um servidor no cluster com base em um algoritmo de balanceamento de carga determinado pelos servidores de cache. Se este servidor de cache cair, o cliente se conecta ao próximo servidor da lista. Você também pode especificar manualmente o servidor ao qual deseja se conectar no arquivo de configuração de cache se não quiser usar o balanceamento de carga.
O Cache Espelhado é um cluster de cache ativo/passivo de 2 nós, projetado para ambientes menores. Ele fornece confiabilidade de dados por meio de replicação/espelhamento assíncrono do nó ativo para o nó passivo. É muito rápido tanto para leitura quanto para gravação (na verdade, suas operações de gravação são mais rápidas que o Cache Replicado), mas não pode ser expandido além deste cluster ativo/passivo de 2 nós.
NCache Cache espelhado para alta disponibilidade ativa/passiva de 2 nós.
Abaixo estão algumas das características do Cache Espelhado.
-1 servidor ativo e 1 servidor passivo: O Cache Espelhado possui apenas dois servidores. Um é ativo e o outro é passivo. Ambos possuem uma cópia de todo o cache. Se o servidor ativo cair, o servidor passivo se torna ativo automaticamente. E, se o servidor ativo anteriormente inativo voltar a funcionar, ele será tratado como um servidor passivo, a menos que você altere essa designação por meio das ferramentas de administração em tempo de execução.
-Conexões de clientes com suporte de failover: Cada cliente de cache se conecta apenas ao servidor ativo no cluster para realizar suas operações de leitura e gravação. Se este servidor ativo cair, todos os clientes se conectarão automaticamente ao servidor passivo que já estiver ativo. Este suporte a failover garante que o Cache Espelhado esteja sempre ativo e em execução, mesmo se um servidor cair.
-Espelhamento Assíncrono: Quaisquer gravações realizadas no servidor ativo são espelhadas/replicadas de forma assíncrona para o servidor passivo. Isso garante que o servidor passivo esteja sempre sincronizado com os dados mais recentes, caso o servidor ativo fique inativo e o servidor passivo precise se tornar ativo. O espelhamento assíncrono também significa desempenho mais rápido, pois múltiplas gravações são realizadas como uma operação em MASSA no servidor passivo.
O Cache do Cliente é local para o seu servidor web/de aplicativo e fica muito próximo do seu aplicativo, permitindo que você armazene em cache os dados que está lendo do cache distribuído (independentemente da topologia de cache). Embora seja local para o seu aplicativo, um Cache do Cliente não é independente. Em vez disso, ele está sempre sincronizado com o cache em cluster. Isso garante que os dados no cache do cliente nunca fiquem obsoletos.
Você pode ver isso como um "cache em cima de outro cache", o que melhora ainda mais o desempenho e a escalabilidade do seu aplicativo. Se você usar o Cache do Cliente no modo InProc, poderá atingir a velocidade InProc. NCache oferece duas variações de cache de cliente: o cache de cliente regular e o cache de cliente de dados completos. Cada uma delas foi projetada para aumentar o desempenho, reduzindo as chamadas de rede e mantendo a sincronização com o cache em cluster.
Cache de cliente regular
O Cache de Cliente Regular atua como um cache local (L1) na máquina cliente, mantendo um subconjunto de dados acessados com frequência próximo ao aplicativo. Isso reduz as viagens repetidas de rede ao cache clusterizado (L2). Para manter a consistência, o Cache de Cliente permanece sincronizado com o cache clusterizado, recebendo notificações de alterações. Como ele não contém o conjunto de dados completo, todas as consultas ainda são executadas no cache clusterizado (L2).
Cache de cliente de dados completos
O Cache Completo de Dados do Cliente vai além, armazenando em cache conjuntos de dados inteiros localmente na máquina do cliente. Ele oferece os seguintes benefícios e opções:
-Armazena em cache conjuntos de dados completos localmente: Armazena em cache todas as entradas de classes .NET selecionadas, tornando os conjuntos de dados completos instantaneamente disponíveis.
-Velocidade quase em processamento: O cache de cliente de dados completos fornece operações de leitura mais rápidas e permite que consultas SQL sejam executadas inteiramente no cache do cliente, já que o conjunto de dados completo está presente localmente.
-Sincronização com Cache Clusterizado: Ele permanece totalmente sincronizado com o cache clusterizado para garantir consistência.
-Aplicação de consulta rigorosa: Essa imposição garante que as consultas sejam executadas somente quando o conjunto de dados completo estiver disponível localmente. Se o conjunto de dados estiver parcialmente carregado, a consulta falhará imediatamente, sem retornar ao cache clusterizado.
-Leituras locais estritas: Isso força todas as operações de leitura a serem atendidas estritamente pelo Cache do Cliente. Se uma chave não for encontrada localmente, ele retornará uma falha de cache em vez de buscá-la no cache clusterizado.
Embora seja local para seu aplicativo, um Cache de Cliente não é autônomo. Em vez disso, ele é sempre sincronizado com o cache clusterizado. Isso garante que os dados no cache do cliente nunca fiquem obsoletos.
NCache Cache do cliente para desempenho InProc em menos de um milissegundo.
Abaixo estão algumas das características do Cache Espelhado.
-Bom para casos de leitura intensiva: O Cache do Cliente é ideal para casos de uso com uso intensivo de leitura. No entanto, se o número de gravações for igual ao de leituras, o Cache do Cliente será, na verdade, mais lento, pois uma operação de gravação envolverá a atualização dos dados em dois locais.
-Velocidade mais rápida como um cache local (InProc/OutProc): Um Cache de Cliente existe dentro do processo do seu aplicativo (modo InProc) ou localmente no seu servidor web/de aplicativo (modo OutProc). Em ambos os casos, ele melhora significativamente o desempenho do seu aplicativo em comparação com a simples busca desses dados no cache clusterizado. O modo InProc permite armazenar objetos em cache no seu "heap de aplicativo", o que lhe proporciona uma "Velocidade InProc" incomparável a qualquer cache distribuído.
-Não é um cache independente: Um cache de cliente pode ser um cache local, mas não é um cache independente. Ele é sincronizado com o cache em cluster. Isso significa que, se outro cliente atualizar dados no cache em cluster que você tem no seu cache de cliente, o cache em cluster notificará o cache de cliente para se atualizar com a cópia mais recente desses dados. E isso é feito de forma assíncrona, mas imediata.
-Sincronização Otimista/Pessimista: Por padrão, o Client Cache usa a sincronização otimista, o que significa que o NCache O cliente assume que quaisquer dados que o Cache do Cliente possua são a cópia mais recente. Se o Cache do Cliente não tiver dados, o Cliente os busca no cache clusterizado, os coloca no Cache do Cliente e os retorna ao aplicativo cliente. Sincronização Pessimista significa que o Cliente do Cache primeiro verifica se o cache clusterizado possui uma versão mais recente de um item armazenado em cache. Em caso afirmativo, o cliente os busca, os coloca no Cache do Cliente e os retorna ao aplicativo cliente. Caso contrário, ele retorna o que estiver no Cache do Cliente.
-Plug-in sem qualquer alteração de código: Utilizar o Cache do Cliente não envolve nenhuma alteração no código do aplicativo. Em vez disso, você precisa de uma simples alteração de configuração.
NCache A escalabilidade linear é alcançada através do uso de um mapa de distribuição de 1000 buckets para particionar os dados em vários nós de servidor, permitindo que o cluster lide com o aumento da carga de transações à medida que novos hardwares são adicionados em tempo de execução.
NCache Utiliza uma arquitetura 100% ponto a ponto, onde cada servidor é um par; se algum nó (incluindo o Coordenador do Cluster) falhar, os nós restantes elegem automaticamente um novo coordenador e reequilibram o cluster por meio de sinais de pulsação baseados em TCP para manter 100% de disponibilidade.
Embora ambos ofereçam escalabilidade linear, o Partitioned Cache proporciona a maior velocidade sem redundância de dados, enquanto o Partition-Replica Cache é a opção mais popular por equilibrar desempenho extremo com alta disponibilidade, criando réplicas passivas de cada partição.
NCache Resolve cenários de "cérebro dividido" usando um algoritmo inteligente de detecção e recuperação que reconcilia automaticamente subclusters divergentes e restaura a integridade dos dados sem necessidade de intervenção manual.
An NCache O cache do cliente (L1) proporciona velocidade InProc inferior a um milissegundo, armazenando um subconjunto de dados acessados com frequência diretamente no servidor de aplicativos, o que reduz drasticamente a latência da rede para o cache em cluster (L2).
Sim, NCache Suporta clustering dinâmico, o que permite a expansão ou remoção de membros do servidor sem tempo de inatividade, atualizando e propagando automaticamente o mapa de distribuição do cluster para todos os clientes em tempo real.