0

我试图在有1个主题(demo-topic)和1分区的python中创建应用程序。 在这个主题中,随机推送消息 我有1个消费者(consumer1)(演示组)使用此消息进行一些背景计算(需要一些时间)。用python kafka消费者进行多处理

在亚马逊上有这个应用程序,我希望能够以新创建的机器将来自同一组(读取组)的另一个消费者(消费者2)的方式对其进行缩放(当计算需要很长时间时)同一主题(演示话题),但在他们开始分摊负载的方式(消费1需要一些负荷消费者2需要休息,但他们从来没有得到相同的消息)后数据的激增来

暂停,第二台机器退役并且消费者1再次取得所有的负载。

这是甚至可以做(没有添加更多的分区之前)。有没有解决方法?

谢谢

回答

0

你不能在同一组内的多个消费者在消费来自同一分区的时候。 如果您在同一组中使用同一个分区的第二个消耗,它将作为热备用,并且不会消耗任何消息,直到第一个消息停止。

最好的解决方案是将分区添加到您的主题。这样,您可以在看到流量激增时添加消费者,并在流量减慢时将其删除。卡夫卡会为您做所有的负载平衡。

0

可能做到这一点,但不应该。

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

您所描述的用例更适合SQS和自动缩放组。

相关问题