Концепция повторных попыток Kakfa - Какие базовые попытки будут остановлены в Kafka? - PullRequest
0 голосов
/ 05 мая 2020

Я новичок в Kafka, пытаюсь понять концепцию повторных попыток в Kafka. Какой базовый процесс повторных попыток будет завершен? Параметр Example Retries мы установили как 7. Теперь вопросы здесь:

  • Кафка будет повторяться все 7 раз?
    • Будут ли попытки до успешного завершения процесса? Если да, то как Кафка узнает об успехе?
    • Если это будет зависеть от любого параметра, что это за параметр и как?

Ответы [ 2 ]

0 голосов
/ 05 мая 2020

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

Из документации по свойствам производитель повторяет попытку -

"Установка значения больше нуля вызовет клиент для повторной отправки любой записи, отправка которой завершается неудачно с потенциально временной ошибкой . "

Это означает, что производитель kafka повторит попытку, если обнаруженная ошибка будет считаться" Retriable ". не все ошибки можно повторить - например, если целевой kafka topi c не существует, нет смысла пытаться отправить сообщение еще раз. но если, например, соединение было прервано, имеет смысл попробовать еще раз.

Важное примечание - повторные попытки актуальны, только если вы установили Broker ack! = 0.

Итак, в вашем примере у вас настроено 7 повторных попыток.

Я предполагаю, что для ack установлено значение, отличное от 0, потому что в этом случае попытки повторных попыток предприниматься не будут.

Если ваше сообщение не удалось с ошибка, не подлежащая повторному использованию, производитель Kafka не будет пытаться отправить сообщение снова (он фактически «откажется от этого сообщения» и перейдет к следующим сообщениям).

Если ваше сообщение завершилось неудачно с повторяющейся ошибкой , Производитель Kafka будет повторять отправку до тех пор, пока сообщение не будет успешно отправлено, или пока повторные попытки не будут исчерпаны (когда было предпринято 7 попыток, но ни одна из них не удалась).

Производитель клиента Kafka знает, когда ваше сообщение было успешно отправлено брокеру, потому что когда ack установлен в 1 \ all, брокер kafka «подтверждает» любое полученное сообщение и информирует производителя (в виде рукопожатия между een производитель и брокер).

см. подтверждения и повторные попытки @ https://kafka.apache.org/documentation/#producerconfigs

0 голосов
/ 05 мая 2020

В распределенных системах повторные попытки неизбежны . От сетевых ошибок до проблем репликации и даже сбоев в зависимостях нижестоящего уровня, сервисы, работающие в массовом масштабе, должны быть готовы к обнаружению, выявлению и обработке сбоев как можно более аккуратно.

Kafka будет повторять попытки, пока инициированный процесс не будет успешно завершен. завершено или счетчик повторных попыток равен нулю.

Kafka поддерживает статус каждого вызова API (производитель, потребитель и потоки), и если условие ошибки соответствует, то количество повторных попыток уменьшается.

Пожалуйста go через функцию completeBatch Отправителя. java в следующем URL-адресе для получения дополнительной информации.

https://github.com/apache/kafka/blob/68ac551966e2be5b13adb2f703a01211e6f7a34b/clients/src/main/java/org/apache/kafka/clients/producer/internals/Sender.java

...