假設主題T1有四個分區。blog
只有一個消費者時,消費者1將收到4個分區的所有消息。 當有兩個消費者時,每一個消費者將分別從兩個分區接受消息。 it
當有四個消費者時,每一個消費者均可以接受一個分區的消息。 io
當有五個消費者時,會有閒置的消費者。 高可用
消費者羣組之間是互不影響的,如圖: im
當消費者加入羣組的時候,會根據分區分配策略決定哪些分區分配給哪些消費者。 Kafka有兩種分配策略:Range和RoundRobin。d3
以上三種狀況都會觸發分區的從新分配,從新分配的過程叫Rebalance(再均衡)。 Rebalance給消費者羣組帶來了高可用性與伸縮性,可是在Rebalance期間,消費者沒法讀取消息,整個羣組一小段時間不可用,並且當分區被從新分配給另外一個消費者時,消費者當前的讀取狀態會丟失。db