Redis vs Zookeeper

25

Parece una tontería comparar estos dos servidores teniendo en cuenta que están destinados a cosas muy diferentes. Pero si lo piensa, pueden hacer muchas cosas similares: almacenar datos de configuración, bloqueo distribuido, colas, etc.

Tengo una instancia de Redis que estoy usando para algunas cosas relacionadas con la producción, pero me gustaría hacer una sincronización simple entre servidores (principalmente cambios de configuración que no requieren empujar el código y el bloqueo simple entre servidores). ¿Qué me da Zookeeper que Redis no haría?

Jason Baker
fuente
Redis no es (específicamente) para la configuración. Son productos bastante diferentes.
Rein Henrichs
44
¿Por qué? Estamos usando PostgreSQL para la configuración. ¿Qué hace que la configuración sea tan diferente de la lógica empresarial?
Dmitry Negoda

Respuestas:

26

Usamos Redis y Zookeeper en el trabajo, así que esto es por experiencia de primera mano.

Redis es rápido; Muy, muy rápido. También es inmediatamente consistente, por lo que es bueno para conjuntos de datos de rápido movimiento. La desventaja es que, si se ejecuta en un servidor, si falla, pierde el acceso de escritura hasta que otro servidor tome su lugar. Reemplazar el servidor es una operación manual a menos que lo automatice usted mismo. (Aún puede obtener acceso de lectura a sus datos si configura una instancia esclava).

Zookeeper también presenta consistencia inmediata. No es la mitad de rápido, pero se recuperará automáticamente (cuando sea posible) ante una falla, por lo que si necesita acceso de escritura continuo, incluso cuando sus servidores fallan, entonces querrá usar Zookeeper.

Mi consejo es que use Zookeeper para la coordinación: seguimiento de qué nodos están activos, elección de líder entre un grupo, etc. Use redis para conjuntos de datos que necesitan escrituras rápidas pero donde la interrupción ocasional no es un desastre. Contadores de visitas para páginas web, por ejemplo.

dan_waterworth
fuente
Actualmente estoy trabajando en un proyecto y estaba pensando que el cuidador del zoológico sería el camino a seguir. Si tiene más información que pueda compartir en algún lugar, sería maravilloso. Estamos lidiando con múltiples intercambios de anuncios y rastreando alrededor de 4 mil millones de eventos al día. Estamos buscando rediseñar nuestros servidores front-end y estábamos buscando en Zookeeper para almacenar información sobre conteos de seguimiento, peso mínimo, etc. Puedo dar fe de la velocidad de redis pero mi experiencia carece de una estructura jerárquica que estábamos buscando usar con Zookeeper. ¿Ha cambiado su postura en los 3 años desde el 2012?
Chris Hinshaw
@ ChrisHinshaw Estoy enfrentando el mismo problema. Teniendo en cuenta tanto a Redis como a Zookeeper para un administrador de recursos distribuidos que requiere bloqueos y rendimiento distribuidos ¿Tienes algún comentario?
Rafael Saraiva
Estoy terminando una reescritura de esto ahora. Fui con redis debido a la velocidad. Hubo algunos problemas de rendimiento con Zookeeper, pero no recuerdo los problemas. Estamos almacenando datos de series de tiempo basados ​​en métricas y recuentos. Estoy utilizando sua scripts para actualizar los recuentos de cada uno de los períodos de tiempo para limitar la cantidad de llamadas. Un ejemplo es que tenemos una clave hash para las solicitudes de oferta en forma de br: 1: 2: 3: 4 donde los números representan una jerarquía de métrica: agencia: anunciante: campaña: anuncio. En el hash los valores son año: mes: día: hora: minuto. En mi script lua, actualizaría los recuentos de cada uno
Chris Hinshaw
de las rebanadas de tiempo. Entonces, mi secuencia de comandos divide los y: m: d: h por dos puntos y actualiza los totales para cada segmento. De esta manera puedo usar un hscan o buscar una lista de claves para cualquier segmento de tiempo. Lo más importante en redis es crear un modelo jerárquico para las teclas. En algún momento en el futuro, me gustaría mover todo esto para encender rdd's con una tienda Cassandra. Si tuviera tiempo, implementaría la transmisión por chispa para comparar eso. Creo que estaría a la par con redis y da la flexibilidad de hacer análisis.
Chris Hinshaw