Как динамически масштабировать поток Kafka? - PullRequest
1 голос
/ 16 мая 2019

У меня фиксированное количество разделов темы. Производители производят данные с разной скоростью в разные часы дня.

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

Например, у меня есть 10 разделов темы. Я хочу задействовать 5 потребителей в часы без пиковой нагрузки и 20 потребителей в часы максимальной нагрузки.

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

Есть ли механизм для этого?

1 Ответ

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

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

Поэтому, если вы хотите отключить 20 потребителей, вам нужно увеличить количество разделов.темы, по крайней мере, 20, в противном случае 10 ваших потребителей будут неактивны.

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

Подводя итог,

  1. Увеличьте количество разделов вашей темы до 20.
  2. Создайте механизм, который будет создавать и убивать потребителей на основе пиковых / отключенных значений.-пик часов и убедитесь, что когда вы пинаете потребителя, он принадлежит к существующей группе потребителей, чтобы сообщения использовались только один раз.
...