Изменение баланса потребителя kafka в случае ручного / назначенного разбиения - PullRequest
0 голосов
/ 11 февраля 2019

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

Допустим, в одной группе 3 раздела и 3 потребителя, и каждый раздел вручную назначается каждому потребителю.И через некоторое время 3-й потребитель отказался.Так как нет восстановления баланса, какие все меры я могу предпринять, чтобы обеспечить минимальное время простоя?Нужно ли менять конфигурацию любого из первых двух разделов, чтобы начать использовать третий раздел или что-то еще?

Ответы [ 2 ]

0 голосов
/ 30 мая 2019

Хотя может существовать контекст, который сделает подход действительным, как написано, я немного сомневаюсь в вашем подходе.

Лучший способ обеспечить минимальное время простоя - позволить брокерам и zookeeper kafka делать то, что у них хорошо получается, управлять своей рабочей нагрузкой (разделами) среди своих потребителей, в том числе переназначать разделы, когда потребитель выходит из строя.

Ваш лучший путь, вероятно, будет использовать события OnPartitionsRevoked и OnpartitionsAssigned для обработки любой логики, необходимой для создания нового раздела (более подробную информацию об этих событиях см. В ссылке JRs).

Я опишу недавний вариант использования, который у меня был, в надежде, что он уместен для вашего варианта использования.Недавно у меня было 5 потребителей, которым требовался кэш-память в 50 миллионов объектов.Без разделения у каждого потребителя был свой кэш, в результате чего получалось 250 миллионов объектов.Чтобы уменьшить это число до первоначальных 50 миллионов, мы могли бы использовать событие onpartitionsrevoked для очистки кеша и onassigned для повторного заполнения кеша соответствующим кешем для назначенных разделов.

Если не использовать эти два обработчика, если вы действительно хотите вручную назначить свои разделы, вам придется выполнить всю оркестровку самостоятельно:

  1. Что-то для мониторинга, еслиодин из других потребителей не работает
  2. Что-то, что может забрать раздел мертвого потребителя и обработать его
  3. Организовать связь между потребителями, чтобы общаться, когда мертвый потребитель снова оживает, чтобы он мог начать работатьснова.

Как вы, вероятно, можете сказать из списка, вы попадете в реальный мир боли, если вы заставите себя пойти по этому пути, и вы, вероятно, не сделаете работу лучше, чемKafka Brokers - есть целый бизнес, все внимание которого сосредоточено на разработке и поддержке kafka, поэтому вам не придется справляться со всей этой сложностью.

0 голосов
/ 11 февраля 2019

Ну, я не знаю, зачем вам назначать разделы для потребителей вручную?

Я думаю, вам нужно написать rebalanceListener.https://kafka.apache.org/0100/javadoc/org/apache/kafka/clients/consumer/ConsumerRebalanceListener.html

Мой совет: просто позвольте kafka решить, какой потребитель будет слушать какой раздел, и вам не придется об этом беспокоиться.

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