• Описание работы
  • Выдержки из опыта

img.png

Источники:

Kafka - потоковая платформа. Kafka лишь напоминает систему обмена сообщениями тем, что обеспечивает возможность публикации и подписки на потоки сообщений.

Гарантии доставки до Apache Kafka (Надёжность доставки)

1-й уровень - At-most-once:

событие будет доставлено один раз, но может не быть доставлено вообще; точно один раз

  • Важна производительность и допустимы потери отправленных событий
  • Продьюсер отправляет сообщение и не дожидается подтверждения (ack) от брокера

2-й уровень - At-least-once (самый популярный):

событие точно будет доставлено хотя бы один раз, но может и больше; важно, чтобы событие было доставленоб даже если это будет повтор

  • Важно, чтобы событие было доставлено, даже если это приведет к дублированию
  • Продьюсер дожидается подтверждения (ack) от брокера
  • Чтобы обеспечить гарантию (если подтверждение не дошло) - нужны ретраи
  • Самому потребителю нужно уметь обрабатывать дубли

3-й уровень - Exactly-once:

событие будет доставлено строго один раз.

  • критична доставка и недопущение дублирования
  • идемпотентный продьюсер (экземпляр, а не кластер) предотвращает дублирование сообщения
  • транзакции Kafka гарантируют доставку до нее
  • в техническом плане самый сложный уровень, может не гарантироваться на самом брокере (Виктор Гамов - один раз в год сады цветут: разбор семантики exactly-once в Kafka) (появилась только в 0.11 версии)

Партиции и ключи

Архитектура

https://habr.com/ru/companies/kuper/articles/738634/ img.png

Посмотрим на архитектуру Kafka более внимательно. Слева есть продюсеры, в середине брокеры, справа — консумеры. Инструмент представляет собой группу брокеров, связанных с Zookeeper-кворумом. Kafka использует Zookeeper для достижения консенсуса состояния в распределённой системе: есть несколько вещей, с которыми должен быть «согласен» каждый брокер и Zookeeper помогает достичь этого «согласия» внутри кластера.

Топик — это логическое разделение категорий сообщений на группы.