Redis Sentinel vs Cluster

Redis Sentinel vs Cluster

Redis se puede identificar como un servidor de diccionario remoto que está diseñado principalmente para la velocidad. Además, se utiliza ampliamente como una base de datos de caché y nosql en memoria. Como base de datos o caché, es vital proporcionar una alta tasa de acceso a datos, alta disponibilidad, fragmentación de datos y características de escalabilidad. Redis introdujo soluciones Sentinel y Cluster para abordar los aspectos mencionados.

Racimo de redis

La tecnología Redis Cluster que se introdujo en la versión 3.0 habilita la escala horizontal para una implementación de redis dada. Con Redis Clusters, los datos se dividen en múltiples nodos de clúster que proporcionan una capa de servicio de datos consistente y confiable para las aplicaciones.

Es imprescindible tener al menos tres nodos maestros para que un clúster funcione correctamente. Además, cada nodo maestro debe tener al menos un solo nodo esclavo. Además, los clústeres de Redis permiten una alta disponibilidad hasta cierto punto al promover un nodo esclavo asociado con una instancia maestra fallida en un hardware/software o falla de red.

Cada nodo de clúster se comunica con otros nodos utilizando un canal de comunicación de nodo a nodo basado en protocolo binario. Además, cada nodo está abierto a las conexiones del cliente utilizando el puerto TCP estándar.

El siguiente es un bosquejo de alto nivel de una configuración básica de Redis Cluster:


Pros:

  • Fragmentación de datos
    • Los datos se comparten entre múltiples nodos y se pueden ajustar dinámicamente.
    • Dado que no hay un centro de control central, los datos se dividen entre nodos automáticamente.
  • Escalabilidad
    • Un clúster puede escalar hasta 1000 nodos. Los nodos se pueden quitar o agregar dinámicamente.
  • Conmoción automática
    • Redis Cluster admite la arquitectura maestra-esclave y permite la técnica de conmutación por error maestra incorporada.


Contras:

  • No completamente disponible
    • En caso de una falla importante, la mayoría de los nodos maestros podrían bajar, lo que hace que todo el clúster caiga.
  • El alto número de nodos por clúster único
    • Es imprescindible tener al menos tres instancias maestras y un solo nodo esclavo por maestro que termina con seis nodos para configurar un clúster Redis que funcione correctamente.
  • No hay garantía de consistencia de datos
    • Redis Cluster Master Replication se procesa de forma asincrónica y podría afectar la consistencia.
  • Falta de soporte de biblioteca de clientes para el clúster Redis
    • Hay un número mínimo de bibliotecas de clientes que admiten las implementaciones de clúster Redis.
  • Replicación de una sola capa
    • La arquitectura de replicación maestra de clúster redis permite solo una sola capa. Una instancia de esclavo determinada puede replicar solo el nodo maestro.
  • Redis Cluster puede perder escrituras reconocidas en algunos escenarios
  • El manejo de datos es más complicado
    • Debido al fragmento de datos, los administradores de clúster deben administrar múltiples archivos RDB y AOF. Además, se necesita un esfuerzo adicional para agregar archivos de persistencia de múltiples nodos para hacer una copia de seguridad.

Redis Sentinel

Redis Sentinel es un enfoque de alta disponibilidad para las implementaciones de Redis que se ejecutan como un programa separado en segundo plano. Aporta muchas características a sus implementaciones de Redis al verificar constantemente el estado del nodo maestro y esclavo, notificando los cambios significativos relacionados con las instancias monitoreadas a través de una API, inicializando el proceso de conmutación por error automática cuando ocurre una falla maestra y actúa como una fuente de fuente de fuente Autoridad para que los clientes encuentren la dirección IP del nodo maestro Redis actualmente activo actualmente.

Se puede implementar una configuración de Redis Sentinel utilizando al menos tres nodos centinela que pueden evitar la mayoría de los problemas en una implementación de Redis dada. Además, en una configuración centinela dada, el valor de quórum define el número mínimo de nodos centinela que deberían confirmar cuándo fallan un maestro.

En general, el Redis Sentinel se emplea principalmente para respaldar la alta disponibilidad de una base de datos Redis donde funciona mejor que en el enfoque de agrupación.

La siguiente es una ilustración de alto nivel de una configuración mínima de Redis Sentinel:


Pros:

  • Número mínimo de nodos
    • Se puede formar una implementación de Redis Centinela completamente en funcionamiento con tres nodos.
  • Altamente disponible
    • La implementación de Redis Sentinel puede sobrevivir a fallas críticas del nodo sin ninguna intervención humana.
    • Puede funcionar cuando al menos una sola instancia maestra está disponible a pesar de que cada esclavo está abajo.
  • Replicación maestra mejorada
    • En la implementación de Redis Sentinel, varios esclavos pueden replicar una instancia maestra dada.
  • Simplicidad y flexibilidad
    • Redis Sentinel es muy fácil de mantener y también tiene opciones de configuración flexibles.


Contras:

  • No hay fragmentos admitidos
    • El fragmento de datos no es posible. Por lo tanto, la accesibilidad de conjuntos de datos a gran escala puede hacer que el rendimiento se degrade.
  • Falta de escalabilidad
  • Lecturas anticuadas
    • Por lo general, los nodos esclavos sirven lecturas en la implementación de Redis Sentinel. Debido a la replicación asincrónica, las lecturas pueden no estar actualizadas.
  • Redis Sentinel debe ser compatible con la biblioteca del cliente
  • El nodo de esclavos no actúa como un nodo de respaldo

Redis Sentinel vs Cluster

Redis Cluster y Sentinel son dos enfoques donde cada uno aborda diferentes aspectos relacionados con una implementación de Redis. Para resaltar, el enfoque de Redis Cluster es más adecuado para implementaciones complicadas que se ocupan de conjuntos de datos masivos donde proporciona datos automáticos de datos para un mejor rendimiento de consulta de lectura/escritura, conmutación por conmutación maestra automática y replicación con alta disponibilidad en cierta medida. Además, los nodos de clúster redis se pueden escalar sin esfuerzo.

Por otro lado, el Redis Sentinel se centra más en implementaciones más pequeñas con alta disponibilidad en mente.

Disponibilidad

Redis Cluster no admite completamente una alta disponibilidad. Porque, si la mayoría de los maestros no están disponibles, el clúster puede bajar. En contraste con el enfoque de clúster, el Redis Sentinel ofrece alta disponibilidad sin ninguna intervención humana. Lo más importante, el centinela puede sobrevivir incluso con una sola instancia maestra de ejecución cuando ocurre una falla crítica.

Fragmentación de datos

Redis Cluster ofrece capacidades de fragmentación donde los datos se distribuyen entre múltiples nodos cuando los clientes tienen acceso a la red a todos los nodos. Permite una mayor capacidad de rendimiento y almacenamiento de datos.

Por otro lado, Redis Sentinel no ofrece capacidades de fragmentación. Porque el fragmento causa la utilización del desequilibrio del maestro y esclavo.

Replicación

Ambos enfoques ofrecen replicación maestra con algunas limitaciones. Redis Sentinel permite la replicación para múltiples capas donde varios nodos esclavos pueden replicarse desde una instancia maestra dada. En contraste, el enfoque de clúster redis no permite la replicación para múltiples capas. Solo es capaz de replicar la instancia maestra a un solo nodo esclavo. Ambos enfoques comprometen la consistencia debido a la replicación de Async.

Escalabilidad

Los grupos de Redis son altamente escalables. Admite hasta mil nodos en una configuración de clúster individual dada. Además, los grupos permiten agregar y eliminar los nodos dinámica y sin esfuerzo. Redis Sentinel no es escalable y las escrituras están dirigidas a la instancia maestra, por lo tanto, el Sentinel no puede lidiar con los problemas de separación de lectura-escritura.

Arquitectura

Se puede construir un centinela redis completamente funcional con solo tres nodos. Pero para configurar un clúster Redis, requiere al menos tres nodos maestros y tres esclavos unidos a ellos, lo cual es más costoso que en la implementación de Redis Sentinel.

Conclusión

Para resumir, el enfoque de clúster redis se centra más en las implementaciones complejas cuando la alta escalabilidad, el alto rendimiento y el alto almacenamiento de datos son importantes y la alta disponibilidad no es significativa. Por otro lado, Redis Sentinel está construido principalmente para aplicaciones simples que se centran principalmente en alta disponibilidad. En comparación, ambas soluciones vienen con sus pros y contras, pero para admitir a los usuarios finales con una implementación de Redis más afinada.