Вопрос проверяет понимание механизма репликации в Apache Kafka, который обеспечивает отказоустойчивость и надежность хранения данных.
Репликация в Apache Kafka — это механизм, который обеспечивает надежность и отказоустойчивость системы путем создания копий данных (реплик) на разных брокерах. Каждая партиция топика имеет несколько реплик, распределенных по брокерам в кластере. Это позволяет системе продолжать работу даже при сбое одного или нескольких брокеров.
Для каждой партиции одна из реплик назначается лидером (leader), а остальные — последователями (followers). Лидер обрабатывает все запросы на запись и чтение от клиентов. Последователи пассивно синхронизируются с лидером, копируя новые данные. Если лидер выходит из строя, один из последователей автоматически становится новым лидером, что минимизирует время простоя.
При создании топика можно указать коэффициент репликации (replication factor). Например, для топика с replication factor = 3 данные будут храниться на трех разных брокерах:
bin/kafka-topics.sh --create --topic my-topic --bootstrap-server localhost:9092 --partitions 3 --replication-factor 3Kafka отслеживает список синхронизированных реплик (ISR). Только реплики, которые полностью синхронизированы с лидером, могут стать новым лидером. Это гарантирует, что данные не будут потеряны при сбое. Если последователь отстает от лидера, он исключается из ISR до тех пор, пока не догонит.
Репликация в Kafka критически важна для обеспечения высокой доступности и надежности данных. Она позволяет системе переживать сбои брокеров без потери сообщений и простоев. Используйте репликацию в продакшн-средах, где важна отказоустойчивость и целостность данных.