middle
Как устроена архитектура продюсера?
Продюсер — это клиент Kafka, который формирует, буферизирует и отправляет сообщения в топики.
Этапы работы продюсера
- Создание сообщения (Record) — продюсер формирует сообщение с ключом (необязательным), значением и метаданными (время отправки)
- Выбор партиции — если ключ указан, Kafka использует его хеш для определения партиции (сообщения с одинаковым ключом попадают в одну партицию). Если ключа нет — round-robin или sticky partitioning
- Буферизация (Batching) — продюсер группирует сообщения в пакеты перед отправкой, снижая сетевые задержки
- Сжатие (Compression) — опциональное сжатие через GZIP, Snappy, LZ4 или ZSTD для уменьшения объёма данных
- Асинхронная отправка — сообщения записываются в буфер памяти и отправляются брокеру без ожидания завершения предыдущих операций
- Подтверждения (Acknowledgments) — настраиваемый уровень подтверждений от брокеров (acks=0, 1, all)
- Ретрай и идемпотентность — повторная отправка при сбоях; идемпотентный режим предотвращает дублирование
- Error handling — обработка ошибок через callback
Резюме
- Продюсер выбирает партицию для сообщения
- Продюсер выбирает уровень гарантии доставки
- В продюсере можно тюнить производительность
На собеседовании: часто спрашивают про связку batching + linger.ms. Объясните, что продюсер не отправляет каждое сообщение отдельно — он накапливает пакет и отправляет его через
linger.msмиллисекунд или когда пакет достигаетbatch.size. Это ключ к высокой производительности Kafka.