O que é um cache distribuído?

Estou confuso sobre o conceito de Cache distribuído. Eu meio que sei o que é da pesquisa no google. Um cache distribuído pode abranger vários servidores para que possa crescer em tamanho e em capacidade transacional. No entanto, não entendo realmente como funciona ou como distribui os dados.

Por exemplo, digamos que temos Dados 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 e 2 servidores de cache A e B. Se usamos cache distribuído, então uma das soluções possíveis é que os dados 1, 3, 5, 7, 9 são armazenados no servidor de Cache A, e 2, 4, 6, 8, 10 são armazenados no servidor de cache B.

Então, isto está correcto ou será que não percebi bem?

A segunda pergunta é que eu normalmente ouvi a palavra nó servidor . O que é isto? No exemplo acima, o servidor A é um nó de servidor, certo?

Terceira pergunta, se um servidor (digamos servidor A) cair, o que podemos fazer sobre isso? Quero dizer, se meu exemplo acima está correto, não podemos obter os dados 1, 3, 5, 7, 9 de cache quando O servidor A está em baixo, então o que poderia o servidor de Cache fazer neste caso?

Author: halfer, 2013-03-17

2 answers

  1. Sim, metade dos dados no servidor A, e metade no servidor b seria um cache distribuído. Existem muitos métodos de distribuição dos dados, embora algum tipo de hashing das chaves parece ser mais popular.

  2. Os Termos servidor e nó são geralmente intercambiáveis. Um nó é geralmente uma única unidade de alguma coleção, muitas vezes chamado de aglomerado. Um servidor é geralmente uma única peça de hardware. Em erlang, você pode executar várias instâncias do tempo de execução erlang em um um único servidor, e assim você teria vários nós erlang... mas geralmente você gostaria de ter um nó por servidor para uma programação mais ótima. (Para linguagens e plataformas Não distribuídas você tem que gerenciar seus processos com base em suas necessidades.)

  3. Se um servidor cai, e é um servidor de cache, então os dados teriam que vir de sua fonte original. EG: um cache é geralmente um banco de dados baseado em memória projetado para recuperação rápida. Os dados no cache só ficam por aí. desde que seja usado regularmente, e eventualmente será purgado. Mas para sistemas distribuídos onde você precisa de persistência, uma técnica comum é ter múltiplas cópias. EG: você tem servidores A, B, C, D, E E F. para o dado 1, você o colocaria em A, e então uma cópia em B E C. Couchbase e Riak fazem isso. Para os dados 2, pode ser em B, e então copia em C E D. desta forma, se qualquer servidor for abaixo você ainda tem duas cópias.

 32
Author: nirvana, 2013-03-17 05:48:29

Já há algum tempo que uso soluções de cache distribuídas (NCache , AppFabric etc) e vou responder às três perguntas com base na minha experiência com o Cache Distribuído.

1: a solução de cache distribuída permite-lhe manter os dados em todos os servidores, criando um cache cluster. Vamos dizer que você tem 2 servidores de cache(nós do servidor) e você adicionou 10 itens em seu cache. Idealmente, 5 itens devem estar presentes em ambos os nós do servidor, uma vez que a carga de dados fica distribuído entre o número de Servidores no seu cache cluster. Isto é geralmente conseguido com a ajuda de hashing e algoritmos de distribuição de dados inteligentes. Como resultado, sua carga de pedido de dados também é dividida entre todos os servidores de cache e seu crescimento linear na capacidade transnacional como Mais Servidores no cache cluster.

2: um cache cluster pode conter muitas máquinas de servidor que também são chamados nós de servidor. Sim, O Servidor A é um nó de servidor ou máquina de servidor no seu exemplo.

3: Os sistemas de cache tipicamente distribuídos são muito fiáveis utilizando suporte de replicação. Se um ou mais servidores forem abaixo e você tiver a replicação ligada, então não haverá perda de dados ou tempo de inatividade. NCache tem diferentes tipologias para lidar com isso, como topologia replicada e partição de topologia réplica, onde os dados de cada servidor são replicados para o outro servidor também. No caso de um servidor cair, os dados replicados desse servidor são automaticamente disponibilizados do nó do servidor sobrevivente.

No seu exemplo, os dados do servidor A(1, 3, 5, 7, 9) é replicado no servidor B(2, 4, 6, 8, 10) e vice-versa. Se o servidor A descer, os dados do servidor a que está presente no servidor B serão disponibilizados e usados a partir daí para que não ocorra perda de dados. Assim, se o servidor A descer e os pedidos de aplicação de dados (1), estes dados serão recuperados do Servidor B como o servidor B contém backup de todos os dados do servidor A. Isto é sem descontinuidade para o seu aplicações e é gerenciado automaticamente pelo sistema de caching.

 0
Author: Shoeb Lodhi, 2018-06-04 06:33:07