Что такое consumer lag

«Что такое consumer lag» — вопрос из категории Брокеры сообщений, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Consumer lag — это разница между последним сообщением, записанным в партицию Kafka, и последним сообщением, обработанным consumer'ом. Чем больше lag, тем сильнее consumer отстает от producer'а.

Пример:

lag := partitionHighWatermark - consumerOffset

Причины lag:

  • Медленная обработка сообщений (bottleneck в consumer'е).
  • Недостаточно consumer'ов в группе (partition > consumers).
  • Сетевые задержки или проблемы с брокером.

Как мониторить:

  • Метрики Kafka (e.g., kafka_consumer_lag в Prometheus).
  • CLI: kafka-consumer-groups --describe.

Решение:

  • Увеличить количество consumer'ов.
  • Оптимизировать обработку (batch'и, async).
  • Настроить fetch.min.bytes и fetch.max.wait.ms для баланса latency/throughput.