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:
Contras:
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:
Contras:
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.