0

我試圖在有1個主題(demo-topic)和1分區的python中創建應用程序。 在這個主題中,隨機推送消息 我有1個消費者(consumer1)(演示組)使用此消息進行一些背景計算(需要一些時間)。用python kafka消費者進行多處理

在亞馬遜上有這個應用程序,我希望能夠以新創建的機器將來自同一組(讀取組)的另一個消費者(消費者2)的方式對其進行縮放(當計算需要很長時間時)同一主題(演示話題),但在他們開始分攤負載的方式(消費1需要一些負荷消費者2需要休息,但他們從來沒有得到相同的消息)後數據的激增來

暫停,第二臺機器退役並且消費者1再次取得所有的負載。

這是甚至可以做(沒有添加更多的分區之前)。有沒有解決方法?

謝謝

回答

0

你不能在同一組內的多個消費者在消費來自同一分區的時候。 如果您在同一組中使用同一個分區的第二個消耗,它將作爲熱備用,並且不會消耗任何消息,直到第一個消息停止。

最好的解決方案是將分區添加到您的主題。這樣,您可以在看到流量激增時添加消費者,並在流量減慢時將其刪除。卡夫卡會爲您做所有的負載平衡。

0

可能做到這一點,但不應該。

卡夫卡的並行性的基本單位是分區:在消費者組中,每個消費者從一個或多個分區中讀取數據,而消費者不共享分區。爲了共享分區,您需要使用像ZooKeeper這樣的工具來鎖定對分區的訪問(並跟蹤每個消費者的位置)。

您所描述的用例更適合SQS和自動縮放組。

相關問題