Что мы подразумеваем под данными 'commit' в Kafka broker? - PullRequest
0 голосов
/ 02 мая 2018

В кластере Kafka, содержащем N брокеров, для Темы T относительно раздела производители публикуют данные в брокере Leader. Под термином «принятие» в терминологии Кафки это означает, что данные фиксируются в брокере Leader или данные передаются брокеру Leader, а также соответствующим подписчикам, доступным в списке ISR.

1 Ответ

0 голосов
/ 02 мая 2018

Управляется настройкой конфигурации производителя , называемой ack:

  • acks=0 Если установлено в ноль, то производитель вообще не будет ждать никакого подтверждения от сервера. Запись будет немедленно добавлена ​​в буфер сокета и будет считаться отправленной. Невозможно гарантировать, что сервер получил запись в этом случае, и конфигурация повторных попыток не вступит в силу (так как клиент обычно не будет знать о каких-либо сбоях). Смещение, возвращаемое для каждой записи, всегда будет установлено равным -1.

  • acks=1 (по умолчанию) Это будет означать, что руководитель записывает запись в свой локальный журнал, но отвечает, не ожидая полного подтверждения от всех подписчиков. В этом случае, если лидер потерпит неудачу сразу после подтверждения записи, но до того, как последователи реплицируют ее, запись будет потеряна.

  • acks=all Это означает, что ведущий будет ожидать полного набора синхронных реплик, чтобы подтвердить запись. Это гарантирует, что запись не будет потеряна, пока хотя бы одна синхронная реплика остается в живых. Это самая сильная из доступных гарантий.

...