Изменение баланса потребителей Kafka и его влияние

Я новичок в Kafka и пытаюсь создать библиотеку-обертку на Java и Go (использует Confluent/Kafka-Go) для внутреннего использования Kafka. Для моего варианта использования CommitSync является критически важным шагом, и мы должны выполнять чтение только после правильной фиксации старого. Повторная обработка не является большой проблемой, и наш клиентский сервис достаточно идемпотентен. Но потеря данных является серьезной проблемой и не должна происходить.

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

Я хотел бы узнать больше о:

1) Проблема с сетью во время обработки потребителем: что происходит, когда сеть отключается на короткое время и возвращается? Потребитель Кафки автоматически обрабатывает это и становится живым, когда сеть возвращается, или мы должны повторно инициализировать их? Если они вернутся живыми, возобновят ли они работу с того места, где они остались? Например: Consumer X прочитал 50 записей из раздела Y. Теперь внутреннее смещение потребителя переместилось на +50. Но до совершения проблемы с сетью происходит, и она оживает. Теперь у потребителя будут метаданные о том, что он прочитал для последнего опроса. Можно ли продолжать фиксировать +50 в смещении?

2) Перебалансировка в группах потребителей. Влияние их на существующий потребительский процесс - будет ли существующий экземпляр работающего потребителя приостанавливать и возобновлять работу во время перебалансировки, или нам придется их повторно инициализировать? Как долго может произойти перебалансировка? Если потребитель восстанавливается после восстановления баланса, есть ли у него метаданные о последнем прочтении?

3) Что происходит, когда потребитель присоединяется во время восстановления баланса. В идеале это снова сценарий восстановления баланса. Что теперь будет? Существующий будет отброшен, а новый запустится или будет ждать завершения существующего перебалансирования?

Пожалуйста, помогите мне понять эти сценарии подробно и предложить решения, если это возможно. Также было бы гораздо полезнее, если бы вы указали мне на ресурс - онлайн-статью / книгу или что-нибудь, что дает представление о сложных деталях Kafka.

0 ответов

Что происходит, когда сеть на короткое время отключается и возвращается? Клиент Kafka автоматически обрабатывает это и становится живым, когда сеть возвращается, или нам нужно повторно инициализировать их?

Потребитель попытается восстановить соединение. Если координатор группы потребителей не получает контрольных сигналов или брокеры не отвечают брокерам, происходит ребалансировка группы.

Если они вернутся живыми, возобновят ли они работу с того места, откуда они ушли?

Из последнего зафиксированного смещения - да.

будет ли существующий рабочий экземпляр потребителя приостановить и возобновить работу во время перебалансировки

Он будет приостановлен и возобновлен. Не требуется никаких действий.

Как долго может происходить ребалансировка?

Зависит от многих факторов и может происходить бесконечно при определенных условиях.

Если после перебалансировки потребитель оживает, есть ли у него метаданные о последнем чтении?

Последние зафиксированные смещения хранятся у брокера, а не у потребителей.

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

Все повторные бланки должны быть выполнены до продолжения любых опросов.

Другие вопросы по тегам