自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Kafka 消息存儲(chǔ)及檢索

開發(fā) 架構(gòu)
Kafka中可以創(chuàng)建多個(gè)消息隊(duì)列,稱為topic,消息的生產(chǎn)者向topic中發(fā)布消息,消息的消費(fèi)者從topic中獲取消息

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

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

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

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

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

分段存儲(chǔ)也是因?yàn)閜artition內(nèi)容非常多,分成小文件更便于消息的寫入和檢索。

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

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

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

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

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

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

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

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

00000000000000000000.index

00000000000000000000.log

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

key 是消息的序號(hào)offset

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

1,0

3,299

6,497

...

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

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

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

消息檢索過程示例

例如讀取offset=368的消息

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

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

例如有3個(gè)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)容

完成了消息的檢索過程

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2021-08-30 13:08:56

Kafka網(wǎng)絡(luò)通信

2017-10-11 15:08:28

消息隊(duì)列常見

2022-11-14 00:21:07

KafkaRebalance業(yè)務(wù)

2024-03-20 08:33:00

Kafka線程安全Rebalance

2021-10-03 21:41:13

RocketMQKafkaPulsar

2022-11-02 10:08:46

分布式高并發(fā)消息中間件

2017-07-27 14:32:05

大數(shù)據(jù)分布式消息Kafka

2021-08-04 07:47:18

Kafka消息框架

2011-07-22 14:30:44

存儲(chǔ)過程

2019-11-19 14:48:00

Kafka文件存儲(chǔ)

2010-01-04 14:40:51

ADO 檢索

2024-01-11 09:53:16

Kafka中間件編程語言

2021-08-30 11:36:23

微服務(wù)開發(fā)技術(shù)

2020-05-15 10:09:38

Kafka存儲(chǔ)讀取

2018-03-01 08:56:20

存儲(chǔ)能力定位

2012-03-14 11:38:16

ibmdw

2020-10-22 09:37:39

存儲(chǔ)Kafka設(shè)計(jì)

2019-05-29 14:49:02

KafkaRocketMQRabbitMQ

2017-08-30 16:47:49

Kafka設(shè)計(jì)原理

2021-02-24 08:38:48

Kafka消息Consumer
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)