Как устроена Kafka
Вопрос
Объясните, как устроена Kafka: топики, партиции, offset, группы потребителей.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Топик делится на партиции, партиция это упорядоченный лог
Offset это позиция сообщения, потребитель хранит свой offset
Сообщения не удаляются после чтения, хранятся по retention
Consumer group: партиция на одного потребителя группы
Ключ определяет партицию и порядок
Репликация: лидер и реплики
Что могут спросить следом
- Чем Kafka отличается от RabbitMQ?
- Что происходит при ребалансировке?
Разбор
Kafka это распределённый журнал. Топик разбит на партиции, каждая это упорядоченный неизменяемый лог, у каждого сообщения свой offset. Продюсер пишет сообщение в партицию по хешу ключа, поэтому сообщения с одним ключом идут по порядку. Сообщения не удаляются после чтения, а хранятся по времени или размеру, и разные группы потребителей читают топик независимо. Внутри группы каждую партицию читает один потребитель, так масштабируется обработка, но не больше числа партиций. Потребитель коммитит свой offset и после перезапуска продолжает с него. Надёжность обеспечивает репликация: у партиции лидер и реплики, продюсер с acks=all ждёт подтверждения от синхронных реплик. В отличие от классической очереди, Kafka позволяет перечитать историю и подключать новых потребителей к старым данным.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.