我有以下Kafka集群:1个zk和2个代理,一台机器上的1zk + 1broker,另一台机器上的2broker。 我的主题是repl-factor = 2 partitions = 2 我使用制作人将大约4公里的内容发送到该主题。 另外,我有一个消费者,除了消费记录外,什么也不做:
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设置为100ms;
所以问题是为什么我总是观察到消费者和生产者之间的滞后? 我使用以下命令获取延迟:
./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-4k的延迟,但是我的使用者实际上对记录不做任何操作,因此它应该立即消耗,我希望延迟为0。 另外,我尝试将生产者负载降低到每秒30条消息,但是消费者仍然显示LAG(〜30-50)。可以达到0 LAG吗?