tutorial kafka ejemplo message-queue producer-consumer apache-kafka kafka-consumer-api

message queue - ejemplo - ¿Cómo funciona el reequilibrio del consumidor en Kafka?



jms java tutorial (1)

Depende de lo que quieras decir con "bloqueado". Si quiere decir que "las conexiones existentes están cerradas cuando se activa el rebalanceo", entonces la respuesta es sí. El actual algoritmo de reequilibrio de Kafka desafortunadamente es imperfecto.

Esto es lo que está sucediendo durante el reequilibrio del consumidor.

Supongamos que tenemos un tema con 10 particiones (0-9) y un consumidor (llamémoslo consumer1 ) que lo consume. Cuando aparece un segundo consumidor ( consumer2 ), la tarea de reequilibrio se activa para ambos ( consumer1 obtiene un evento, consumer2 realiza el reequilibrio inicial). Ahora consumer1 cierra todas las conexiones existentes (incluso las que se volverán a abrir pronto) y libera la propiedad de la partición en Zookeeper para las 10 particiones.

Luego ejecuta el algoritmo de asignación de partición y decide qué particiones deben reclamarse y reclama la propiedad de la partición en Zookeeper nuevamente. Si la reclamación fue exitosa, consumer1 comienza a buscar sus nuevas particiones.

Mientras tanto, consumer2 ejecuta el algoritmo de asignación de particiones e intenta reclamar sus particiones en Zookeeper también. La reclamación tendrá éxito solo cuando consumer1 libere la propiedad de estas particiones. Cuando la reclamación es exitosa, consumer2 comienza a buscar, o si falla en reclamar particiones dentro de una cantidad determinada de reintentos, se produce un error de rebalance failed after n retries excepciones de rebalance failed after n retries .

Como se dio cuenta, en lugar de limitarse a cerrar las conexiones y liberar la propiedad de las particiones que consumer1 ya no posee, cierra innecesariamente TODAS sus conexiones y se reinicia con una cantidad menor de particiones. La misma historia con la adición de particiones (cuando consumimos por un filtro comodín y aparece un nuevo tema): TODAS las conexiones se cierran y luego se abren de nuevo en lugar de simplemente abrir nuevas.

Así que espero que esto responda a su pregunta: la recuperación se detiene cuando se activa el reequilibrio.

Cuando se agrega o baja un nuevo consumidor / brorker, Kafka activa una operación de reequilibrio. Es Kafka Reequilibrar una operación de bloqueo. ¿Están bloqueados los consumidores de Kafka mientras se está realizando una operación de reequilibrio?