Gymterview
middle

Как устроена архитектура продюсера?

Продюсер — это клиент Kafka, который формирует, буферизирует и отправляет сообщения в топики.

Этапы работы продюсера

  1. Создание сообщения (Record) — продюсер формирует сообщение с ключом (необязательным), значением и метаданными (время отправки)
  2. Выбор партиции — если ключ указан, Kafka использует его хеш для определения партиции (сообщения с одинаковым ключом попадают в одну партицию). Если ключа нет — round-robin или sticky partitioning
  3. Буферизация (Batching) — продюсер группирует сообщения в пакеты перед отправкой, снижая сетевые задержки
  4. Сжатие (Compression) — опциональное сжатие через GZIP, Snappy, LZ4 или ZSTD для уменьшения объёма данных
  5. Асинхронная отправка — сообщения записываются в буфер памяти и отправляются брокеру без ожидания завершения предыдущих операций
  6. Подтверждения (Acknowledgments) — настраиваемый уровень подтверждений от брокеров (acks=0, 1, all)
  7. Ретрай и идемпотентность — повторная отправка при сбоях; идемпотентный режим предотвращает дублирование
  8. Error handling — обработка ошибок через callback

Резюме

  • Продюсер выбирает партицию для сообщения
  • Продюсер выбирает уровень гарантии доставки
  • В продюсере можно тюнить производительность

На собеседовании: часто спрашивают про связку batching + linger.ms. Объясните, что продюсер не отправляет каждое сообщение отдельно — он накапливает пакет и отправляет его через linger.ms миллисекунд или когда пакет достигает batch.size. Это ключ к высокой производительности Kafka.