Кафка, управляй другими смещениями разделов - PullRequest
0 голосов
/ 25 сентября 2018

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

Одна группа услуг использует тему, используя группу потребителей A, а другая группа услуг использует тему, используя группу потребителей B.

Обычно группа потребителей A обрабатывает события намного быстрее, чем группа B.

Я хочу, чтобы потребители в группе А не слишком опережали потребителей в группе В.

Есть ли способ сделать это?

Могу ли я замедлитьпотребление группы A, если группа B отстает слишком далеко, или я могу заставить группу B каким-либо образом контролировать смещение группы A, используя Kafka.

(причина медлительности в обслуживании потребителей b заключается в двухчем меньше выделено, тем медленнее используется серверная часть)

1 Ответ

0 голосов
/ 25 сентября 2018

Могу ли я, возможно, замедлить потребление группы A, если группа B слишком сильно отстает

Если у вас есть доступ к позиции группы B, тогда вы можете просто избежать вызова poll в группеПотребитель A, пока группа B не догонит (если вы используете какую-то толстую упаковку, такую ​​как spring-kafka, вам может потребоваться остановить и заново создать слушателя).

В зависимости от того, как настроены группы для сохранения смещенийдругая группа также может получить доступ к позиции группы, прочитав тему внутренняя __consumer_offsets (вы можете посмотреть, как это делает bin/kafka-consumer-groups.sh из каталога сервера).

можетЯ получаю группу B для управления смещением группы A любым способом

Не совсем.Вы можете написать в __consumer_offsets, чтобы изменить смещение группы A, но это значение будет считываться только при повторном создании потребителя, не , когда оно все еще работает.По сути, если вам нужен такой уровень связи, вам нужно написать собственный код, который бы позволил службе Group-B связываться со службой Group-A, чтобы изменить его смещение с помощью seek.

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

...