我的主题只有一个分区,但是我需要实现多个处理。 我有大量异步生成的消息,我想异步读取所有这些消息并提交每条消息。
答案 0 :(得分:3)
AFAIK,如果没有一个以上的分区(即至少两个),就无法实现并行处理。 在Kafka中,分区是并行度。此外,Kafka群集中的分区越多,可以实现的吞吐量就越高。
Kafka主题分为多个分区,这些分区通过将数据拆分到多个代理中来实现并行性。多个分区使多个使用者可以并行读取主题。因此,为了实现并行处理,您需要将主题划分为多个分区。
为了增加现有主题的分区数量,您可以简单地运行
bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic topicName --partitions 40
这不会移动现有数据
有关消费者,消费者组和分区的说明
如果您有N个分区,则在同一使用者组中最多可以有N个使用者,每个使用者都从一个分区读取。当使用者少于分区时,某些使用者将从多个分区中读取数据。另外,如果您的使用者数量大于分区数量,则某些使用者将处于非活动状态,并且根本不会收到任何消息。