首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与python消费者的多重处理

与python消费者的多重处理
EN

Stack Overflow用户
提问于 2017-10-18 14:16:11
回答 2查看 1.2K关注 0票数 0

我试图在python中开发一个包含一个主题(演示-主题)和一个分区的应用程序。在这个主题中,消息是随机推送的,我有一个使用者(consumer1) (演示组),它使用这些消息进行一些背景计算(这需要一些时间)。

在amazon上使用这个应用程序,我希望能够按新创建的机器将同一组(演示-组)中的另一个使用者(使用者2)在同一个主题(演示-主题)中读取的方式来扩展它(当计算耗时很长时),但以他们开始拆分负载的方式(消费者1需要一些负载,而消费者2接受其余的,但他们从来没有得到相同的消息)。

在数据激增停止后,第二台机器被停用,消费者1再次承担所有负载。

这是否可以执行(不需要在提交更多分区之前添加)。有解决办法吗??

谢谢

EN

回答 2

Stack Overflow用户

发布于 2017-10-18 14:36:20

不能让同一组中的多个使用者同时从同一分区消费。如果您订阅同一组中的第二次消费到同一个分区,它将充当热备用,在第一个分区停止之前不会使用任何消息。

最好的解决方案是向主题中添加分区。这样,当你看到流量激增的时候,你就可以加入消费者,当流量变慢的时候,你可以删除他们。卡夫卡会为你做所有的负载平衡。

票数 1
EN

Stack Overflow用户

发布于 2017-10-18 14:38:29

你可以这么做,但不应该。

Kafka中并行性的基本单位是分区:在一个使用者组中,每个使用者从一个或多个分区中读取,并且使用者不共享分区。为了共享分区,您需要使用像ZooKeeper这样的工具来锁定对分区的访问(并跟踪每个用户的位置)。

您所描述的用例更好地由SQS和自动缩放组提供。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46812351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档