Что такое лидер раздела в Apache Kafka? - PullRequest
0 голосов
/ 24 марта 2020

Являются ли лидеры кафки подразделениями сами или они брокеры? Мое первоначальное понимание состояло в том, что они были разделами, которые действовали как агенты чтения / записи, которые затем переносили свою ценность на ISR.

Однако недавно я слышал, что они упоминались так, как будто они происходят на уровне "брокера", следовательно, мой путаница.

Я знаю, что есть другие посты, которые направлены на ответ на этот вопрос, но ответы там не помогли.

Ответы [ 4 ]

1 голос
/ 24 марта 2020

Некоторые ответы здесь не совсем верны, поэтому я хочу сделать это более понятным.

Каждый раздел имеет ровно одного лидера раздела, который обрабатывает все запросы на чтение / запись этого раздела.
Если коэффициент репликации больше 1, дополнительные репликации раздела действуют как последователи раздела .
Кафка гарантирует, что каждая реплика раздела находится у другого брокера (будь то лидер или последователь), поэтому максимальный коэффициент репликации равен числу брокеров.

Каждый последователь раздела читает сообщения от лидера раздела (действует как своего рода потребитель) и не обслуживает потребителей этого раздела (только чтение раздела выполняет чтение / запись).
Последователь раздела считается синхронизированным c, если он продолжает считывать данные с лидера раздела, не отставая и не теряя соединения с ZooKeeper (максимальное время задержки по умолчанию составляет 10 секунд, а время ожидания ZooKeeper равно 6, они оба настраиваются).
Если подписчик раздела отстает, он считается несинхронным c.
Когда лидер раздела отключается по какой-либо причине (фактически, посредник, в котором он находится, выключается), один из in-syn c последователи раздела становятся новым лидером.

Раздел репликации в документации Kafka объясняет это в деталях.
Конфлюент также написал хороший блог об этой теме c.

0 голосов
/ 24 марта 2020

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
0 голосов
/ 24 марта 2020

Я думаю, что документация Kafka прояснит вашу путаницу:

Распространение:

Разделы журнала (Kafka topi c) распределены через серверы в кластере Kafka, где каждый сервер обрабатывает данные и запросы на разделение разделов. Каждый раздел реплицируется на настраиваемое количество серверов для обеспечения отказоустойчивости.

Каждый раздел имеет один сервер, который действует как «лидер» , и ноль или более серверов, которые действуют как «последователи». Лидер обрабатывает все запросы на чтение и запись для раздела, в то время как последователи пассивно копируют лидера. Если лидер терпит неудачу, один из последователей автоматически становится новым лидером. Каждый сервер выступает в качестве лидера для некоторых своих разделов и последователя для других, так что нагрузка в кластере хорошо сбалансирована.

Таким образом, каждый раздел Kafka topi c имеет по крайней мере одного лидера и может иметь ноль или несколько подписчиков (репликации). Лидер сидит на одном из брокеров / серверов в кластере Kafka.

0 голосов
/ 24 марта 2020

Все topi c -разделы в Кафке имеют одного лидера, а если коэффициент репликации больше 1, у лидера есть последователи. Лидеров разделов можно проверить с помощью этой команды:

bin/kafka-topics.sh --bootstrap-server localhost:9092 --topic myTopic --describe

В выходных данных этой брокера идентификаторы лидеров разделов отображаются как leader: xx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...