繁体   English   中英

测量Kafka Streams中的处理吞吐量

[英]Measure processing throughput in Kafka Streams

我在java中建立了一个流(匿名化一些变量和类):

    Map<String, Object> props = new HashMap<>();
    Properties config = new Properties();
    config.put(StreamsConfig.APPLICATION_ID_CONFIG, "my-stream-processing-application");
    config.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "my-kafka-broker:6667");
    config.put(StreamsConfig.KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass());
    config.put(StreamsConfig.VALUE_SERDE_CLASS_CONFIG, Serdes.String().getClass());

    KStreamBuilder builder = new KStreamBuilder();
    KStream<String, String> events = builder.stream("my-topic");

    events.foreach((key, value) -> {
        CustomClass instance = new CustomClass(value);
        for (AnotherCustomClass anotherInstance: someIterator) {
            anotherInstance(instance);
        }
    });

    KafkaStreams streams = new KafkaStreams(builder, config);
    streams.start();

对于kafka 0.10.0.0

compile group: 'org.apache.kafka', name: 'kafka-streams', version: '0.10.0.0'
compile group: 'org.apache.kafka', name: 'kafka-clients', version: '0.10.0.0' 

我的问题如下:

  • 如何在foreach循环中访问KafkaStreams streams.metrics 为了读取和/或打印处理的消息吞吐量
  • 更笼统地说: 我如何测量所处理的消息吞吐量? “已处理”是指一条消息,表明 已评估 anotherInstance(instance)

Kafka Streams通过JMX(Java管理扩展)公开了所有指标。 您可以使用JConsoleVisualVM检查这些指标。 借助这些工具,您可以浏览所有指标并绘制图形。

为了检查您的应用程序正在处理多少消息,请查看该指标:

MBean: kafka.streams:type=stream-metrics,thread.client-id=[threadId]
Attribute: process-rate

它告诉您所有任务每秒平均处理的消息数。

Kafka Streams指标的完整列表可以在官方文档中找到

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM