topic partitions kafka partitioning apache-zookeeper producer-consumer apache-kafka broker

partitioning - topic - kafka partitions



Kafka: ¿es Zookeeper una necesidad? (5)

Como explicaron otros, Kafka (incluso en la versión más reciente) no funcionará sin Zookeeper.

Kafka usa Zookeeper para lo siguiente:

Elegir un controlador . El controlador es uno de los intermediarios y es responsable de mantener la relación líder / seguidor para todas las particiones. Cuando un nodo se apaga, es el controlador el que le dice a otras réplicas que se conviertan en líderes de partición para reemplazar los líderes de partición en el nodo que se va. Zookeeper se utiliza para elegir un controlador, asegúrese de que solo haya uno y elija uno nuevo si se bloquea.

Membresía del grupo : ¿qué corredores están activos y forman parte del clúster? esto también se maneja a través de ZooKeeper.

Configuración del tema : qué temas existen, cuántas particiones tiene cada uno, dónde están las réplicas, quién es el líder preferido, qué anulaciones de configuración se establecen para cada tema

(0.9.0) - Cuotas : la cantidad de datos que cada cliente puede leer y escribir

(0.9.0) - ACL : a quién le está permitido leer y escribir sobre qué tema (antiguo consumidor de alto nivel). Qué grupos de consumidores existen, quiénes son sus miembros y cuál es la compensación más reciente que obtuvo cada grupo de cada partición.

[de https://www.quora.com/What-is-the-actual-role-of-ZooKeeper-in-Kafka/answer/Gwen-Shapira ]

Con respecto a su escenario, solo una instancia de corredor y un productor con consumidor múltiple, puede usar empujador para crear un canal y enviar evento a ese canal al que el consumidor puede suscribirse y entregar esos eventos. https://pusher.com/

En Kafka, me gustaría utilizar solo un solo agente, un solo tema y una sola partición que tenga un productor y múltiples consumidores (cada consumidor obtendrá su propia copia de los datos del intermediario). Dado esto, no quiero la sobrecarga de usar Zookeeper; ¿No puedo simplemente usar el corredor solo? ¿Por qué es un Zookeeper debe?


El Zookeeper de IMHO no es una carga general, pero hace su vida mucho más fácil.

Se usa básicamente para mantener la coordinación entre diferentes nodos en un clúster. Una de las cosas más importantes para Kafka es que utiliza el cuidador del zoológico para realizar periódicamente compensaciones para que, en caso de falla del nodo, pueda reanudarse a partir del desplazamiento comprometido previamente (imagínese a usted mismo ocupándose de todo esto por su cuenta).

Zookeeper también juega un papel vital para servir a muchos otros propósitos, como detección de líder, administración de configuración, sincronización, detección cuando un nuevo nodo se une o abandona el clúster, etc.

Los futuros lanzamientos de Kafka están planeando eliminar la dependencia del cuidador de zoo, pero a partir de ahora es una parte integral de la misma.

Aquí hay algunas líneas tomadas de su página de preguntas frecuentes:

Una vez que el quórum de Zookeeper haya caído, los intermediarios podrían resultar en un mal estado y normalmente no podrían atender las solicitudes de los clientes, etc. Aunque cuando se restablezca el quórum de Zookeeper, los intermediarios de Kafka podrán reanudar automáticamente el estado normal, todavía hay algunos casos de esquina lo que no pueden hacer, y se requiere una dura muerte y recuperación para que vuelva a la normalidad. Por lo tanto, se recomienda supervisar de cerca su clúster de zookeeper y aprovisionarlo para que funcione.

Para más detalles, consulte here


Kafka está diseñado para usar Zookeeper. No hay escapatoria de eso.

Kafka es un sistema distribuido y utiliza Zookeeper para rastrear el estado de los nodos del clúster Kafka. También realiza un seguimiento de los temas de Kafka, particiones, etc.

Al mirar tu pregunta, parece que no necesitas a Kafka. Puede usar cualquier aplicación que admita pub-sub como Redis , Rabbit MQ o soluciones alojadas como Pub-nub .


Sí, se requiere Zookeeper para ejecutar Kafka. De la documentación de Kafka Getting Started:

Paso 2: inicia el servidor

Kafka usa el zookeeper, por lo que primero debe iniciar un servidor zookeeper si aún no tiene uno. Puede usar la secuencia de comandos de conveniencia empaquetada con kafka para obtener una instancia de zookeeper de nodo único rápida y sucia.

En cuanto a por qué, hace mucho tiempo las personas descubrieron que necesita tener alguna forma de coordinar las tareas, la administración del estado, la configuración, etc. en un sistema distribuido. Algunos proyectos han creado sus propios mecanismos (piense en el servidor de configuración en un clúster fragmentado MongoDB o en un nodo maestro en un clúster Elasticsearch). Otros han optado por aprovechar Zookeeper como un sistema de coordinación de procesos distribuidos de propósito general. Así que Kafka, Storm, HBase, SolrCloud solo por nombrar algunos usan Zookeeper para ayudar a administrar y coordinar.

Kafka es un sistema distribuido y está diseñado para usar Zookeeper. El hecho de que no esté utilizando ninguna de las características distribuidas de Kafka no cambia la forma en que se creó. En cualquier caso, no debería haber demasiada sobrecarga por usar Zookeeper. Una pregunta más importante es por qué usaría este patrón de diseño particular: una implementación de corredor único de Kafka pierde todas las características de confiabilidad de un clúster multi-broker junto con su capacidad de escalar.


Jocko es una implementación de Golang de Kafka sin dependencia del cuidador de zoológico y una sola instalación binaria