У меня есть следующий кластер Kafka: 1 zk и 2 брокера, 1zk + 1 брокер на одной машине и 2 брокера на другой.У меня есть тема с repl-factor = 2 partitions = 2 Я отправляю около 4k сообщений в эту тему, используя моего производителя.Кроме того, у меня есть потребитель, который просто делает ничего, кроме потребления записей:
try {
consumer.subscribe(topics);
while (true) {
ConsumerRecords<String, String> records = consumer.poll(0);
for (ConsumerRecord<String, String> record : records) {
}
}
} catch (WakeupException e) {
} finally {
consumer.close();
}
Для потребителя установлено AUTO_COMMIT_INTERVAL_MS_CONFIG на 100 мс;
Поэтому вопрос заключается в том, почему я всегда наблюдаю отставание между потребителем и производителем?Я использую следующую команду для получения лага:
./bin/kafka-consumer-groups.sh --describe --group events-group-test --bootstrap-server kafka01:9092
У меня есть сценарий cmd, который просто печатает лаги для меня в цикле:
-bash-4.2$ while true; do date +%H:%M:%S;./bin/kafka-consumer-groups.sh --describe --group events-group-test --bootstrap-server kafka01:9092 | awk '$5 ~ /[0-9.]+/ { print "part:" $2" lag: "$5}'; sleep 20; done prints
11:31:04
Note: This will not show information about old Zookeeper-based consumers.
part:0 lag: 1207
part:1 lag: 1100
11:31:29
Note: This will not show information about old Zookeeper-based consumers.
part:0 lag: 5476
part:1 lag: 4692
11:31:53
Note: This will not show information about old Zookeeper-based consumers.
part:0 lag: 3389
part:1 lag: 1646
11:32:16
Note: This will not show information about old Zookeeper-based consumers.
part:0 lag: 1365
part:1 lag: 593
11:32:39
Note: This will not show information about old Zookeeper-based consumers.
part:0 lag: 4575
part:1 lag: 3488
11:33:03
Note: This will not show information about old Zookeeper-based consumers.
Как видите, он всегда показывает лаги~ 3-4 тыс. Сообщений, но мой потребитель буквально ничего не делает с записями, поэтому он должен потреблять мгновенно, и я ожидаю 0 лагов.Кроме того, я попытался уменьшить загрузку производителя до 30 сообщений в секунду, но потребитель все еще показывает LAG (~ 30-50).Можно ли достичь 0 ЛАГ?