Java Kafka流:密钥的聚合结果因线程数而异
我有一个包含50个分区的输入主题,我试图统计使用Kafka Streams接收的消息总量。考虑以下拓扑结构:Java Kafka流:密钥的聚合结果因线程数而异,java,scala,apache-kafka,apache-kafka-streams,Java,Scala,Apache Kafka,Apache Kafka Streams,我有一个包含50个分区的输入主题,我试图统计使用Kafka Streams接收的消息总量。考虑以下拓扑结构: var inputStream = builder.stream("input-topic", Consumed.with(...)); inputStream // Grouping by a constant key here for global aggregation. .groupBy((k, v) -> 1L, Serialized.with(...
var inputStream = builder.stream("input-topic", Consumed.with(...));
inputStream
// Grouping by a constant key here for global aggregation.
.groupBy((k, v) -> 1L, Serialized.with(...))
.count()
.toStream()
.foreach((k, v) -> System.out.println("Count updated to: " + v));
...
// For simplicity, let's consider the cache size to be zero.
props.put(StreamsConfig.CACHE_MAX_BYTES_BUFFERING_CONFIG, 0);
当我开始玩线程数时,奇怪的事情就会发生
在具有1个线程的最简单示例中,计数随着接收到的消息数的增加而增加
将线程数设置为例如50,会发生以下情况:
有人能给我指一下正确的方向吗?是不是在50岁的时候开始出错了?1个线程也可以,但是2个线程呢?4.10? 你为什么需要更多的线?如果要进行全局计数,并且所有记录都具有相同的密钥,那么它们将由单个线程处理。