潁上縣建設(shè)局網(wǎng)站網(wǎng)絡(luò)營銷概述
消費(fèi)者 (Consumer )
消費(fèi)者 訂閱 Kafka 中的主題 (Topic) ,并 拉取消息。
消費(fèi)者群組( Consumer Group)
每一個消費(fèi)者都有一個對應(yīng)的 消費(fèi)者群組。
一個群組里的消費(fèi)者訂閱的是同一個主題,每個消費(fèi)者接收主題的一部分分區(qū)的消息。
每一個分區(qū) (Partition),只能被一個消費(fèi)組中的一個消費(fèi)者消費(fèi)。
伸縮性
往群組里增加消費(fèi)者是橫向伸縮消費(fèi)能力的主要方式。
注意:不要讓消費(fèi)者的數(shù)量超過主題分區(qū)的數(shù)量,多余的消費(fèi)者只會閑置。
消費(fèi)者與分區(qū)
假設(shè)主題T1有4個分區(qū),我們創(chuàng)建了消費(fèi)者C1,它是群組G1里唯一的消費(fèi)者,我們用它訂閱主題T1。消費(fèi)者C1將收到主題T1全部4個分區(qū)的消息,如圖4-1所示。
如果往群組G1新增多幾個消費(fèi)者,直到有4個消費(fèi)者,那么每個消費(fèi)者可以分配到一個分區(qū),如圖4-3所示。
如果我們往群組里添加更多的消費(fèi)者,超過主題的分區(qū)數(shù)量,那么有一部分消費(fèi)者就會被閑置,不會接收到任何消息,如圖4-4所示。
可以為每一個需要獲取一個或多個主題全部消息的應(yīng)用程序創(chuàng)建一個消費(fèi)者群組,然后往群組里添加消費(fèi)者來伸縮讀取能力和處理能力,群組里的每個消費(fèi)者只處理一部分消息。
消費(fèi)者群組與分區(qū)再均衡
分區(qū)的所有權(quán)從一個消費(fèi)者轉(zhuǎn)移到另一個消費(fèi)者,這樣的行為被稱為再均衡.
再均衡為消費(fèi)者群組帶來了高可用性和伸縮性.
在再均衡期間,消費(fèi)者無法讀取消息,造成整個群組一小段時間的不可用。
何時會觸發(fā)再均衡
- 有新的消費(fèi)者加入消費(fèi)組
- 有消費(fèi)者宕機(jī)下線
- 有消費(fèi)者主動退出消費(fèi)組
- 消費(fèi)組對應(yīng)的 組協(xié)調(diào)器(GroupCoorinator)節(jié)點(diǎn)發(fā)生變更。
- 消費(fèi)組內(nèi)所訂閱的任一主題或者主題的分區(qū)數(shù)量發(fā)生變化。
組協(xié)調(diào)器(GroupCoorinator)
GroupCoorinator 是 kafka 服務(wù)端中用于管理消費(fèi)組的組件。
消費(fèi)者協(xié)調(diào)器 (ConsumerCoordinator)
負(fù)責(zé)與 組協(xié)調(diào)器 進(jìn)行交互。
組協(xié)調(diào)器 和 消費(fèi)者協(xié)調(diào)器 的職責(zé)就是負(fù)責(zé)執(zhí)行消費(fèi)者再均衡的操作。
參考資料:
《深入理解kafka:核心設(shè)計與實(shí)踐原理》
《Kafka權(quán)威指南》