kafka高效之一 檔案系統

2021-08-19 16:38:58 字數 1959 閱讀 4382

kafka關鍵特⾊

• 可伸縮架構

• 高吞吐量

• consumer自動負載均衡

• 支援集群多副本而本

部落格是乙個kafka檔案系統深入過程

。儲存結構

目的:提高磁碟利用率和訊息處理效能。

1. 在kafka檔案系統中,同乙個topic下有多個不同partition,每個partition建立乙個目錄。即

topic下有分割槽的子目錄。

2. 每個partion相當於乙個巨型檔案被平均分配到多個大小相等的多個segment(段)檔案中。但每個段segment file訊息數量不一定相等,這種特性方便old segment file快速被刪除。

即分割槽目錄下log檔案大小一樣。而且乙個分割槽段檔案(

log檔案

)對應乙個索引檔案(

index檔案)

3. 每個partiton只需要支援順序讀寫就行了,segment檔案生命週期由服務端配置引數決定。

4. index為稀疏索引結構,並不儲存每條記錄的元資料資訊

。如何在partition中快速定位segment file同一

個topic

下有不同分割槽,每個分割槽下面會劃分為多個(段

)檔案,只有乙個當前檔案在寫(乙個分割槽對應乙個消費者)

,其他檔案唯讀。當寫滿

乙個檔案(寫滿的意思是達到設定值)則切換檔案,新建

乙個當前檔案用來寫,老的當前檔案切換為唯讀。檔案的命名以起始偏移量來命名。刪除檔案時,使用了寫時複製技術。

當消費者要拉取某個訊息起始偏移量位置的資料變的相當簡單,只要根據

傳上來的

offset

⼆分查詢檔案列表,定位到具體檔案,然後

根據索引檔案⼆分搜尋

,定位到

index中的offset,讀取log檔案的偏移量,定位到log,

即可開始傳輸資料。

高效檔案系統特點 

1.乙個大檔案分成多個小檔案段。

2.多個小檔案段,容易定時清除或刪除已經消費完檔案,減少磁碟

占用3.

index,log全部對映到memory直接操作,使用零拷貝加頁快取技術,避免segment file被交換到磁碟增加io操作次數。

4.根據索引元資料資訊,可以確定consumer每次批量拉取最大msg chunk數量。

5.索引檔案元資料儲存用的是相對前個segment file的 offset儲存,節省空間⼤小

假設你意氣風發,要開發新一代的網際網路應用,以期在網際網路事業中一展巨集圖。借助雲計算,很容易開發出如下原型系統:

好景不長。隨著使用者的迅速增長,所有的訪問都直接通過sql資料庫使得它不堪重負,不得不加上快取服務以降低sql資料庫的荷載;為了理解使用者行為,開始收集日誌並儲存到

hadoop

上離線處理,同時把日誌放在全文檢索系統中以便快速定位問題;由於需要給投資方看業務狀況,也需要把資料彙總到資料倉儲中以便提供互動式報表。此時的系統的架構已經盤根錯節了,考慮將來還會加入實時模組以及外部資料互動,真是痛並快樂著……

這時候,應該跑慢一些,讓靈魂跟上來。

本質上,這是乙個資料整合問題。沒有任何乙個系統能夠解決所有的事情,所以業務資料根據不同用途存而放在不同的系統,比如歸檔、分析、搜尋、快取等。資料冗餘本身沒有任何問題,但是不同系統之間像義大利麵條一樣複雜的資料同步卻是挑戰。

這時候就輪到kafka出場了。

kafka可以讓合適的資料以合適的形式出現在合適的地方。kafka的做法是提供訊息佇列,讓生產者單往佇列的末尾新增資料,讓多個消費者從佇列裡面依次讀取資料然後自行處理。之前連線的複雜度是o(n^2),而現在降低到o(n),擴充套件起來方便多了:

在kafka的幫助下,你的網際網路應用終於能夠支撐飛速增長的業務,成為下乙個bat指日可待。

以上故事說明了kafka主要用途是資料整合,或者說是流資料整合,以pub/sub形式的訊息匯流排形式提供。但是,kafka不僅僅是一套傳統的訊息匯流排,本質上kafka是分布式的流資料平台,因為以下特性而著名:

kafka高效之一 檔案系統

kafka關鍵特 可伸縮架構 高吞吐量 consumer自動負載均衡 支援集群多副本 而 本部落格是乙個kafka檔案系統深入過程 儲存結構 目的 提高 磁碟利用率 和訊息處理效能 1.在kafka檔案系統中,同乙個topic下有多個不同partition,每個partition建立乙個 目錄。即 ...

Linux學習筆記 一 檔案系統

對於每乙個 linux 學習者來說,了解 linux 檔案系統的結構是十分有必要的 因為在 linux 中一切皆檔案,只有深入了解 linux 檔案系統,才會對 linux 有更深刻的認識 linux 檔案系統採用樹狀結構,檔案目錄的命名規範和存放標準遵循 filesystem hierarchy ...

字元流之一(檔案加密)

題目 準備乙個文字檔案 非二進位制 其中包含ascii碼的字元和中文字元。設計乙個方法 public static void encodefile file encodingfile,file encodedfile 在這個方法中把encodingfile的內容進行加密,然後儲存到encodedfi...