柚子快報激活碼778899分享:kafka架構(gòu)+原理+源碼
柚子快報激活碼778899分享:kafka架構(gòu)+原理+源碼
1.安裝jdk17
sudo yum -y update
sudo wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.rpm
sudo yum -y install ./jdk-17_linux-x64_bin.rpm
sudo java -version
2.安裝kafka
How to easily install kafka without zookeeper | Aditya’s Blog
1.kafka架構(gòu)圖
2.kafka producer
在 Kafka 中,一個文件并不直接對應(yīng)一個分區(qū),但每個分區(qū)會有多個文件來存儲其數(shù)據(jù)。
Kafka 存儲結(jié)構(gòu)
分區(qū): Kafka 的每個主題(topic)可以有一個或多個分區(qū)。每個分區(qū)是一個有序的、不可變的消息日志。 日志文件: 每個分區(qū)會被存儲在一組日志文件中。Kafka 將每個分區(qū)的數(shù)據(jù)分成多個日志段(log segments)文件,這些文件是按時間順序生成的,文件名中包含文件的創(chuàng)建時間戳和其他信息。
文件結(jié)構(gòu)
分區(qū)目錄: 每個分區(qū)在 Kafka 的日志目錄下有一個目錄,例如 /tmp/kafka-logs/topic1-0。這個目錄的名稱中包含了主題名稱和分區(qū)編號。 日志段文件: 在每個分區(qū)目錄下,會有多個日志段文件,這些文件通常以 .log 為后綴。例如,00000000000000000000.log、00000000000000000001.log 等。 索引文件: 除了日志文件外,每個日志段還有對應(yīng)的索引文件 (.index) 和時間戳文件 (.timeindex),用于加速數(shù)據(jù)的查找和存取。
示例
假設(shè)你有一個主題 my-topic,它有兩個分區(qū)(0 和 1),在 Kafka 的數(shù)據(jù)目錄下,你會看到類似以下的文件結(jié)構(gòu):
bash
復(fù)制代碼
/tmp/kafka-logs/my-topic-0/ 00000000000000000000.log 00000000000000000000.index 00000000000000000000.timeindex ... /tmp/kafka-logs/my-topic-1/ 00000000000000000000.log 00000000000000000000.index 00000000000000000000.timeindex ...
總結(jié)
一個分區(qū)會有多個文件,通常包括日志文件、索引文件和時間戳文件。一個文件(日志段文件)只是存儲分區(qū)數(shù)據(jù)的一部分,多個文件一起構(gòu)成了分區(qū)的完整數(shù)據(jù)。
這使得 Kafka 可以高效地管理和存儲大量的數(shù)據(jù),同時保持高性能的數(shù)據(jù)讀寫能力。
payload
在 Kafka 中,文件中的 payload 指的是實際存儲的消息數(shù)據(jù)。每個分區(qū)中的日志文件包含了分區(qū)所有消息的原始數(shù)據(jù),即消息的 payload。下面是關(guān)于這些 payload 的一些詳細信息:
消息的結(jié)構(gòu)
在 Kafka 中,消息(或記錄)的結(jié)構(gòu)包括以下幾個主要部分:
鍵(Key): 可選的消息鍵,用于消息的分區(qū)策略。鍵在消息存儲中可能會被序列化和附加到消息的開頭。 值(Value): 消息的實際內(nèi)容,這就是我們通常所說的 payload。它是消息的主要數(shù)據(jù)部分。 時間戳(Timestamp): 消息的時間戳,通常是消息被生產(chǎn)者發(fā)送的時間。 頭(Headers): 可選的消息頭,用于附加元數(shù)據(jù)到消息中。
Kafka 日志文件中的數(shù)據(jù)格式
Kafka 使用二進制格式來存儲消息數(shù)據(jù),日志文件中的數(shù)據(jù)通常是按照以下結(jié)構(gòu)存儲的:
消息偏移量: 每條消息在分區(qū)中的位置,這個偏移量用于快速訪問和定位消息。 消息的長度: 消息的總長度(包括鍵、值、時間戳等)。 消息內(nèi)容: 實際的消息數(shù)據(jù)。根據(jù)配置,消息內(nèi)容可能包括:
鍵: 消息的鍵(如果存在)。值: 消息的值(payload)。時間戳: 消息的時間戳。消息頭: 消息的頭部信息(如果存在)。
文件內(nèi)容示例
在分區(qū)的日志文件中,消息數(shù)據(jù)以二進制形式存儲。例如,一個日志文件可能包含如下內(nèi)容:
Message Offset: 位置1Message Length: 200 bytesMessage Payload: 包含消息鍵、值、時間戳等數(shù)據(jù)
讀取和解析
Kafka 客戶端(如生產(chǎn)者和消費者)通過 Kafka 協(xié)議與 Kafka broker 交互,發(fā)送和接收這些消息數(shù)據(jù)??蛻舳耸褂脜f(xié)議來讀取這些二進制數(shù)據(jù)并將其解碼為實際的消息對象。
總結(jié)
Payload 是指消息的實際內(nèi)容,它存儲在 Kafka 日志文件中。在日志文件里,payload 是消息的一部分,包括在寫入分區(qū)日志文件時的實際數(shù)據(jù)內(nèi)容。Kafka 的設(shè)計旨在高效地管理和存儲這些數(shù)據(jù),保證高吞吐量和低延遲。
柚子快報激活碼778899分享:kafka架構(gòu)+原理+源碼
推薦閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。