Проверяет знание гарантий доставки сообщений и умение работать с Kafka в продакшене.
Exactly-once в Kafka достигается комбинацией idempotent producer + transactional producer/consumer. Подводные камни — сложность конфигурации, накладные расходы на производительность, необходимость идемпотентности в хранилище.
Kafka по умолчанию гарантирует at-least-once. Для exactly-once нужен особый подход:
Idempotent producer (enable.idempotence=true) — исключает дубли при ретраях.
Transactional producer — группирует сообщения и commit offset вместе:
Сообщения публикуются в топик.
Offset consumer коммитится в той же транзакции.
Если сбой → ни сообщения, ни offset не зафиксированы.
Consumer читает только committed данные.
Повышенная задержка из-за транзакций.
Необходимость глобальной идемпотентности в downstream системах (например, при записи в Postgres).
Возможны проблемы при failover брокеров.
Вывод: Exactly-once в Kafka реально, но дорого. В реальных системах часто достаточно at-least-once + идемпотентная обработка.
Уровень
Рейтинг:
4
Сложность:
8
Навыки
Golang
Postgres
Kafka
Ключевые слова
Подпишись на Golang Developer в телеграм