Зачем нужна мастер-партиция в Kafka
Что проверяют
Прежде всего, заметите ли вы некорректный термин. «Мастер-партиции» в Kafka нет: у каждой партиции несколько реплик, и одна из них лидер. Интервьюер хочет услышать про лидера, ISR и то, что происходит при падении брокера, а следом спросит про acks и min.insync.replicas.
Как отвечать
Сначала аккуратно поправьте формулировку и объясните модель:
- партиция: упорядоченный лог, единица параллелизма топика. Порядок сообщений гарантирован только внутри одной партиции;
- реплики: копии партиции на разных брокерах, их число задаёт
replication.factor; - лидер: реплика, через которую идут все записи продюсеров и по умолчанию все чтения консьюмеров. Остальные реплики, фолловеры, сами забирают данные у лидера fetch-запросами;
- ISR: набор реплик, не отставших от лидера. Сообщение считается закоммиченным и становится видно консьюмерам только после репликации на все ISR (high watermark).
Зачем нужен лидер: единая точка записи даёт строгий порядок и согласованность без распределённого голосования на каждое сообщение. Лидеры разных партиций распределяются по брокерам, так нагрузка делится между машинами.
При падении брокера контроллер выбирает нового лидера из ISR. С Kafka 4.0 кластер работает только в режиме KRaft, ZooKeeper удалён. Выбор лидера из отставшей реплики по умолчанию запрещён (unclean.leader.election.enable=false), потому что грозит потерей данных.
Для Java-продюсера свяжите это с настройками: начиная с Kafka 3.0 по умолчанию acks=all и enable.idempotence=true, а надёжность хранения задаёт пара replication.factor=3 и min.insync.replicas=2.
Где спотыкаются
Повторяют термин как есть и рассказывают, что одна партиция топика главная, а остальные её реплики. Партиции топика равноправны, лидер есть у каждой из них.
Считают, что фолловеры разгружают чтение. По умолчанию все читают с лидера; чтение с ближайшей реплики существует, но включается отдельно через client.rack у консьюмера и селектор реплик на брокере.
Ставят acks=all при min.insync.replicas=1 и думают, что данные защищены. Если в ISR остался один лидер, запись подтвердится без единой копии.