深刻了解Kafka【五】Partition和消費者的關係


一、消費者與Partition

假設主題T1有四個分區。blog

1.一、一個消費者組

1.1.一、消費者數量小於分區數量

只有一個消費者時,消費者1將收到4個分區的所有消息。 1個消費者.png 當有兩個消費者時,每一個消費者將分別從兩個分區接受消息。 2個消費者.pngit

1.1.二、消費者數量等於分區數量

當有四個消費者時,每一個消費者均可以接受一個分區的消息。 4個消費者.pngio

1.1.三、消費者數量大於於分區數量

當有五個消費者時,會有閒置的消費者。 5個消費者.png高可用

1.二、兩個消費者組

消費者羣組之間是互不影響的,如圖: 2個消費者組.pngim

二、分區分配策略

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

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

三、分區Rebalance(再均衡)

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

以上三種狀況都會觸發分區的從新分配,從新分配的過程叫Rebalance(再均衡)。 Rebalance給消費者羣組帶來了高可用性與伸縮性,可是在Rebalance期間,消費者沒法讀取消息,整個羣組一小段時間不可用,並且當分區被從新分配給另外一個消費者時,消費者當前的讀取狀態會丟失。db

tencent.jpg

相關文章
相關標籤/搜索