使用python kafka用户进行多处理

wwodge7n  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(420)

我正在尝试用python制作一个有1个主题(demo topic)和1个分区的应用程序。在本主题中,消息是随机推送的,我有一个消费者(consumer1)(演示组),它使用这些消息进行一些后台计算(这需要一些时间)。
在amazon上有这个应用程序,我希望能够以这样的方式扩展它(当计算需要很长时间时),即新创建的机器将有来自同一组(演示组)的另一个消费者(消费者2)阅读同一主题(演示主题),但以他们开始拆分负载的方式(消费者1承担一些负载,消费者2承担一些负载)其他的,但他们从来没有得到相同的信息)
在数据激增停止后,第二台机器被停用,耗电元件1再次承担所有负载。
这甚至是可能的(不需要添加更多的分区)。有解决办法吗??
谢谢您

ckocjqey

ckocjqey1#

你可以这么做,但不应该。
kafka中的基本并行单元是分区:在使用者组中,每个使用者从一个或多个分区读取数据,而使用者不共享分区。为了共享分区,您需要使用zookeeper之类的工具来锁定对分区的访问(并跟踪每个使用者的位置)。
sqs和自动伸缩组更好地服务于您描述的用例。

nr9pn0ug

nr9pn0ug2#

同一组中不能有多个使用者同时从同一分区使用。如果将同一组中的第二个消费订阅到同一分区,它将充当热备用,并且在第一个停止之前不会消费任何消息。
最好的解决方案是在主题中添加分区。这样,当您看到流量激增时可以添加消费者,而当流量减慢时可以删除消费者。Kafka会为你做所有的负载平衡。

相关问题