1. 程式人生 > 程式設計 >深入瞭解Kafka【五】Partition和消費者的關係

深入瞭解Kafka【五】Partition和消費者的關係


1、消費者與Partition

假設主題T1有四個分割槽。

1.1、一個消費者組

1.1.1、消費者數量小於分割槽數量

只有一個消費者時,消費者1將收到4個分割槽的全部訊息。

1個消費者.png
當有兩個消費者時,每個消費者將分別從兩個分割槽接受訊息。
2個消費者.png

1.1.2、消費者數量等於分割槽數量

當有四個消費者時,每個消費者都可以接受一個分割槽的訊息。

4個消費者.png

1.1.3、消費者數量大於於分割槽數量

當有五個消費者時,會有閒置的消費者。

5個消費者.png

1.2、兩個消費者組

消費者群組之間是互不影響的,如圖:

2個消費者組.png

2、分割槽分配策略

當消費者加入群組的時候,會根據分割槽分配策略決定哪些分割槽分配給哪些消費者。 Kafka有兩種分配策略:Range和RoundRobin。

  • Range Topic的若干個連續的Partition分配給消費者。
  • RoundRobin Topic的所有Partition逐個分配給消費者。

3、分割槽Rebalance(再均衡)

  • 有新的消費者加入消費者群組
  • 已有的消費者退出消費者群組
  • 訂閱的主題的分割槽發生變化

以上三種情況都會觸發分割槽的重新分配,重新分配的過程叫Rebalance(再均衡)。 Rebalance給消費者群組帶來了高可用性與伸縮性,但是在Rebalance期間,消費者無法讀取訊息,整個群組一小段時間不可用,而且當分割槽被重新分配給另一個消費者時,消費者當前的讀取狀態會丟失。

tencent.jpg