深入瞭解Kafka【五】Partition和消費者的關係
阿新 • • 發佈:2020-06-24
1、消費者與Partition
假設主題T1有四個分割槽。
1.1、一個消費者組
1.1.1、消費者數量小於分割槽數量
只有一個消費者時,消費者1將收到4個分割槽的全部訊息。
當有兩個消費者時,每個消費者將分別從兩個分割槽接受訊息。1.1.2、消費者數量等於分割槽數量
當有四個消費者時,每個消費者都可以接受一個分割槽的訊息。
1.1.3、消費者數量大於於分割槽數量
當有五個消費者時,會有閒置的消費者。
1.2、兩個消費者組
消費者群組之間是互不影響的,如圖:
2、分割槽分配策略
當消費者加入群組的時候,會根據分割槽分配策略決定哪些分割槽分配給哪些消費者。 Kafka有兩種分配策略:Range和RoundRobin。
- Range Topic的若干個連續的Partition分配給消費者。
- RoundRobin Topic的所有Partition逐個分配給消費者。
3、分割槽Rebalance(再均衡)
- 有新的消費者加入消費者群組
- 已有的消費者退出消費者群組
- 訂閱的主題的分割槽發生變化
以上三種情況都會觸發分割槽的重新分配,重新分配的過程叫Rebalance(再均衡)。 Rebalance給消費者群組帶來了高可用性與伸縮性,但是在Rebalance期間,消費者無法讀取訊息,整個群組一小段時間不可用,而且當分割槽被重新分配給另一個消費者時,消費者當前的讀取狀態會丟失。