Kafka - the basics
- Описание работы
- Выдержки из опыта
Источники:
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/
Посмотрим на архитектуру Kafka более внимательно. Слева есть продюсеры, в середине брокеры, справа — консумеры. Инструмент представляет собой группу брокеров, связанных с Zookeeper-кворумом. Kafka использует Zookeeper для достижения консенсуса состояния в распределённой системе: есть несколько вещей, с которыми должен быть «согласен» каждый брокер и Zookeeper помогает достичь этого «согласия» внутри кластера.
Топик — это логическое разделение категорий сообщений на группы.