Kafka流了多少?

pdtvr36n  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(186)

一个名为“addcash”的主题,它有3个分区(kafka集群机的数量也是3个),其中有大量的用户充值消息流。我每天都要数钱的总数。我从一些关于kafka流的文章中了解到:kafka流将拓扑作为任务运行,任务的数量取决于主题分区的数量,并且每个任务都有单独的状态存储。所以,当我按状态stroe计算总货币数时,是否有三个值,而不是一个总值将被返回?正确的方法是什么?谢谢!

k4emjkb1

k4emjkb11#

这是正确的。
有两种方法:
你做部分求和,那是一个后续步骤 KTable.groupBy(...).reduce(...) 并设置一个全局键以将所有部分聚集在一起。
您可以通过创建一个附加的单分区主题来获得总的和,将部分结果写入该主题,用kafkastreams读回数据,然后进行第二次聚合,将这些部分数字相加。你可以用一个程序用 through("my-single-partition-topic"); 连接聚合的第一部分和第二部分。你需要使用 transform() 而不是dsl来为这个解决方案执行第二个聚合步骤。

相关问题