使用Kafka 0.9.0在单个分区上使用多个Python消费者线程

时间:2016-02-19 23:18:16

标签: apache-kafka kafka-python

对于上下文,我试图将我们的python工作进程转移到基于kafka(0.9.0)的体系结构,但我对分区相对于使用者线程的限制感到困惑。在分区上有多个使用者会导致同一分区上的其他线程等待当前线程完成吗?

1 个答案:

答案 0 :(得分:1)

我实际上不确定Kafka 0.9,还没有必要彻底检查新设计,但AFAIK这在v8中是不可能的。
对于低级别的消费者来说当然是不可能的,但是我也认为,如果你在高级消费者中分配的线程多于分区,那么每个分区只有一个线程可以随时处于活动状态。这就是为什么我们说Kafka中的并行性取决于分区的数量(可以为主题动态增加)。

如果您考虑一下,那就需要在消费线程之间的消息级别进行协调,这会对性能产生不利影响。 v0.8中的消费者群体被用来制作线程 - >分区分配是Kafka的责任,而不是在单个分区上协调多个线程。

现在,它可能会在0.9中发生变化,但我对此非常怀疑。

[编辑]现在我再次阅读你的问题,我希望我能正确理解你的问题。我的意思是,每个分区有多个消费者(不是消费者线程)是一个常规的东西(每个都有自己的偏移),所以我假设你问的是线程/分区的关系。