Какой механизм гарантии доставки сообщений использовался в Kafka на вашем предыдущем месте работы?
Ответ от нейросети
sobes.tech AI
В Kafka гарантии доставки сообщений обеспечиваются за счёт настроек параметров продюсера и потребителя, а также механизма подтверждений (acks) и управления смещениями (offsets).
Основные механизмы:
-
acks — параметр продюсера, который определяет, сколько реплик должны подтвердить запись сообщения. Значения:
0— не ждать подтверждения (надежность низкая)1— ждать подтверждения от лидераall(или-1) — ждать подтверждения от всех ISR (in-sync replicas), что обеспечивает максимальную надежность
-
Ретрай и идемпотентность — продюсер может повторять отправку сообщений при ошибках, а идемпотентность предотвращает дублирование.
-
Коммит смещений (offset commit) — потребитель после обработки сообщений коммитит смещения, чтобы гарантировать, что сообщения не будут обработаны повторно.
На практике для гарантии доставки "как минимум один раз" используют acks=all и идемпотентный продюсер, а для "ровно один раз" — дополнительные настройки и обработку на уровне приложения.
Пример настройки продюсера в Go (с использованием sarama):
config := sarama.NewConfig()
config.Producer.RequiredAcks = sarama.WaitForAll
config.Producer.Idempotent = true
config.Producer.Retry.Max = 5
producer, err := sarama.NewSyncProducer(brokers, config)
Таким образом, механизм гарантии доставки — это комбинация подтверждений, репликации и управления смещениями.