Kafka如何处理运行速度比其他消费者慢的消费者?

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

假设我有20个分区和5个工人。每个分区分配一个辅助进程。但是,一个工人的速度比其他机器慢。它仍在处理(也就是说,这里描述的不是慢消费者),但处理速度是其他机器的60%。这可能是因为worker运行在awsec2上一个较慢的vm上,一个坏了的磁盘或cpu等等。Kafka是否优雅地处理了再平衡问题,从而减少了慢工的分区?

n3h0vuf2

n3h0vuf21#

Kafka其实并不关心信息的传播速度。它甚至不关心有多少消费者,也不关心每条信息被阅读了多少次。kafka只是将消息提交到分区,并在配置的时间对它们进行老化。
这是消费者群体的责任,以确保信息被阅读均匀和及时的方式。在您的例子中,有两个问题:读取一组分区滞后,然后处理来自这些分区的消息滞后。
对于来自主题的消息的实际使用,您必须使用kafka元数据api来跟踪每个使用者面临的相对负载,无论是通过倾斜分区还是因为使用者以不同的速度运行。您要么必须将分区重新分配给使用者,以减少慢使用者的工作,要么随机地将使用者重新分配给分区,希望随着时间的推移最终消除工作负载。
为了更好地平衡消息的处理,您应该将消息的读取从消息的处理中剔除——类似于风暴流模型。您仍然需要以编程方式监视处理逻辑中的积压,但是您可以将工作移动到更快的节点以平衡工作。

相关问题