簡體   English   中英

Kafka-同步消費群

[英]Kafka - Synchronized Consumer Groups

我想讓有關Kafka消費者的問題引起關注,我想知道以下使用案例是否可以使用Kafka解決。

我的用例基本上是這樣的:

我有一個流,我想被多個消費者同步使用。 換句話說,我有第一個使用方開始消耗流,然后另一個使用方到達。 我希望第二個使用者在當前第一個使用者所在的偏移量處開始使用流。

我知道我需要將消費者分為兩個不同的組。 但是對我來說尚不清楚:

  • 關於如何或是否可以協調組偏移量
  • 如果我期望這樣的協調任務會延遲

您不需要兩個不同的組,所有消費者都可以檢查一個主題。 還是他們想要的那么多。

抵消

消息通常以到達日期來標識,因此所有客戶都需要告訴生產者“我最后一次訪問是在10:00,給我所有新消息”。 因此,每個客戶都需要跟蹤的是最后一次檢查哪個主題的時間。

潛伏

在這一點上,這是一種“范圍”。 當然會有延遲,但這取決於環境,例如“多少個消費者”,“多少個主題”,“消息格式”等。

所以可以使用kafka解決您的用例

簡而言之:是的。 “一個消費者可以在另一個消費者離開的地方繼續進行”,這些消費者可以相互交換最新的索引,這當然需要一些內部同步。 Kafka本身並不關心消費者,因此不會跟蹤最新指數。 您需要做的工作。 另一種可能性是實際使用消息(例如,在使用完消息后將其從隊列中刪除),因此,每次其他使用者進入隊列時,都可以保證接收到另一個使用過的消息。 當然,這取決於您的用例,是否可以實際從隊列中刪除消息。

這不是由kafka直接解決的問題(消費者組是在成員之間分配分區,而不是賦予相同的偏移量),但是您可以為此做些事情。 您可以簡單地創建另一個主題,consumer1將發布偏移或讀取的消息副本(因此,您將需要bth消費方和生產方),而您的其他同步消費方將對此做出反應-當然會有一些延遲為了這。

您背后的用例是什么? 為什么不能以不同的偏移量消費? 您難道不希望有一個使用者,該使用者然后將讀取的消息分派給不同的進程,以使它們確實同步嗎? (無延遲)

同步是什么意思:consumer2(以及3個及更多)應該只消費與consumer1相同的消息(即不能更快地消費,我在之前的兩個解決方案中都假設)雖然可能,但最好了解其背后的原因,也許有更好的方法供您處理數據

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM