【问题标题】:Kafka streams threads and count of records being processedKafka 流式处理线程和正在处理的记录数
【发布时间】:2020-09-29 12:01:02
【问题描述】:

假设我们有一个包含 2 个分区的主题,并且有“n”个生产者正在为该主题生成数据。现在,数百万条 MessageRecord 分布在 2 个分区中。

假设,我们有 2 个线程(即 2 个单独的实例)为流处理器供电。现在,在此设置中,假设 Thread-1(即 Streaming Task-1)获得了 Partition P-1,并说 Thread-2(即 Streaming Task-2)获得了 Partition P-2 进行处理!

ASK 是:- 比如说,我们想知道,到目前为止,Streaming-Task-1 已经处理了多少MessageRecords,或者说是 9 月 28 日,2KK?我该怎么做?

而且,更大的问题是:“Streaming-Task-1”永远不会知道正在处理的MessageRecords 的总计数,它只会知道自己处理的计数!!

它能知道它知道另一个 Task-2 处理的计数吗??

【问题讨论】:

    标签: apache-kafka kafka-consumer-api apache-kafka-streams confluent-platform


    【解决方案1】:

    有几种方法可以完成您的要求。如果您使用的是 DSL,我建议您查看字数统计示例 (https://docs.confluent.io/current/streams/quickstart.html)。通过地图操作,您可以相对简单地进行所有计数。

    如果您不使用 dsl,您仍然可以使用几个处理器和状态存储来执行相同操作。

    【讨论】:

    • 感谢您的回复。我浏览了突出显示的链接,但我有疑问。这样,每个 Stream-Procssing-Task 将仅计算该任务处理的记录数。我想知道记录的总数!因为正在创建的 KTable 仅对该流式传输任务是本地的。对 ??怎么解决!!
    • 全局计数很难。您可以分两步完成:进行本地计数,然后将两个部分计数的结果写入单个分区的主题并汇总计数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多