Kafka 基本概念 1

2022-01-17 07:08:24 字數 1878 閱讀 5981

kafka從0.9版本開始,kafka的標語已經從乙個「高吞吐量,分布式的訊息系統」更改為了「乙個分布式的流平台」;

注:不要小看標語的改變,標語的改變其實意味著很多。

儲存系統

流處理系統

上述說明了流式資料平台所需要的具備的特點,那麼kafka作為乙個流式的資料平台,則都具備了上述的那些特徵?

儲存系統:

流處理平台:

了解了上述的流式處理平台的基本功能和概念後,那麼kafka是如何實現乙個「流失處理平台的」?向下看

注意,以下是kafka的基本概念,與上述的流式處理平台的概念,則更像是具體實現的關係,kafka中是通過什麼樣的方式,來實現了上述的流式處理平台的概念的?kafka中的訊息是儲存到**的?kafka中的一組訊息是如何平均的分配到消費者中的?等等

kafka的集群是由多個訊息**伺服器(broker server)組成,傳送到kafka集群的每條訊息都會有乙個類別的概念,在kafka中用主題(topic)來表示;乙個topic相當於乙個類別的訊息,或者是相當於一組的訊息;所以不同應用產生的不同型別的資料,可以設定不同的主題topic,而乙個主題一般則都會有多個訂閱者(消費者),當生產者發布訊息到某個主題時,訂閱這個主題的消費者則可以接收到生產者所寫入的資料;

kafka中的一組訊息是如何儲存的?

上述說到了,kafka中的一組訊息就是乙個主題(topic),那麼kafka中的一組訊息是如何儲存的?這裡則是涉及到乙個分割槽(partition)的概念;

kafka集群中為主題都維護了分布式的分割槽(partition)日誌檔案(是的,物理意義上就可以直接理解為乙個日誌檔案),每個分割槽日誌檔案,都是乙個有序的,不可變的記錄序列,新的訊息會不斷的追加到該分割槽日誌中;分割槽中的每條訊息都會按照時間順序分配到乙個遞增的順序編號,kafka中叫做偏移量(offset),這個偏移量就能夠唯一的定位到當前分割槽中的每一條訊息了;

如上圖所示,每個分割槽中的偏移量都是從0開始,互相獨立,互不影響的,比如我們向乙個主題中,生產了一組資料,如果當前生產的一組資料時,沒有設定對應的訊息的鍵值,而是只有message內容,那麼此時訊息則會均勻的按順序的分布到不同的分割槽上,,比如0,1,2三條資料,則會均勻的落入到3個分割槽檔案中,對應的偏移量則也分別是,p0,和p1以及p2分割槽的偏移量為0的順序編號;

kafka的生產者和消費者相對於服務端來說都是客戶端,生產者傳送訊息到服務端的指定主題時有兩種確認分割槽的方式,一種是生產者在生產資料的時候直接指定具體的主題和分割槽,另外一種則是由kafka服務端自行執行分割槽策略,根據生產者發布訊息時是否有鍵,來採用不同的分割槽策略,訊息沒有鍵時,則採用輪訓的方式對客戶端進行負載均衡(及按照輪訓的方式將訊息按順序儲存到不同分割槽中),如果訊息有鍵時,根據分割槽語義來確保相同鍵的訊息,總是被傳送分配到同乙個分割槽中;

kafka中採用分割槽的方式來儲存訊息的好處是大大的,,,kafka以分割槽作為最小的粒度,將每個分割槽分配給消費組中不同的而且是唯一的消費者,並確保乙個分割槽只屬於乙個消費組中的消費者,即這個消費者就是分割槽的唯一讀取執行緒,那麼,只要分割槽的訊息是有序的,消費者處理的消費順序就***。每個主題有多個分割槽,不同的消費者消費不同的分割槽,所以kafka採用分割槽的這種方式,不但保證了訊息的有序性,也做到了消費者的負載均衡;

討論一下:如果想要使用kafka保證更好的併發的消費有序的資料,有哪幾種採用方式?

假設,每秒需要從主題寫入和讀取1gb的資料,那麼有哪些好的方式?

分割槽是kafka中的最小單元,一般情況下,對生產者而言,每乙個分割槽的寫入是完全可以並行化寫入的,kafka生產資料時是可以指定對應的分割槽的,所以單獨開4個執行緒,每個執行緒向同乙個主題的不同的分割槽進行寫入即可,也就是說,生產者的吞吐量和並行化則是相對更好做到的。

kafka基本概念

kafka 1 是一種高吞吐量 2 的分布式發布訂閱訊息系統,有如下特性 kafka基本概念 消費模式 1 分割槽消費模式 vs 組消費模式 分割槽的日誌被分發到集群內的伺服器上,每台伺服器負責處理一些分割槽和對這些分割槽的讀寫請求。為滿足容錯需求,各分割槽的資料都按乙個可配置的量被複製到集群的其他...

kafka基本概念

1.topics 主題 屬於特定類別的訊息流成為主題。資料儲存在topics中,topics被拆分為分割槽。對於每個主題,kafka儲存乙個分割槽的資料 每個這樣的分割槽包含不可變有序序列的訊息。分割槽被實現為具有相等大小的一組分段檔案。2.partition 分割槽 主題可能有許多分割槽,因此它可...

kafka 基本概念

訊息 訊息相當於資料庫中的記錄,kafka中的的訊息是二進位制訊息流,所以kafka中的訊息沒有特別的格式或者含義 批次 訊息可以分批次的被傳送,這樣可以提高效率,單條訊息穿梭於網路間,會導致大量的網路開銷,批次越大單位時間內處理的訊息就越多,單個訊息的傳輸時間就越長,批次訊息會被壓縮 可以提公升效...