3

我们有 Java 代码来管理读取四个分区主题的 Kafka 流消费者的线程池(因此我们有四个消费者线程)。

动态检索分区数的推荐方法是什么,以便线程池 cat 中的初始化代码设置正确的线程数?

能够动态调整以适应越来越多的分区不是必需的。

查看 Java API (v.0.8.1) 我找不到直接的方法。目前我正在浏览 Scala 源代码,我看到了有前途的类(也欢迎 Scala 解决这个问题),但是我也想向社区询问这个问题,以防有人已经找到了一个很好的方法。

谢谢,

4

2 回答 2

4

多于分区的线程最终会得到空闲线程,因为每个分区只能被一个消费者线程消费。另一方面,多于线程的分区最终会导致每个线程消耗多个分区,然后影响性能。

因此,为了简单起见,只需使用与分区完全相同数量的线程即可。如果您发现性能成为问题,也许您应该有更多的分区和更多的线程。

于 2015-04-23T07:32:51.850 回答
3

您不需要让使用者线程计数与分区计数匹配。只需创建一些消费者线程,以最大限度地提高您的消费能力(例如,如果您正在执行大量 CPU,则大约 2x 核心,如果您正在执行大量 I/O,则更多或更少,取决于其性质)。

于 2014-07-18T18:44:09.193 回答