在kafka中向topic傳送訊息者稱為producer,從topic獲取資料者稱為consumer,consumer被定義到乙個consumer group中,整個kafka集群通過zookeeper進行協調
kafka集群由多個broker例項組成,訊息按照topic進行分類儲存,每個topic被分為多個分割槽,每個分割槽又存在多個副本,保證資料對可用性
partition內順序儲存,寫入對訊息採用追加的方式,消費者採用fifo的方式進行拉去,乙個topic由多個分割槽組成,分區內的資料有序,但kafka並不保證topic中的資料整體有序。
為了加快讀取,多個consumer被劃分為乙個consumer group並行的消費topic中的資料,乙個topic可以由多個consumer group訂閱,多個conser group之間互補影響,可以同時消費同一條資料,但組內但consumer ,同一條訊息只能被乙個consumer處理,
topic的每個partition副本對應乙個物理上的目錄,儲存當前partition資料,partition中的資料以segment為單位儲存,每個segment儲存一段資料。
kafka為了提高讀取效率,為每個segment建立乙個兩個索引檔案,乙個以訊息偏移量為依據,以.index結尾,以偏移量為名稱,另乙個是以訊息被寫入的時間戳為依據,以.timeindex結尾,以時間偏移量為名稱。偏移量索引檔案中稀疏儲存來偏移量既索引位置,而時間索引檔案中儲存來時間戳偏移量和索引位置,這樣可以以logn的時間複雜度快速定位到segment中的資料。
偏移量索引檔案
1)以偏移量作為名稱,index作為字尾
2)索引內容格式:offset,position
3)採用稀疏的儲存方式
4)通過log.index.interval.bytes設定索引跨度
時間錯索引檔案
1)以時間戳作為名稱,以timeindex為字尾
2)索引內容格式:timestame,offset
3)採用稀疏儲存方式
4)通過log.index.interval.bytes設定索引跨度
資料高可用
1)乙個topic可以又多個分割槽,每個分割槽多個副本
2)0.8版本以前分割槽沒有副本(replication),一旦某個broker宕機,其上的partition資料便丟失
3)乙個分割槽的多個副本選舉乙個leader,由leader負責讀寫,其他副本作為follower從leader同步資料
4)同乙個partition的不同副本分布到不同的broker上
集群高可用
1)從集群中的broker選舉乙個broker作為controller控制節點
2)controller負責整個集群的管理,如broker管理,topic管理,partition leader選舉
3)選舉過程通過想zookeeper建立臨時的znode節點實現,為選中的broker監聽controller的znode,等待下次選舉
partition leader高可用
1)controller負責分割槽leader的選舉
2)follower批量從leader拉取資料
3)leader跟蹤與其保持同步的flower列表isr,isr作為下次選主的時候列表
4)follower心跳超時時或者訊息落後太多,將被移除isr列表
5)leader失敗後,由controller從isr列表中選擇乙個follower作為新的leader
大資料開發 Kafka工作原理入門
kafka在大資料技術生態當中,以作為訊息系統而聞名,面對活躍的流式資料,提供高吞吐量的服務,在實時大資料處理場景下,可以說是一大利器,國內外大廠都有應用。今天的大資料開發分享,我們就主要來講講kafka框架的工作原理。官方定義,kakfa是乙個分布式的基於發布 訂閱模式的訊息佇列,主要應用於大資料...
大資料架構 Kafka
kafka 分布式的發布 訂閱訊息系統,主要用於處理活躍的資料 特點 高吞吐量 每秒百萬級別的生產消費 生產消費 永續性 由完善的訊息儲存機制,確保資料的高效安全的持久化 中間儲存 分布式 基於分布式的儲存和容錯機制 整體的健壯性 kafka的元件 kafka服務 topic 主題 kafka處理的...
部署 kafka 大資料Kafka集群部署
2 kafka集群部署 1 解壓安裝包 atguigu hadoop102 software tar zxvf kafka 2.11 0.11.0.0.tgz c opt module 2 修改解壓後的檔名稱 atguigu hadoop102 module mv kafka 2.11 0.11.0...