2017-01-06 7 views
1

Я делаю тестовый прогон с Kafka, используя производителя и потребителя командной строки.Производитель/потребитель командной строки Kafka имеет 1 секунду латентности

Я бегу это в одном окне терминала

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic tag7 

и это в другом

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic tag7 --zookeeper localhost:2181 

но занимает более 1 секунды для данных, которые я послал для печати потребителем. Данные, которые я отправляю, это то, что я набираю для продюсера, так что в основном 1 сообщение каждые несколько секунд. Существуют ли какие-либо параметры конфигурации, которые я могу изменить, чтобы брокер Kafka ожидал очень мало сообщений в секунду и, таким образом, значительно ускорял передачу сообщений?

Я использую конфигурации Zookeeper и Kafka по умолчанию, поэтому я не настроил многого.

Спасибо заранее!

ответ

1

Для Kafka существует два параметра конфигурации: один устанавливает минимальный объем данных, полученных до ответа на запрос потребителя, а другой устанавливает максимальный период времени, чтобы дождаться появления этих данных до ответа на запрос.

Вы можете попробовать добавить следующие опции:

--consumer-property fetch.max.wait.ms=0 --consumer-property fetch.min.bytes=0 

Для получения дополнительной информации:

2

В ответ от Ivan Georgiev не работает для меня (и не только потому, что о потребителе и не продюсер), я открыл another question here in StackOverFlow, и, наконец, также в Apache's Jira и ppatierno (спасибо) ответил, почему это случилось и как его решить.

Для изменения свойств производителя консольного linger.ms (1000 мс по умолчанию) и batch.size (16384 по умолчанию), вы должны указать его в командной строке с --timeout и --max-partition-memory-bytes соответственно, к примеру, если вы находитесь в главной папке Кафки:

./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic testConsole --timeout 100 
+0

Фактически оба ответа являются правильными. Ответ Ивана - это то, как вы настраиваете потребительскую задержку, и этот ответ заключается в том, как вы настраиваете задержку производителя. Просто случается, что есть больше возможностей для улучшения от значений по умолчанию на стороне производителя. Если вы сделаете оба, вы должны получить наилучшие результаты для латентности от конца до конца. –

+0

Да, я знаю (я хочу добавить его к моему ответу, спасибо!), Дело в том, что не нужно (по крайней мере, в версии 0.10.2.1) делать какую-либо мелодию у потребителя, чтобы иметь задержку менее одной секунды который создается производителем. – Franmoti

+0

Также консоль-продюсер по умолчанию имеет значение acks = 1, что уменьшает задержку, но также может привести к потере сообщений, поэтому не удивляйтесь, если вы видите потерю сообщения при убийстве брокеров и тестировании отказоустойчивости при использовании значений по умолчанию. –

 Смежные вопросы

  • Нет связанных вопросов^_^