сообщение кафки перебалансируется при закрытии брокера - PullRequest
1 голос
/ 08 мая 2019

Общий вопрос.Предположим, что в теме есть 3 раздела kafka на разных серверах (брокерах), каждый раздел имеет 10 сообщений со смещением в качестве своей временной метки (0,1, ..., 9, большее число означает, что в разделе оставалось меньше времени, а также означает, что пришло новое сообщение).Допустим, один раздел отключился, так как сервер готов.Какая стратегия для Кафки, чтобы перебалансировать сообщение 10 в закрытом разделе в другие разделы?

Визуально, у нас есть

раздел брокера 1: | 1-0 | 1-1 |1-2 | 1-3 | 1-4 | 1-5 | 1-6 | 1-7 | 1-8 | 1-9 |

Брокер 2, раздел: | 2-0 | 2-1| 2-2 | 2-3 | 2-4 | 2-5 | 2-6 | 2-7 | 2-8 | 2-9 |

Брокер 3 раздел: | 3-0 | 3-1 | 3-2 | 3-3 | 3-4 | 3-5 | 3-6 | 3-7 | 3-8 | 3-9 |

Теперь, если брокер 3 готов, как будет 3От -0 до 3-9 вставляются в брокер 1 и брокер 2?

(Я предполагаю, что по умолчанию он будет распределен наполовину случайным образом и вставлен на основе метки времени брокера 3, прикрепленной к хвосту брокера 1 и 2, и, возможно, где-то можно настроить поведение по коду?)

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 08 мая 2019

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

Чтобы данные были доступны, даже если брокеры вышли из строя, вам нужно создавать темы с коэффициентом репликации больше 1.

Затем данные раздела будут реплицированы на нескольких посредников, и если один из них перейдет в автономный режим, пользовательский трафик будет перенаправлен на доступные реплики.

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

1 голос
/ 09 мая 2019

Следующая диаграмма поможет вам понять, как Kafka реплицирует разделы. Если один брокер не работает, потребитель может читать данные другого брокера, потому что у Kafka есть возможность репликации. (Конечно, вам нужно установить его как показано ниже) Например, если умирает брокер 1, брокер 2 становится лидером topic1-part1, и потребитель может читать из него.

enter image description here

Zookeeper будет знать, не работает ли брокер (раздел), он назначит другого лидера.

...