Apache Kafka消費者再平衡 | TechMyTalk
消費者重新平衡決定哪個消費者是負責某些主題Topic的所有可用分割槽的哪個子集。例如,您可能有一個包含20個分割槽和10個使用者的主題。在重新平衡結束時,您可能希望每個使用者都從2個分割槽中讀取資料。如果關閉了這些使用者中的10個,則可能會期望每個使用者在重新平衡完成後對應1個分割槽。消費者重新平衡是可以由Kafka自動處理的動態分割槽分配。
組協調員 是負責與消費者進行通訊以實現消費者之間平衡的經紀人之一。在早期版本中,Zookeeper儲存了後設資料詳細資訊,但最新版本儲存在經紀人上。消費者協調員收到了所有消費者組消費者的心跳和輪詢,因此他了解每個消費者心跳和管理在分割槽上的偏移量。
小組組長: 消費者組的一位消費者擔任小組組長,由小組協調員選出,負責代表小組中的所有消費者做出分割槽分配決定。
需要重新平衡情況:
- 消費者組訂閱任何主題
- 消費者例項無法使用session.heart.beat時間間隔傳送心跳。
- 消費者的長時間流程超出了輪詢超時
- 消費群體中的消費者透過例外
- 新增了新分割槽。
- 擴大消費者規模。新增了新使用者或手動刪除了現有使用者
消費者再平衡
消費者重新平衡是在消費者請求加入一個小組或離開一個小組時啟動的。小組負責人從小組協調員那裡收到所有活躍消費者的名單。組負責人使用PartitionAssigner決定分配給每個使用者的分割槽。一旦組長完成分割槽分配,它就會將分配列表傳送給組協調器,組協調器將這些資訊傳送回所有使用者。組僅將適用的分割槽傳送給其使用者,而不傳送其他使用者分配的分割槽。只有組長知道所有使用者及其分配的分割槽。重新平衡完成後,消費者開始將“心跳”傳送到仍活躍的“組協調器”。使用者向組協調器傳送OffsetFetch請求,以獲取為其分配的分割槽的最後提交的偏移量。
狀態管理
重新平衡時,組協調器將其狀態設定為“重新平衡”,並等待所有消費者重新加入組。
當組開始重新平衡時,組協調器首先將其狀態切換為重新平衡,以便通知所有互動的使用者重新加入組。重新平衡完成後,組協調器將建立新一代ID,並通知所有消費者,然後該組繼續進行同步階段,在此階段,消費者傳送同步請求,然後等待直到組長完成新的分配分割槽。一旦消費者收到新的分配分割槽,他們便進入穩定階段。
靜態成員
您的重新平衡操作相當繁瑣,因為它需要停止所有使用者並等待獲取新分配的分割槽。在每次重新平衡時,始終建立新一代id,這意味著重新整理所有內容。為了解決此開銷,Kafka 2.3+引入了靜態成員資格以減少不必要的重新平衡。
在靜態成員資格狀態下,消費者狀態將保持不變,在重新平衡狀態下,將應用相同的分配。它使用新的group.instance.id來保留成員身份。因此,即使在最壞的情況下,成員ID也會被改組以分配新分割槽,但相同的使用者例項ID仍將獲得相同的分割槽分配
instanceId: A, memberId: 1, assignment: {0, 1, 2} instanceId: B, memberId: 2, assignment: {3, 4, 5} instanceId: C, memberId: 3, assignment: {6, 7, 8} |
重啟後:
instanceId: A, memberId: 4, assignment: {0, 1, 2} instanceId: B, memberId: 2, assignment: {3, 4, 5} instanceId: C, memberId: 3, assignment: {6, 7, 8} |
相關文章
- Kafka 消費者解析Kafka
- Kafka 消費組消費者分配策略Kafka
- kafka消費者消費訊息的流程Kafka
- 「Kafka應用」消費者Kafka
- Kafka 消費者組 RebalanceKafka
- kafka消費者客戶端Kafka客戶端
- Kafka 1.0.0 多消費者示例Kafka
- edenhill/kcat:通用命令列非 JVM Apache Kafka 生產者和消費者命令列JVMApacheKafka
- kafka中生產者和消費者APIKafkaAPI
- 無鏡--kafka之消費者(四)Kafka
- Kafka入門(4):深入消費者Kafka
- kafka消費Kafka
- kafka消費者提交方式(程式碼演示)Kafka
- kafka Poll輪詢機制與消費者組的重平衡分割槽策略剖析-kafka 商業環境實戰Kafka
- 探索Kafka消費者的內部結構Kafka
- Kafka - 消費介面分析Kafka
- 「Kafka應用」PHP實現生產者與消費者KafkaPHP
- 從消費者角度比較Kafka 與 RabbitMQ - OpenCredoKafkaMQ
- Kafka中消費者延遲處理訊息Kafka
- Apache Kafka訊息傳遞精確正好一次的含義 | TechMyTalkApacheKafka
- 插曲:Kafka的生產者案例和消費者原理解析Kafka
- 阿里雲 KAFKA 消費者接收不到訊息阿里Kafka
- Kafka之消費與心跳Kafka
- kafka生產者和消費者吞吐量測試-kafka 商業環境實戰Kafka
- Kafka從入門到放棄(三)—— 詳說消費者Kafka
- 深入理解Kafka核心設計及原理(三):消費者Kafka
- MongoDB和資料流:使用MongoDB作為Kafka消費者MongoDBKafka
- 一次 kafka 消費者的效能調優過程Kafka
- flink連線消費kafkaKafka
- java的kafka生產消費JavaKafka
- Kafka消費與心跳機制Kafka
- alpakka-kafka(7)-kafka應用案例,消費模式Kafka模式
- 解決Kafka消費者啟動時頻繁列印日誌Kafka
- Kafka入門(2):消費與位移Kafka
- spring 整合kafka監聽消費SpringKafka
- 使用Flume消費Kafka資料到HDFSKafka
- alpakka-kafka(8)-kafka資料消費模式實現Kafka模式
- Kafka 架構圖-輕鬆理解 kafka 生產消費Kafka架構