Clúster de Redis

Es una arquitectura de clúster descentralizada.

El rendimiento de Redis Cluster está al mismo nivel que la implementación de un solo nodo.

Nodos multimaestro, equilibrio de carga, separación de lectura y escritura.

Redis Cluster admite la configuración de replicación maestro-esclavo estándar para garantizar una alta disponibilidad y confiabilidad.

conmutación por error (failover)

Redis Cluster también implementa un método de autenticación similar a Raft para garantizar la disponibilidad de todo el clúster.

Agregar nuevos nodos a Redis Cluster o eliminar nodos es transparente y no requiere tiempo de inactividad.

Muy fácil de ampliar tanto en horizontal como en vertical.

Partición de datos, almacenamiento masivo de datos

No se requieren otros agentes ni herramientas para implementar Redis Cluster, y Redis Cluster es casi completamente compatible con Redis independiente

.

Roles: maestro, esclavo

Redis Cluster está compuesto por múltiples grupos de nodos de Redis. Es una arquitectura de clúster P2P (punto a punto) sin un nodo central y se basa en el protocolo Gossip. para propagar el cluster

El protocolo Gossip es un protocolo de comunicación, una forma de difundir mensajes.

Inspirado en: Propagación de virus

Estos nodos que reciben la información harán lo mismo, es decir, pasarán la información a otros nodos seleccionados al azar.

La información se entregará a N nodos objetivo periódicamente. Esta N se llama fanout (fanout)

El protocolo de chismes contiene una variedad de mensajes, que incluyen reunirse, hacer ping, pong, fallar, publicar, etc.

A través del protocolo de chismes, el El clúster puede proporcionar funciones importantes del clúster, como la actualización de la sincronización del estado entre clústeres y la conmutación por error de autoservicio electoral.

En el diseño de arquitectura distribuida, la cuestión central es cómo fragmentar los datos. Los siguientes algoritmos hash distribuidos han aparecido en cambios tecnológicos:

redis-cluster asigna todos los nodos físicos a [0-16383] ranuras, básicamente utilizando distribución promedio y distribución continua.

Las ranuras deben asignarse continuamente en el nodo. Si se produce una discontinuidad, RedisCluster no funcionará.

Utilice el protocolo raft (consulte el algoritmo de Paxos /p/40c658c9dcc2)

Cuando el esclavo reciba el consentimiento de más de la mitad de los maestros, se convertirá en el nuevo maestro. En este momento, se transmitirá a sí mismo como maestro a través del mensaje PONG con la última época, lo que permitirá que otros nodos del clúster actualicen la topología (node.conf) lo antes posible.

Es la elección del nodo esclavo mencionada anteriormente.

La conmutación por error manual es una operación esperada, en lugar de una falla real. El propósito es hacerlo de manera segura (sin pérdida de datos). ) Intercambie las funciones del nodo maestro actual y uno de los nodos esclavos (el nodo que realiza la conmutación por error del clúster)

1. Envíe el comando de conmutación por error del clúster (esclavo de nadie) al nodo esclavo

2. Esclavo El nodo informa a su nodo maestro que se requiere conmutación manual (CLUSTERMSG_TYPE_MFSTART)

3. El nodo maestro bloqueará la ejecución de todos los comandos del cliente (10s)

4. El nodo esclavo hace ping desde el nodo maestro Obtenga el desplazamiento de replicación del nodo maestro en el paquete

5. El nodo esclavo replica al desplazamiento, inicia una elección, cuenta votos, gana la elección, actualiza el nodo maestro y actualiza la configuración

6. Una vez completado el cambio, el nodo maestro original envía un comando movido a todos los clientes para redirigir al nuevo nodo maestro

Lo anterior es cuando el nodo maestro está en línea.

Si el nodo maestro se desconecta, utilice la conmutación por error forzada del clúster o la toma de control de la conmutación por error del clúster para realizar una conmutación forzada.

Expansión

Los datos del nodo expandido deben estar vacíos

Reducción

Solo se pueden eliminar los nodos con datos vacíos

Sabemos que en el caso de un maestro y un esclavo, si el maestro y el esclavo están inactivos al mismo tiempo, todo el clúster estará inactivo.

Para evitar esta situación, podemos tener un maestro y varios esclavos, pero esto aumentará el coste.

Redis proporciona un método llamado deriva de réplica, que puede mejorar la confiabilidad del clúster sin agregar demasiadas máquinas esclavas.

Si el Maestro1 deja de funcionar, el Esclavo11 asciende al nuevo Maestro1

El clúster detecta que el nuevo Maestro1 es un punto único (sin esclavo)

El clúster tiene la mayor cantidad de esclavos Del grupo de nodos esclavos (Master3), seleccione el esclavo con el orden alfabético más pequeño de nombres de nodos (Slaver31) para derivar

al grupo de nodos maestro-esclavo de un solo punto (Master1).

El proceso específico es el siguiente (tome la imagen de arriba como ejemplo):

1. Eliminar el registro esclavo de Slaver31 de Master3

2. Eliminar el registro maestro de Slaver31 cambie a Master1

3. Agregue Slaver31 como nodo esclavo en Master1

4. Cambie la fuente de replicación de Slaver31 a Master1

5 Utilice el paquete ping para sincronizar la información con otros nodos del clúster

.