訊息佇列的應用場景
傳送資料
producer採用push的方式將資料發布到broker,每條訊息順序寫入磁碟,所以在單個partition中資料是有序的。
分割槽的主要目的是:
kafka選擇partition的時候,如果有指定的,會發指定的,如果沒指定,設定了key,會根據key hash出來乙個,如果既沒有指定,也沒有設定key,那麼就輪詢。
儲存資料
kafka將資料順序寫入磁碟,每個partition在磁碟上就是乙個資料夾,每個資料夾下面有多個segment檔案,每個segment檔案又包含.index檔案、.log檔案、.timeindex檔案(早期版本中沒有)三個檔案,log檔案就實際是儲存message的地方,而index和timeindex檔案為索引檔案,用於檢索訊息。結構如下
檔案的命名是以該segment最小offset來命名的,如000.index儲存offset為0~368795的訊息,kafka就是利用分段+索引的方式來解決查詢效率的問題。
message在log中的儲存結構如下:
消費資料
消費者主動去leader中拉取資料
消費者組的consumer的數量與partition的盡量保持數量一致,這樣消費效率最高。
segment+offset查詢過程如下
這套機制是建立在offset為有序的基礎上,利用segment+有序offset+稀疏索引+二分查詢+順序查詢等多種手段來高效的查詢資料!
kafka 主動消費 Kafka基礎原理
1 訊息中介軟體作用 解耦 非同步 削峰 2 訊息中介軟體通訊模式 如上圖所示,點對點模式通常是基於拉取或者輪詢的訊息傳送模型,這個模型的特點是傳送到佇列的訊息被乙個且只有乙個消費者進行處理。生產者將訊息放入訊息佇列後,由消費者主動的去拉取訊息進行消費。點對點模型的的優點是消費者拉取訊息的頻率可以由...
Kafka基礎 Kafka架構
目錄kakfa 架構 kafka最初是由linkedin公司採用scala語言開發的乙個多分割槽 多副本並且基於zookeeper協調的分布式訊息系統,現在已經捐獻給了apache 會。目前kafka已經定位為乙個分布式流式處理平台,它以 高吞吐 可持久化 可水平擴充套件 支援流處理等多種特性而被廣...
KAFKA原理簡介
每條訊息在檔案中的位置成為offset 偏移量 offset為long型數字。過後無論是否被消費,都會被清楚。consumer儲存消費資訊的offset。kafka通過partition將日誌內容分散到多個server上,每個partition都會被 當前server儲存,kafka可以配置part...