tl; dr
Являются ли лидеры кафки сами по себе или брокерами?
Лидером раздела является Кафка Брокер .
Лидер разделов
Это четко упоминается в Документы Kafka :
Каждый раздел имеет один сервер, который действует как «лидер» и ноль или более серверов, которые действуют как «последователи». Лидер обрабатывает все запросы на чтение и запись для раздела, в то время как последователи пассивно копируют лидера. Если лидер терпит неудачу, один из последователей автоматически становится новым лидером. Каждый сервер выступает в качестве лидера для некоторых своих разделов и последователя для других, поэтому нагрузка в кластере хорошо сбалансирована.
Следовательно, лидером раздела на самом деле является брокер , который служит для этой цели и отвечает за все запросы на чтение и запись для данного конкретного раздела.
Выбор лидера раздела
Назначение лидера для определенного раздела происходит во время процесса, называемого выборы лидера раздела . Этот процесс происходит, когда тема / раздел создается или когда лидер раздела (то есть посредник) недоступен по какой-либо причине.
Кроме того, вы можете принудительно выбрать предпочтительную реплику, используя Средство выбора предпочитаемого лидера реплики :
При репликации каждый раздел может иметь несколько реплик. Список реплик для раздела называется «назначенными репликами». Первая реплика в этом списке - «предпочтительная реплика». Когда тема / разделы созданы, Kafka гарантирует, что «предпочтительная реплика» для разделов по темам будет равномерно распределена среди посредников в кластере. В идеальном случае лидером для данного раздела должна быть «предпочтительная реплика». Это гарантирует, что лидерская нагрузка на брокеров в кластере будет равномерно сбалансирована. Однако со временем лидерская нагрузка может стать несбалансированной из-за отключений брокера (вызванных контролируемым отключением, сбоями, отказами машины и т. Д. c). Этот инструмент помогает восстановить лидерский баланс между брокерами в кластере.
Для этого вам необходимо выполнить следующую команду:
bin/kafka-preferred-replica-election.sh --zookeeper localhost:12913/kafka --path-to-json-file topicPartitionList.json
где содержимое topicPartitionList.json
должно выглядеть так, как показано ниже:
{
"partitions":
[
{"topic": "topic1", "partition": 0},
{"topic": "topic1", "partition": 1},
{"topic": "topic1", "partition": 2},
{"topic": "topic2", "partition": 0},
{"topic": "topic2", "partition": 1}
]
}
Как определить, какой брокер является лидером раздела
Чтобы определить, какой брокер обслуживает в качестве лидера раздела и выступающего в качестве In-Syn c Replicas (ISR), вы должны выполнить следующую команду:
kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic myTopic
, и выходные данные должны быть такими, как показано ниже:
Topic:myTopic PartitionCount:4 ReplicationFactor:1 Configs:
Topic: myTopic Partition: 0 Leader: 2 Replicas: 2 Isr: 2
Topic: myTopic Partition: 1 Leader: 3 Replicas: 3 Isr: 3
Topic: myTopic Partition: 2 Leader: 4 Replicas: 4 Isr: 4
Topic: myTopic Partition: 3 Leader: 0 Replicas: 0 Isr: 0