1. 程式人生 > >kafka 資料儲存結構+原理+基本操作命令

kafka 資料儲存結構+原理+基本操作命令

資料儲存結構:

Kafka中的Message是以topic為基本單位組織的,不同的topic之間是相互獨立的。每個topic又可以分成幾個不同的partition(每個topic有幾個partition是在建立topic時指定的),每個partition儲存一部分Message。


partition是以檔案的形式儲存在檔案系統中,比如,建立了一個名為page_visits的topic,其有5個partition,那麼在Kafka的資料目錄中(由配置檔案中的log.dirs指定的)中就有這樣5個目錄: page_visits-0, page_visits-1,page_visits-2,page_visits-3,page_visits-4,其命名規則為<topic_name>-<partition_id>,裡面儲存的分別就是這5個partition的資料。

Partition中的每條Message由offset來表示它在這個partition中的偏移量,這個offset不是該Message在partition資料檔案中的實際儲存位置,而是邏輯上一個值,它唯一確定了partition中的一條Message。類似於下面的一個圖片,訊息儲存在每個log檔案中,index對應的是訊息的索引資訊,另外,為了讓訊息消費的時候更快,又將檔案分成很多段。

 

資料消費查詢:

   我們要查詢 offset 為7的訊息,那kafka就會快速定位到這個index檔案,得知offset 為7的訊息在6,9807後面,這時候就可以通過9807快速定位到資料檔案,然後從位置為9807的那個地方開始順序掃描直到找到offset為7的那條Message。