1. 程式人生 > >kafka消費者群組與分割槽再均衡

kafka消費者群組與分割槽再均衡

group.id指定了消費者所屬的消費群組,預設是必須指定的。

同一個群組裡的消費者訂閱的同一個主題,每個消費者接收主題的一部分分割槽的訊息。

如果群組裡的消費者數量超過主題的分割槽數量,就會有一部分消費者被閒置,不會接收到任何訊息。

同一個主題可以被多個消費者群組消費,消費者群組之間互不影響,而且正常情況下,同一條訊息只能被群組裡的一個消費者消費一次。

再均衡:讀取分割槽的所有權從群組內的一個消費者轉移到另一個消費者。分割槽的再均衡策略保證了消費者群組的高可用性和伸縮性(我們可以放心地新增或移除消費者)。

在再均衡期間,消費者無法讀取消費,造成整個群組一小段時間內的不可用。當分割槽被重新分配給另一個消費者時,消費者當前的讀取狀態會丟失,它可能需要去重新整理快取,在它重新恢復之前會拖慢應用程式。

消費者通過向指派為群組協調器的broker(不同的群組可以有不同的協調器)傳送心跳來維持它們和群組的從屬關係以及它們對分割槽的所有權。消費者會在輪詢訊息或者提交偏移量時傳送心跳。如果消費者停止傳送心跳的時間足夠長,會話就過期,群組協調器就會認為它已經死亡,就會觸發一次再均衡。使用者可以主動呼叫close()方法來關閉連線,這樣可以立即觸發再均衡。