Pregunta ¿Por qué el productor de kafka toma un punto final de intermediario cuando se inicializa en lugar del zk?


Si tengo varios corredores, ¿qué corredor debería usar mi productor? ¿Debo cambiar manualmente el intermediario para equilibrar la carga? Además, ¿por qué el consumidor solo necesita un punto final de cuidador de zoológico en lugar de un punto final de intermediario?

ejemplo rápido del tutorial:

> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test 
> bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning

35
2018-03-16 23:09


origen


Respuestas:


¿Qué corredor debería usar mi productor?
¿Debo cambiar manualmente el intermediario para equilibrar la carga?

Kafka se ejecuta en clúster, es decir, un conjunto de nodos, por lo que, al producir cualquier cosa, debes decirle el LIST de los corredores que ha configurado para su aplicación, a continuación se muestra una pequeña nota extraída de su documentación.

"Metadata.broker.list" define dónde el Productor puede encontrar uno o más Brokers para determinar el Líder de cada tema. No es necesario que sea el conjunto completo de Brokers en su clúster, pero debe incluir al menos dos en caso de que el primer Broker no esté disponible. No necesita preocuparse por averiguar qué Broker es el líder para el tema (y la partición), el Productor sabe cómo conectarse con el Broker y solicitar los metadatos y luego conectarse con el Broker correcto.

Espero que esto aclare algo de tu confusión

Además, ¿por qué el consumidor solo necesita un punto final de zookeeper en lugar de un   punto final del intermediario

Esto no es técnicamente correcto, ya que hay dos tipos de API disponibles, consumidor de alto nivel y bajo nivel.

El consumidor de alto nivel básicamente se encarga de la mayoría de las cosas como detección de líderes, problemas de enhebrado, etc., pero no proporciona mucho control sobre los mensajes, que es exactamente el propósito de usar otras alternativas de consumidor de nivel simple o bajo, en las que verá que debe proporcionar a los intermediarios, detalles relacionados con la partición.

Entonces, el consumidor necesita el punto final del zookeeper solo cuando va con la API de alto nivel; en caso de usar Simple, necesita proporcionar otra información


28
2018-03-18 08:02



Kafka establece un solo intermediario como líder para cada partición de cada tema. El líder es responsable de manejar tanto las lecturas como las escrituras en esa partición. No puede decidir leer o escribir de un intermediario que no sea Líder.

Entonces, ¿qué significa proporcionar un corredor o una lista de corredores al fabricante de consolas kafka? Bueno, el agente o los intermediarios que proporciona en la línea de comandos son solo el primer punto de contacto para su productor. Si el intermediario que usted lista no es el líder del tema / partición que necesita, su productor obtendrá la información del líder actual (llamada "metadatos temáticos" en kafka-speak) y se volverá a conectar con otros intermediarios según sea necesario antes de enviar escrituras. De hecho, si su tema tiene múltiples particiones, incluso puede conectarse a varios intermediarios en paralelo (si los líderes de la partición son intermediarios diferentes).

Segundo q: ¿por qué el consumidor requiere una lista de cuidador de zoológico para las conexiones en lugar de una lista de intermediarios? La respuesta a eso es que los consumidores de kafka pueden operar en "grupos" y el cuidador del zoológico se usa para coordinar esos grupos (la forma en que los grupos trabajan es un problema mayor, más allá del alcance de esta Q). Zookeeper también almacena listas de intermediarios para temas, por lo que el consumidor puede obtener listas de intermediarios directamente del cuidador del zoológico, lo que hace que una lista adicional sea un poco redundante.


7
2018-03-22 00:29



La API de Kafka Producer no interactúa directamente con Zookeeper. Sin embargo, la API de consumo de alto nivel se conecta con Zookeeper para obtener / actualizar la información de compensación de partición para cada consumidor. Entonces, la API del consumidor fallaría si no se puede conectar con Zookeeper.


3
2017-12-15 16:11



Todas las respuestas anteriores son correctas en las versiones anteriores de Kafka, pero las cosas han cambiado con la llegada de Kafka 0.9.

Ahora ya no hay ninguna interacción directa con el cuidador del zoológico ni del productor ni del consumidor. Otra cosa interesante es con 0.9, Kafka ha eliminado la falta de uniformidad entre las API de alto nivel y de bajo nivel, ya que ambas siguen una API de consumo uniformada.


2
2018-06-03 06:51