¿Por qué la encuesta de mensaje siempre falla durante el reequilibrio?
El reequilibrio es un proceso en el que se reasignan las particiones de temas para un grupo de consumidores.
En casos normales, el reequilibrio se produce inevitablemente cuando un consumidor es agregado o quitado de un grupo de consumidores. Sin embargo, si un consumidor se considera anormal y se quita del grupo de consumidores, la recuperación del mensaje puede fallar.
Esto puede ocurrir en los siguientes escenarios:
- Las solicitudes de latido no se envían a tiempo.
Un consumidor envía solicitudes de latidos al broker en el intervalo especificado por heartbeat.interval.ms. Si el corredor no recibe ninguna solicitud de latido del consumidor dentro del período especificado por session.timeout.ms, el broker considera que el consumidor es anormal y lo elimina del grupo de consumidores, lo que desencadena un reequilibrio.
- El intervalo entre recuperaciones es demasiado largo.
max.poll.records especifica el número máximo de mensajes que un consumidor puede recuperar a la vez. En la mayoría de los casos, un cliente procesa los datos recuperados antes de iniciar la siguiente recuperación. El procesamiento puede prolongarse cuando se recupera un gran número de mensajes a la vez y no se puede procesar dentro del tiempo especificado por max.poll.interval.ms o cuando se produce una excepción durante el proceso. (por ejemplo, los datos deben escribirse en la base de datos backend, pero la presión de la base de datos backend es demasiado alta, lo que resulta en una alta latencia). Si el consumidor no envía la siguiente solicitud de recuperación dentro del tiempo especificado por max.poll.interval.ms, el broker considera que el consumidor está inactivo y lo elimina del grupo de consumidores, desencadenando un reequilibrio.
Soluciones y métodos de solución de problemas
Escenario 1: Las solicitudes de latido no se envían a tiempo.
Solución: En el cliente consumidor, establezca el valor de session.timeout.ms en tres veces el valor de heartbeat.interval.ms.
Escenario 2: El intervalo entre recuperaciones es demasiado largo.
Métodos de solución de problemas:
- Compruebe el tiempo necesario para procesar un solo mensaje y si el tiempo necesario para procesar un número específico (max.poll.records) de mensajes excede el tiempo especificado por el max.poll.interval.ms.
- Compruebe si el procesamiento de mensajes requiere conexiones de red, como escribir datos en la base de datos e invocar a las API de backend, y si el backend es normal en escenarios de reequilibrio.
Solución: En el cliente consumidor, disminuya el valor de max.poll.records.
Mensajes Preguntas frecuentes
- ¿Cuál es el tamaño máximo de un mensaje que se puede crear?
- ¿Por qué la encuesta de mensaje siempre falla durante el reequilibrio?
- ¿Por qué no puedo consultar mensajes en la consola?
- ¿Qué puedo hacer si se acumulan los mensajes de Kafka?
- ¿Por qué todavía existen mensajes después de que transcurra el período de retención?
- ¿Las instancias de Kafka admiten la entrega retardada de mensajes?
- ¿Cómo puedo ver el número de mensajes acumulados?
- ¿Por qué se muestra el tiempo de creación del mensaje como el año 1970?
Comentarios
¿Le pareció útil esta página?
Deje algún comentariomore