Diferença entre replicação do Redis e fragmentação do Redis (cluster)

StackOverflow https://stackoverflow.com/questions/2139443

  •  22-09-2019
  •  | 
  •  

Pergunta

  1. Alguém sabe a diferença entre replicação redis e fragmentação redis?
  2. Para que servem?O Redis armazena dados na memória. Como isso afeta a replicação/fragmentação?
  3. É possível usar os dois juntos?

Obrigado!

Foi útil?

Solução

O sharding é quase a antítese da replicação, embora sejam conceitos ortogonais e funcionem bem juntos.

Sharding, também conhecido como particionamento, está dividindo os dados por chave; Embora a replicação, também conhecida como espelhamento, é copiar todos os dados.

O sharding é útil para aumentar o desempenho, reduzindo a carga de acerto e memória em qualquer recurso. A replicação é útil para alta disponibilidade de leituras. Se você ler de várias réplicas, também reduzirá a taxa de acerto em todos os recursos, mas o requisito de memória para todos os recursos permanece o mesmo. Deve-se notar que, embora você possa escrever para um escravo, a replicação é mestre-> escravo. Portanto, você não pode escalar escreve dessa maneira.

Suponha que você tenha as seguintes tuplas: [1: Apple], [2: banana], [3: cereja], [4: durian] E temos duas máquinas A e B. Com sharding, podemos armazenar chaves 2,4 em máquina a; e chaves 1,3 na máquina B. Com replicação, armazenamos as chaves 1,2,3,4 na máquina A e 1,2,3,4 na máquina B.

O sharding é normalmente implementado executando um hash consistente na chave. O exemplo acima foi implementado com a seguinte função hash h (x) {return x%2 == 0? A: B}.

Para combinar os conceitos, podemos replicar cada fragmento. Nos casos acima, todos os dados (2,4) da máquina A podem ser replicados na máquina C e todos os dados (1,3) da máquina B podem ser replicados na máquina D.

Qualquer loja de valores-chave (da qual Redis é apenas um exemplo) suporta sharding, embora certas funções de chave cruzada não funcionem mais. Redis suporta a replicação pronta para fora.

Outras dicas

Em palavras simples, a diferença fundamental entre os dois conceitos é que Sharding é usado para dimensionar gravações, enquanto Replicação é usada para dimensionar leituras.Como Alex já mencionou, a Replicação também é uma das soluções para alcançar HA.

Sim, ambos normalmente são usados ​​juntos se você considerar como os fragmentos podem ser replicados entre nós em um cluster.

Com relação à sua terceira pergunta, em vez da opção RAM-flush, é melhor usar o arquivo Redis Append Only (AOF).Com apenas um custo menor (em termos de velocidade de gravação), você obtém muito mais confiabilidade em suas gravações.É bem parecido com o log binário do mysql.O 1 fsync/segundo é a opção recomendada para uso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top