Как Kafka предоставляет следующий пакет записей для опроса, когда commitAsyn c терпит неудачу при фиксации смещения - PullRequest
0 голосов
/ 05 августа 2020

У меня есть пример использования, касающийся использования записей потребителем Kafka. Например, у меня есть 1 топи c с 1 разделом. В настоящее время у него 10 записей, и при использовании первых 10 записей в раздел записываются еще 10 записей.

  1. myConsumer опрашивает первый раз и возвращает первые 10 записей, например 0-9 записей *. 1004 *
  2. Он успешно обработал все записи.
  3. Он вызвал commitAsyn c () в Kafka для фиксации последнего смещения.
  4. Ответ на фиксацию находится в обработке. Это может быть успех или неудача.
  5. Но, поскольку это асинхронный режим, он продолжает опрашивать следующий пакет.
  6. Теперь, откуда Kafka или опрос потребителей знают, что он должен читать с 10 позиции? Поскольку запрос commitAsyn c еще не завершен.

Пожалуйста, помогите мне понять эту концепцию.

1 Ответ

0 голосов
/ 05 августа 2020

Смещение фиксации сообщает брокеру , что потребитель успешно обработал соответствующее сообщение. Сам потребитель будет знать о своем прогрессе (за исключением запуска потребителя, где он получает свое последнее подтвержденное смещение от брокера).

На шаге 5 в вашем описании смещение фиксации выполняется. Итак:

  • Брокер не знает, что 0-9 записей были обработаны
  • Потребитель сам прочитал сообщения и поэтому он знает, что они были прочитаны 0-9 сообщений. Таким образом, он будет знать, что дальше следует читать 10-е.

Возможный сценарий ios

  1. Допустим, фиксация не выполняется для (0-9). Ваша следующая партия, скажем (10-15), обработана и зафиксирована успешно, тогда никакого вреда не будет. Поскольку мы отмечаем брокеру, что обработка до 15 завершена.
  2. Допустим, фиксация завершилась неудачно для (0-9). Ваша следующая партия (10-15) обрабатывается, и перед фиксацией потребитель отключается. Когда ваш потребитель возвращается к работе, он получает свое состояние от брокера (у которого нет фиксации ни для одного из пакетов). Таким образом, он начнет чтение с 0-го сообщения.

Вы также можете придумать несколько других сценариев ios. Я полагаю, что суть в том, что важность фиксации станет очевидной, когда ваш потребитель будет перезапущен по какой-либо причине и получит последнее обработанное смещение от брокера kafka.

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