Защищает ли Kafka от потребителей, совершающих транзакции после сетевого раздела? - PullRequest
2 голосов
/ 21 июня 2020

Предположим:

  1. Потребитель Kakfa читает сообщение M из назначенного ему раздела P
  2. Оно разделяется по сети от брокера
  3. Kafka обнаруживает это и переназначает P потребителю на другой машине.
  4. Сетевой раздел исцеляется, и первый потребитель пытается зафиксировать смещение для сообщения M

Будет ли выбрано какое-либо исключение на шаге 4? Есть ли проверка, которая обнаруживает, что первому потребителю больше не назначен раздел P, и поэтому не следует делать для него смещения?

Ответы [ 2 ]

0 голосов
/ 21 июня 2020

https://cwiki.apache.org/confluence/display/KAFKA/A+Guide+To+The+Kafka+Protocol

Смещения для данной группы потребителей поддерживаются определенным брокером c, называемым координатором группы. т. е. потребитель должен выдать свою фиксацию смещения и запросить выборку для этого спецификационного c брокера

Поскольку отвечает один координатор группы, и он знает, какие потребители назначили раздел, а какие потребители больше не имеют назначено разделу

Когда они снова присоединяются, они обрабатываются так же, как новый потребитель, присоединяющийся к группе потребителей. Они получат один или несколько разделов, назначенных путем перебалансировки (которые могут полностью отличаться от разделов, которые они читали в прошлый раз), а consumer_offset topi c сообщит им, с чего начать чтение.

0 голосов
/ 21 июня 2020

В этом случае первый потребитель больше не может фиксировать смещение. Назначенный раздел будет отозван, и когда он снова присоединится к группе потребителей, будет запущен процесс перебалансировки. Так что ответ - да.

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