12 Kafka高階 檔案儲存

2021-10-14 06:48:30 字數 2076 閱讀 1724

實際上能看到的就是topicname+partitionid這個檔案。

這個檔案下有兩個東西很重要。

.log結尾的檔案是真正儲存資料的。

.index是存放索引的。

先看看.log檔案:缺省會儲存7天。七天過了會把這些老的資料刪除掉。

再server.properties配置檔案種,還有乙個引數:儲存1g

這個log是這個

而不是它的日誌。

如果這個檔案超過了1g,就會再建立乙個檔案。而不會再往裡面放資料了。

超過1g之後,新建立乙個檔案,怎麼命名呢?

1g的檔案,儲存的都是訊息,怎麼快速從1g資料裡面定位到這個資料呢?

這個時候就有index檔案起作用了。

segment:片段。指的是當前這個分割槽裡面的乙個片段資料。裡面只儲存資料hello,atguigu等等。但是怎麼定位,就需要依賴index。

kafka的分片機制:分片的規則,按照1g進行分片,往log裡面只放資料。

這些東西就是偏移量,是當前log最小的偏移量,

.index檔案裡面儲存的東西:

假如某個分割槽裡面形成了兩個log檔案,

index索引對應的是log檔案的索引。

我們假設log檔案裡面有六台就儲存了1g。

所以對應的是

00000000000000.index

00000000000000.log

.log裡面只儲存資料,但是資料被序列化了,cat看不到。

.index裡面提供的是索引,儲存的是開始位置的偏移量。

因為.log檔案中儲存的是具體的6條訊息,所以index裡面提供的是當前log檔案對應訊息的索引。是開始位置的偏移量。

儲存的是當前6條訊息的起始偏移量。

這樣設計的方式可以怎麼定位資料呢?

首先,比較index字尾,需要找到這個訊息對應的index檔案。使用二分查詢法定位到index檔案。定位到檔案之後,就需要找到具體的訊息。這裡儲存的是訊息的起始偏移量。所以,index檔案裡面的每一條資料的大小都是一樣的,因為他們相當於元資料,儲存的是相同的內容。他們儲存的內容包括,對應訊息的起始偏移量和訊息的大小。

它們的大小一樣,所以可以快速的定位到某條訊息的起始偏移量

hdfsio流的分段讀取:seek()

比如,現在找到了訊息3這個起始偏移量而且這個訊息的大小是1000b,那我們就需要定位:756-1756這段資料拿出來,就找到了第三個訊息的內容。

1、通過二分查詢找到索引檔案

2、因為,在索引檔案中,每條資料大小一樣,掃瞄的話,就非常的快,就能很快地找到偏移量和對應訊息的大小,然後再去log中去查詢。

比我們直接去log裡面找,快得多。

所以,雖然kafka把資料儲存在磁碟中,但是讀寫速度還是很快的。

Kafka高階 工作機制與檔案儲存機制

producer向topic leader分類推送資料,每乙個佇列的主題都不同。topic leader向topic follower實時備份資料,防止topic leader突然掛掉。consumer消費topic leader中的資料,以offset為標誌,表示消費到的位置,以便出錯恢復時,從上...

Kafka檔案的儲存機制

同乙個topic下有多個不同的partition,每個partition為乙個目錄,partition命名的規則是topic的名稱加上乙個序號,序號從0開始。每乙個partition目錄下的檔案被平均切割成大小相等 預設乙個檔案是500兆,可以手動去設定 的資料檔案,每乙個資料檔案都被稱為乙個段 s...

Kafka檔案的儲存機制

同乙個topic下有多個不同的partition,每個partition為乙個目錄,partition命名的規則是topic的名稱加上乙個序號,序號從0開始。每乙個partition目錄下的檔案被平均切割成大小相等 預設乙個檔案是500兆,可以手動去設定 的資料檔案,每乙個資料檔案都被稱為乙個段 s...