Сможет ли новый узел kafka работать с существующей темой?

#apache-kafka #apache-zookeeper

#apache-kafka #apache-zookeeper

Вопрос:

Предположим, у нас есть кластер kafka с тремя узлами, и при создании темы были активны только два узла. И после этого, если мы вернем третий узел, сможет ли он собрать все данные этой вновь созданной темы. Я попытался отключить два других узла после появления третьего узла, и когда я описываю, третий узел не выступал в качестве лидера разделов.

 Topic: test PartitionCount: 6   ReplicationFactor: 2    Configs: segment.bytes=1073741824
Topic: test Partition: 0    Leader: none    Replicas: 0,1   Isr: 0
Topic: test Partition: 1    Leader: none    Replicas: 1,0   Isr: 0
Topic: test Partition: 2    Leader: none    Replicas: 0,1   Isr: 0
Topic: test Partition: 3    Leader: none    Replicas: 1,0   Isr: 0
Topic: test Partition: 4    Leader: none    Replicas: 0,1   Isr: 0
Topic: test Partition: 5    Leader: none    Replicas: 1,0   Isr: 0
  

Вместо этого он показывает none?

Ответ №1:

Созданная вами тема имеет ReplicationFactor: 2 . Это означает, что только 2 брокера имеют данные этой темы.

Поскольку у вас было запущено 2 брокера (0 и 1), они были выбраны в качестве реплик. Вы можете видеть, что все реплики для всех разделов находятся на 0 и 1. У других брокеров нет данных для этой темы.

Когда вы запускаете третьего брокера, он не будет размещать копию этой темы. Так что он не сможет стать лидером.

Если вы хотите, чтобы третий посредник также был репликой, вы можете увеличить коэффициент репликации до 3, например, следующим образом https://kafka.apache.org/documentation/#basic_ops_increase_replication_factor

Обратите внимание, что вы не сможете создать тему с коэффициентом репликации, равным 3, если у вас запущено только 2 брокера.

Комментарии:

1. Понятно, что раздел не будет расширен до вновь доступного брокера. Тогда как мы можем сказать, что kafka масштабируется по горизонтали?

2. Он масштабируется по горизонтали, потому что вы можете добавлять посредников и добавлять разделы для увеличения емкости кластера. Вы можете использовать такие инструменты, как круиз-контроль github.com/linkedin/cruise-control для выполнения описанных вами операций