Pregunta

  1. Alguien sabe la diferencia entre la replicación Redis y Redis sharding?
  2. ¿Qué se utilizan para? Redis almacena los datos en la memoria, ¿cómo afecta esto a la replicación / sharding?
  3. ¿Es posible usar los dos juntos?

Gracias!

¿Fue útil?

Solución

Sharding es casi la antítesis de la replicación, aunque son conceptos ortogonales y trabajan bien juntos.

Sharding, también conocido como la partición, es dividir los datos por clave; Mientras que la replicación, también conocido como reflejo, es copiar todos los datos.

Sharding es útil para aumentar el rendimiento, reducir la carga de golpe y la memoria en cualquier recurso uno. La replicación es útil para la alta disponibilidad de las lecturas. Si se lee desde varias réplicas, también puede reducir la tasa de éxito en todos los recursos, pero el requisito de memoria para todos los recursos sigue siendo el mismo. Cabe señalar que, si bien puede escribir a un esclavo, es la replicación maestro-> única esclavo. Por lo que puede no escribe escala de esta manera.

Suponga que tiene las siguientes tuplas: [1: Apple], [2: Plátano], [3: Cereza], [4: Durian] y tenemos dos máquinas A y B. Con sharding, podríamos almacenar claves 2 , 4 en la máquina de a; y las teclas de 1,3 en la máquina B. Con la replicación, que almacenan claves 1,2,3,4 en la máquina A y B 1,2,3,4 en la máquina.

Sharding normalmente se implementa mediante la realización de un hash consistente en consecuencia. El ejemplo anterior se implementó con la siguiente función hash h (x) {return x% 2 == 0 A:? B}.

Para combinar los conceptos, podríamos replicar cada fragmento. En los casos anteriores, todos los datos (2,4) de la máquina A podría ser replicado en la máquina C y todos los datos (1,3) de la máquina de B podría ser replicado en la máquina D.

Cualquier almacén de claves-valor (de los cuales Redis es sólo un ejemplo) soportes sharding, aunque el trabajo ciertas funciones transversal clave ya no. soportes Redis replicación fuera de la caja.

Otros consejos

En palabras simples, la diferencia fundamental entre los dos conceptos es que Sharding se utiliza para operaciones de escritura escala, mientras que la replicación se utiliza para Lee escala. Como Alex ya se ha mencionado, la replicación es también una de las soluciones para lograr HA.

Sí, ambos están típicamente usado juntos si se tiene en cuenta la forma en fragmentos pueden ser replicados en los nodos de un clúster.

En cuanto a la tercera pregunta, en lugar de la opción de RAM-ras, es una idea mejor utilizar el Redis Sólo anexar archivos (AOF). A tan solo un coste menor (en términos de velocidad de escritura), se obtiene mucha más fiabilidad de sus escrituras. Es bastante como el registro binario de MySQL. El 1 fsync / segundo es la opción recomendada para su uso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top