Kafka主题重新平衡的代价

hc2pp10m  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(449)

我正试图从Kafka那里想出一个消费设计。我使用的是Kafka的0.8.1.1版本。我正在考虑设计一个系统,在这个系统中,每隔几秒钟就会创建一个消费者,消费来自kafka的数据,对其进行处理,然后在向kafka提交偏移量之后退出。在任何时候,都希望有250-300个使用者处于活动状态(在不同的机器上作为线程池运行)。
如何以及何时重新平衡分区?
消费者之间重新平衡分区的代价有多大。我期待着一个新的消费者完成或加入同一消费群体每隔几秒钟。所以我只想知道重新平衡操作的开销和延迟。
假设使用者c1有分配给它的分区p1、p2、p3,并且它正在处理来自分区p1的消息m1。现在消费者c2加入了这个群体。如何在c1和c2之间划分分区。是否有可能c1(可能需要一段时间才能将其消息提交给kafka)对m1的提交将被拒绝,m1将被视为新消息并将被传递给其他人(我知道kafka至少有一次是传递模型,但希望确认重新分区是否会导致同一消息的重新传递)?

41zrol4v

41zrol4v1#

如果我是你,我会重新考虑设计。也许你需要一个消费群体?
每次消费者加入或离开集团时,都会发生再平衡。
Kafka和当前的消费者绝对是为长期运行的消费者设计的。新的消费者设计(计划为0.9)将更好地处理短期消费者。根据我的经验,重新平衡需要100-500毫秒,这在很大程度上取决于Zookeeper的表现。
是的,重复经常发生在再平衡过程中。这就是为什么我们要避开他们。你可以尝试通过更频繁地提交补偿来解决这个问题,但是随着300个消费者频繁地提交,以及大量消费者的加入和离开,你的Zookeeper可能会成为一个瓶颈。

相关问题