Кафка: Что происходит, когда соединение прерывается до того, как потребитель заканчивает чтение темы? - PullRequest
0 голосов
/ 15 февраля 2019

Что произойдет, если потребитель начнет читать тему, а затем интернет-соединение прервется до того, как он закончит чтение?Сообщение по теме все еще остается?Как Кафка справляется с таким сценарием?

1 Ответ

0 голосов
/ 15 февраля 2019

Обычно потребители очереди отслеживают явные подтверждения .То есть потребитель говорит: «Спасибо, я обработал это», а сервер - «Пожалуйста».

Кафка обрабатывает это, сохраняя смещение .Смещение - это позиция потребителей в потоке.Например, допустим, у меня есть поток с четырьмя элементами.

A, B, C, D

На первой позиции A, поэтому потребитель со смещением 0 будет тянуть A.Как только они обработают A, они обновят свое смещение до 1.Распространенной практикой является сохранение этого на стороне брокера в теме __consumer_offsets.

Когда их смещение становится 1, они получают следующее, то есть B.Они обрабатывают и увеличивают свое смещение в теме __consumer_offsets, 2. И т. Д. И т. П.

Так что же происходит во время простоя во время чтения?

Естьграфик событий, которые следует учитывать во время этого отключения:

  1. Потребитель запрашивает следующий элемент в теме, основываясь на его смещении.
  2. Потребитель начинает чтение следующего элемента в теме.
  3. Потребитель заканчивает чтение элемента в теме.
  4. Потребитель обрабатывает элемент в теме.
  5. Потребитель обновляет свое смещение в теме __consumer_offsets.
  6. Вернитесь к 1.

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

Ошибка, которая возникает после того, как 4 завершена, но 5 не завершена, NOT приведет кв переработке.Вместо этого он восстановит соединение, обновит смещение и обработает следующий элемент.

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