Разница между свойствами request.timeout.ms и timeout.ms производителя Kafka

Ссылаясь на документацию Kafka, конфигурация производителя сообщений Kafka имеет свойства request.timeout.ms и timeout.ms. Читая описание этих двух свойств, я не могу четко их различить.

Может ли кто-нибудь объяснить разницу, используя небольшой пример.


person vatsal mevada    schedule 24.11.2016    source источник


Ответы (2)


request.timeout.ms — это тайм-аут, настроенный на стороне клиента. В нем говорится, что клиент будет ждать столько времени, пока сервер ответит на запрос.

timeout.ms — это тайм-аут, настроенный для лидера в кластере Kafka. Это тайм-аут на стороне сервера. Например, если вы установили для параметра acks значение all, сервер не будет отвечать до тех пор, пока все его подписчики не отправят ответ обратно лидеру. Лидер будет ждать timeout.ms времени, пока все подписчики ответят.

Итак, клиент отправляет запрос на сервер (лидер). В зависимости от настройки acks сервер либо будет ждать, либо ответит клиенту. timeout.ms — это количество времени, в течение которого лидер ожидает своих последователей, тогда как request.timeout.ms — это количество времени, в течение которого клиент ожидает сервера (лидера).

person yaswanth    schedule 24.11.2016
comment
по этой логике мы можем сказать, что request.timeout.ms = timeout.ms + сетевые накладные расходы? - person vatsal mevada; 25.11.2016
comment
В каком-то смысле можно так сказать. - person yaswanth; 28.11.2016

Оба они используются для общего базового сетевого клиента, что означает максимальное время ожидания ответа на запрос, хотя timeout.ms помечен как «Устаревший». На самом деле timeout.ms используется только на стороне производителя, а request.timeout.ms может быть определен как для клиента (включая производителя и потребителя), так и для сервера (для репликации потоков).

Kafka рекомендует пользователю указывать request.timeout.ms вместо timeout.ms.

person amethystic    schedule 25.11.2016
comment
Можете ли вы предоставить ссылку на какую-либо официальную документацию, в которой упоминается, что timeout.ms устарел. - person vatsal mevada; 25.11.2016
comment
Официальный документ не обновлялся, но вы можете найти его в исходном коде. На самом деле, если вы укажете timeout.ms, вы получите предупреждение о том, что конфигурация timeout.ms устарела и скоро будет удалена. Пожалуйста, используйте request.timeout.ms - person amethystic; 25.11.2016
comment
Я имею в виду Кафку 0.10.1.0 - person amethystic; 25.11.2016