Вопрос проверяет понимание гарантий доставки сообщений и их влияния на надежность и дублирование данных.
Delivery semantics описывает гарантии доставки сообщений от producer’а к consumer’у. Kafka поддерживает at most once, at least once и exactly once семантики. Эти режимы отличаются риском потери и дублирования сообщений. Выбор семантики зависит от требований системы. Самая надежная, но сложная — exactly once.
Delivery semantics — это набор гарантий, определяющих, сколько раз сообщение будет доставлено consumer’у.
Сообщение:
может быть потеряно
никогда не обрабатывается более одного раза
Используется, когда потеря допустима и важна скорость.
Сообщение:
гарантированно будет доставлено
может быть обработано повторно
Это семантика Kafka по умолчанию при стандартной настройке consumer’ов.
Сообщение:
будет обработано ровно один раз
не теряется и не дублируется
Достигается за счет:
Идемпотентных producer’ов
Транзакций Kafka
Контроля commit offset’ов
Exactly once:
сложнее в настройке
имеет дополнительные накладные расходы
чаще используется в стриминговых приложениях
Kafka поддерживает разные delivery semantics, позволяя выбирать баланс между производительностью и надежностью обработки сообщений.