Sobes.tech
Назад к вопросам
Junior — Middle
75

Какой механизм гарантии доставки сообщений использовался в 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)

Таким образом, механизм гарантии доставки — это комбинация подтверждений, репликации и управления смещениями.