Apache Kafka使用者始终落后

时间:2019-02-07 19:54:45

标签: java apache-kafka kafka-consumer-api

我有以下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吗?

0 个答案:

没有答案