max.poll.records в сочетании с fetch.min.bytes - PullRequest
0 голосов
/ 30 апреля 2020

Я читаю это Как max.poll.records влияет на опрос потребителей , а также apache kafka docs, и я до сих пор не уверен, что fetch.min.bytes не изменилось, и по умолчанию равен 1, обязан ли брокер kafka вернуть max.poll.records записей, если это доступно или нет?

Согласно нашим тестам, он не всегда возвращает так много, даже если в топи c имеется достаточно данных, и объяснение этого параметра из документации и его полное имя не подразумевают, что это должно, но некоторые люди склонны думать об обратном. Мы также увеличили лимиты, которые могли бы потенциально предотвратить это, например, message.max.bytes, max.message.bytes, max.partition.fetch.bytes и fetch.max.bytes (тот, который нам на самом деле увеличивать не нужно, так как значение по умолчанию довольно высокое, 50 МБ), но это ничего не изменило.

Мы также не изменили fetch.max.wait.ms, и по умолчанию 500, то есть половина секунды, поэтому, если fetch.min.bytes не установлено к чему-то больше чем 1 байт, тогда этот параметр вступает в силу, ie, это определяет, сколько записей фактически возвращено? Что означало бы, что если было возвращено меньше max.poll.records, то это потому, что для извлечения этой информации потребовалось бы более 500 мс?

1 Ответ

1 голос
/ 30 апреля 2020

Эти две конфигурации могут сбивать с толку, и хотя на первый взгляд они похожи, они работают совершенно по-разному.

  • fetch.min.bytes: Это значение является одним из полей запросов на выборку. (это min_bytes в http://kafka.apache.org/protocol#The_Messages_Fetch). Это значение используется брокером, чтобы решить, когда отправлять ответ Fetch обратно клиенту. Когда брокер получает запрос на получение, он может удерживать его до fetch.max.wait.ms, если нет доступных fetch.min.bytes байтов для использования (например, потребитель находится в конце журнала, или сообщения, которые должны быть использованы, добавляют к менее чем с таким размером).

  • max.poll.records: Этот параметр используется только в среде «Потребитель» и никогда не отправляется брокерам. В фоновом режиме (асинхронно) клиент-потребитель активно выбирает записи из посредника и буферизует их, чтобы при вызове poll() он мог возвращать уже выбранные записи. Как следует из названия, эти настройки определяют, сколько записей максимум poll() может вернуть из буфера потребителя.

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