Потребители Кафки крутятся в опросе () или их разбудил трансляция / сигнал от брокера? - PullRequest
1 голос
/ 25 октября 2019

Если я poll() из consumer в операторе while True:, я вижу, что poll() блокирует. Если потребитель в курсе последних сообщений из этой темы (offset = OFFSET_END), как потребитель проводит блокировку poll()?

Придерживается ли потребитель по умолчанию приверженности паба / подсознания, в которой он спит, иждет публикации и широковещательной рассылки / сигнала от брокера?

Или потребитель постоянно раскручивает себя, проверяя тему?

Я пользуюсь клиентом Python, если это имеет значение.

Спасибо!

Ответы [ 2 ]

1 голос
/ 25 октября 2019

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

Используйте параметр ниже, указанный Kafka Broker, для управления сообщением, которое нужно отправить Потребителю

  1. fetch.min.bytes: Брокер будет ожидать заполнения этого объема данных ДО того, как отправит ответ клиенту-клиенту.
  2. fetch.wait.max.ms :Брокер будет ждать этого времени ПЕРЕД отправкой ответа клиентскому клиенту, если только у него недостаточно данных для заполнения ответа (fetch.message.max.bytes)

Существует возможность занять много временивремя вызова следующего опроса () из-за обработки использованных сообщений. max.poll.interval.ms не позволяют обрабатывать, тратят так много времени и вызывают следующий опрос в пределах max.poll.interval.ms, в противном случае потребитель покидает группу и вызывает изменение баланса. Вы можете получить более подробную информацию об этом здесь

  1. max.poll.interval.ms: Увеличив интервал между ожидаемыми опросами, вы можетедать потребителю больше времени для обработки пакета записей, возвращенных из опроса (long). Недостаток заключается в том, что увеличение этого значения может задержать перебалансировку группы, поскольку потребитель присоединится к перебалансировке только при вызове к опросу. Вы можете использовать эту настройку, чтобы ограничить время, чтобы завершить восстановление баланса, но вы рискуете замедлить прогресс, если потребитель не сможет достаточно часто вызывать опрос.
  2. max.poll.records: Используйте эту настройкуограничить общее количество записей, возвращаемых из одного звонка на опрос. Это может упростить прогнозирование максимума, который должен обрабатываться в каждом интервале опроса. Настроив это значение, вы сможете уменьшить интервал опроса, что уменьшит влияние перебалансировки групп.
1 голос
/ 25 октября 2019

потребители kafka - это, в основном, длинные циклы опроса, управляемые (асинхронно) пользовательским потоком, вызывающим poll ().

весь протокол является запросом-ответом и полностью управляется клиентом. не существует никакой формы "push", инициируемой брокером.

fetch.max.wait.ms контролирует, как долго любой отдельный брокер будет ждать ответа (если нет данных), в то время как блокировка пользовательского потока контролируетсяаргумент для poll ()

...