日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Kafka消息存儲及檢索

Kafka是一個分布式的消息隊列系統(tǒng),消息存儲在集群服務(wù)器的硬盤

Kafka中可以創(chuàng)建多個消息隊列,稱為topic,消息的生產(chǎn)者向topic中發(fā)布消息,消息的消費者從topic中獲取消息

消息是海量的,為了消息的讀寫性能,topic被分為多個部分,稱為partition,kafka把每個topic的每個partition均勻的分布在集群中的不同服務(wù)器上

所以從整體來看,Kafka的邏輯關(guān)系就是:生產(chǎn)者向topic中的某個partition發(fā)送消息,消費者從partition獲取消息

實際的存儲結(jié)構(gòu)中,partition并不是存放消息的物理文件,而是一個目錄,命名規(guī)則是topic名稱加上partition序號,其中包含了這個partition的N個分段存儲文件segment。

分段存儲也是因為partition內(nèi)容非常多,分成小文件更便于消息的寫入和檢索。

segment也不是一個文件,是由兩個物理文件構(gòu)成:

.index索引文件、.log消息內(nèi)容文件

這兩個文件是成對出現(xiàn),名稱一樣,只是后綴不同

實際的存儲結(jié)構(gòu)就是這樣的

消息是按照順序產(chǎn)生的,所以每個消息都有一個序號,稱為offset,表示partiion的第多少個message,從0開始

每個segment存儲了一段offset區(qū)間內(nèi)的消息

segment文件以offset區(qū)間的起始值命名,長度固定20位,不足的位用0填充

例如存儲了第0-20條的消息,segment文件就是:

00000000000000000000.index

00000000000000000000.log

index文件結(jié)構(gòu)很簡單,每一行都是一個key,value對

key 是消息的序號offset

value 是消息的物理位置偏移量

1,0

3,299

6,497

...

說明的就是第幾個消息的物理位置是哪兒

log文件中保存了消息的實際內(nèi)容,和相關(guān)信息

如消息的offset、消息的大小、消息校驗碼、消息數(shù)據(jù)等

消息檢索過程示例

例如讀取offset=368的消息

(1)找到第368條消息在哪個segment

從partition目錄中取得所有segment文件的名稱,就相當于得到了各個序號區(qū)間

例如有3個segment

00000000000000000000.index

00000000000000000000.log

00000000000000000300.index

00000000000000000300.log

00000000000000000600.index

00000000000000000600.log

根據(jù)二分查找,可以快速定位

第368條消息是在00000000000000000300.log文件中

(2)從index文件中找到其物理偏移量

讀取00000000000000000300.index

以368為key,得到value,如299,就是消息的物理位置偏移量

(3)到log文件中讀取消息內(nèi)容

讀取 00000000000000000300.log

從偏移量299開始讀取消息內(nèi)容

完成了消息的檢索過程


網(wǎng)頁標題:Kafka消息存儲及檢索
當前地址:http://www.5511xx.com/article/dhpddec.html