Kafka學習整理一 基礎概念

2021-07-12 03:12:17 字數 2725 閱讀 5465

kafka中包含以下基礎概念

1. topic(話題):kafka中用於區分不同類別資訊的類別名稱。由producer指定

2. producer(生產者):將訊息發布到kafka特定的topic的物件(過程)

3. consumers(消費者):訂閱並處理特定的topic中的訊息的物件(過程)

4. broker(kafka服務集群):已發布的訊息儲存在一組伺服器中,稱之為kafka集群。集群中的每乙個伺服器都是乙個**(broker). 消費者可以訂閱乙個或多個話題,並從broker拉資料,從而消費這些已發布的訊息。

5. partition(分割槽):topic物理上的分組,乙個topic可以分為多個partition,每個partition是乙個有序的佇列。partition中的每條訊息都會被分配乙個有序的id(offset)

6. message:訊息,是通訊的基本單位,每個producer可以向乙個topic(主題)發布一些訊息。

訊息由乙個固定大小的報頭和可變長度但不透明的位元組陣列負載。報頭包含格式版本和crc32效驗和以檢測損壞或截斷

1.

4byte crc32 of

the message2.1

byte

"magic" identifier to allow format changes, value is 0or1

3.1byte

"attributes" identifier to allow annotations on

themessage

independent

ofthe

version

bit 0 ~ 2 : compression codec

0 : no compression

1 : gzip

3 : lz4

bit 3 : timestamp type

0 : create

time

bit 4 ~ 7 : reserved

4. (可選) 8

byte timestamp only if

"magic" identifier is greater than 05.4

byte key length, containing length k

6. k byte key7.4

byte payload length, containing length v

8. v byte payload

日誌是乙個只能增加的,完全按照時間排序的一系列記錄。我們可以給日誌的末尾新增記錄,並且可以從左到右讀取日誌記錄。每一條記錄都指定了乙個唯一的有一定順序的日誌記錄編號。詳細見首席工程師揭秘linkedin大資料後台

每個日誌檔案都是「log entries」序列,每乙個log entry包含乙個4位元組整型數(值為n),其後跟n個位元組的訊息體。每條訊息都有乙個當前partition下唯一的64位元組的offset,它指明了這條訊息的起始位置

這個「log entries」並非由乙個檔案構成,而是分成多個segment,每個segment名為該segment第一條訊息的offset和「.kafka」組成。另外會有乙個索引檔案,它標明了每個segment下包含的log entry的offset範圍。

為了使得kafka的吞吐率可以水平擴充套件,物理上把topic分成乙個或多個partition,每個partition在物理上對應乙個資料夾,該資料夾下儲存這個partition的所有訊息和索引檔案。

每乙個分割槽都是乙個順序的、不可變的訊息佇列, 並且可以持續的新增。分割槽中的訊息都被分配了乙個序列號,稱之為偏移量(64位元組的offset),在每個分割槽中此偏移量都是唯一的

每一條訊息被傳送到broker時,會根據paritition規則選擇被儲存到哪乙個partition。如果partition規則設定的合理,所有訊息可以均勻分布到不同的partition裡,這樣就實現了水平擴充套件。(如果乙個topic對應乙個檔案,那這個檔案所在的機器i/o將會成為這個topic的效能瓶頸,而partition解決了這個問題)。在建立topic時可以在$kafka_home/config/server.properties中指定這個partition的數量(如下所示),當然也可以在topic建立之後去修改parition數量

在傳送一條訊息時,可以指定這條訊息的key,producer根據這個key和partition機制來判斷將這條訊息傳送到哪個parition。paritition機制可以通過指定producer的paritition. class這一引數來指定,該class必須實現kafka.producer.partitioner介面。本例中如果key可以被解析為整數則將對應的整數與partition總數取餘,該訊息會被傳送到該數對應的partition。(每個parition都會有個序號)

key相同的訊息會被傳送並儲存到同乙個partition裡,而且key的序號正好和partition序號相同。(partition序號從0開始,本例中的key也正好從0開始)

在每個分割槽中此偏移量都是唯一的

消費者所持有的僅有的元資料就是這個偏移量,也就是消費者在這個log中的位置。 這個偏移量由消費者控制。

正常情況當消費者消費訊息的時候,偏移量也線性的的增加。但是實際偏移量由消費者控制,消費者可以將偏移量重置為更老的乙個偏移量,重新讀取訊息。

乙個消費者的操作不會影響其它消費者對此log的處理

kafka基礎概念

kafka is a distributed,partitiononed,replicated commited logservice.kafka是乙個分布式的 易擴充套件的 安全性高的訊息服務系統。kafka提供了類似於jms的特性,但在設計實現上又完全不同,它並不是基於jms規範實現的 kafk...

kafka 學習整理

一 什麼是吞吐量 吞吐量是指對網路 裝置 埠 虛電路或其他設施,單位時間內成功地傳送 資料的數量 二 什麼是kafka kafka是一種高吞吐量的分布式發布訂閱訊息系統,可以處理消費者規模的 中的所有動作流資料。簡單大白話理解 舉個例子,生產者生產雞蛋,消費者消費雞蛋,生產者生產乙個雞蛋,消費者就消...

Kafka 基礎概念理解

producer 訊息生產者,向 kafka broker 發訊息的客戶端。consumer 訊息消費者,從 kafka broker 取訊息的客戶端。consumer group 消費者組 cg 消費者組內每個消費者負責消費不同分割槽的資料,提高消費能力。乙個分割槽只能由組內乙個消費者消費,消費者...