Фактически вы не создаете темы в одном конкретном узле c в кластере Kakfa. Когда вы отправляете запрос на создание топи c, разделы будут автоматически распределены по всем узлам, принадлежащим кластеру, и реплики также будут распределены. Именно так Kafka справляется с высокой доступностью. Если один из узлов не работает, другой узел имеет все необходимые данные, поэтому нет простоя или воздействия на пользователей кластера.
Вы можете выполнить команду --describe
следующим образом:
> bin/kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic my-replicated-topic
Topic:my-replicated-topic PartitionCount:1 ReplicationFactor:3 Configs:
Topic: my-replicated-topic Partition: 0 Leader: 1 Replicas: 1,2,0 Isr: 1,2,0
Это даст вам список разделов для вашего topi c, где они расположены, какой узел является лидером для этого раздела (тот, который потребители должны потреблять, когда им нужны данные из этого раздела). раздел), а также некоторую дополнительную информацию, такую как In-Syn c Replica status или ISR, и коэффициент репликации.
Более подробная информация доступна в официальных документах Kafka здесь и здесь .
Имейте в виду, что когда ваш клиент подключается к bootstrap-server
, он не указывает полный список брокеров , с которых следует читать данные . Он просто указывает одного (или нескольких) брокеров, от которых можно получить информацию о кластере . Когда клиент читает / записывает из заданного топа c и раздела, это делается непосредственно соответствующему брокеру, который хранит эти данные ( независимо от конкретных брокеров, указанных в bootstrap). Вы можете увидеть больше об этом процессе здесь и здесь .