Kafka Streams:密钥的聚合结果因线程数而异

时间:2018-08-08 10:50:10

标签: 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(...))
    .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,并且发生了一些事情:

  1. 数量增长非常非常缓慢。
  2. 最初的增长似乎是对数的。
  3. 当新邮件到达中有一个暂停时,计数继续线性增长。
  4. 它似乎从未达到期望的值。

有人可以指出我的正确方向吗?

0 个答案:

没有答案