当前位置:  开发笔记 > 大数据 > 正文

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

如何解决《Kafka如何处理运行速度比其他消费者慢的消费者?》经验,为你挑选了1个好方法。

假设我有20个分区和5个工人。每个分区都分配有一个工作程序。但是,一个工人的运行速度比其他机器慢。它仍在处理(也就是说,此处不描述慢速用户),但处理速度是其他计算机的60%。这可能是因为该工作程序在AWS EC2上的速度较慢的VM上运行,磁盘或CPU损坏或其他原因。Kafka是否以某种方式优雅地处理了重新平衡操作,从而为慢速工作人员提供了更少的分区?



1> Chris Gerken..:

Kafka并不真正关心消息的消耗速度。它甚至不涉及有多少消费者或每条消息被读取多少次。Kafka只是将消息提交到分区,并在配置的时间使它们过期。

消费者群体有责任确保消息被及时且均匀地阅读。在您的情况下,您有两个问题:一组分区的读取滞后,然后处理来自这些分区的消息滞后。

对于主题中消息的实际消耗,您必须使用Kafka元数据API来跟踪每个使用者面对的相对负载,无论是通过偏斜分区还是由于使用者以不同的速度运行。您要么必须重新分配分区给使用者,以使速度较慢的使用者减少工作量,要么随机地将使用者重新分配给分区,以期最终随着时间的推移平衡工作量。

为了更好地平衡消息的处理,应该从消息的处理中排除对消息的读取-类似于Storm流模型。您仍然必须以编程方式监视积压到处理逻辑中,但是您可以将工作移至更快的节点以平衡工作。

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有