kafka整體梳理

整體概念圖

  • 作用是:解耦、削峯、異步處理。
  • brokers、topic、partition的相關信息、監控和路由相關信息使用zk存儲。
  • zk在broker中選出一個controller,用於partition分配和leader選舉。

kafka整體梳梳理

文件存儲簡述

  • 每新寫一條消息,kafka就是在對應的文件append寫,將隨機寫操作改爲順序寫,所以性能非常高
  • 使用文件系統和操作系統的頁緩存分別存儲和緩存消息,結合Zero-Copy,因此IO性能好
  • 索引策略是稀疏矩陣法,查找過程採用二分法。
  • 一個log文件對應兩個索引文件,偏移量索引文件,時間戳索引文件(這個是幹啥用?)
  • 文件存儲方式:
    kafka文件存儲方式

生產消息

  • key參數用來哈希,分配partition使用。
  • 一般我們不傳key,默認用round-robin輪詢負載均衡算法來選partition。
  • 有一個broker節點是controller,完成partition分配和leader選舉。
    生產消息流程

消費消息

  • 一個消費組裏面可以有多個消費者,同一個消費組中的兩個消費者,不會同時消費一個partition。
  • 一個partition,只能被消費組裏的一個消費者消費,但是可以同時被多個消費組消費。
  • 從broker中選一個coordinator,用於分配消費那個partition。
  • 偏移量索引流程:
    消費索引流程
  • 解決重複消費有兩個方法:
    1、下游系統保證冪等性,重複消費也不會導致多條記錄;
    2、把commit offset和業務處理綁定成一個事務。
  • reblance觸發場景:
    1、增加partition
    2、增加消費者
    3、消費者主動關閉
    4、消費者宕機
    5、coordinator宕機

zk節點

zk結點

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章