Kafka筆記_架構與集群概念



Kafka 是一個訊息佇列中間件,使用 Scala 和Java 編寫。
Scala 是一門多範式、多重編程(Multi-paradigm programming language)的程式語言,一種類Java 的程式語言,設計初衷是實現可擴展的語言、集結成物件導向程式和函數式程式設計的各種特性,可運行在Windows、Linux、MacOS主流平台上。

Kafka 提供的是發布/訂閱者的訊息處理模式,訊息生產者(發布)將訊息發佈到topic中,同時有多個訊息消費者(訂閱)消費該訊息,發佈到topic 的訊息會被所有訂閱者消費。

Kafka 最初是由領英 (LinkedIn)開發,
並於2011年初開源,2012年10月23日由Apache 孵化。

Kafka 主要特點是根據 Pull 的模式來處理訊息消費,追求高吞吐量,可達100萬級的消息處理。


Kafka主要
1.支援向一個特定訊息主題發送訊息
2.多個訂閱者接收來自特定主題的訊息

如附圖1.所示,就是一個地方發布訊息,可以被無數訂閱者接收。
圖1.





生產者將訊息發布到 Topic,而在 Topic 中將數據被分配到不同的分區(Partition)中存儲。
在一個分區內,這些訊息被索引並聯同時間戳存儲在一起,消費者可以從分區中檢索消息。
Kafka 運行在一個由一臺或多台服務器組成的集群上,並且分區可以跨集群結點分佈。

如附圖2.所示

Kafka 整體上可以分為三部分:
(1).生產者:主要發布訊息的一方,底層在網路上通過 TCP 協議以Socket 的方式與 Kafka 集群進行通信。
(2).Brokers:集群的方式存儲消息,訊息存儲在文件中,通過主題(Topic)和分區(Partition)組織。

(3).消費者:訂閱訊息,獲取訊息,先發送請求,通過指定主題+分區的方式來確定接收對應的數據。

圖3.


Kafka集群:相當於一個中間的訊息轉發(運)站

Kafka集群需有一個Leader,負責來去接收client端請求並做相應處理。
此外還要進行集群管理和資料儲存的事物。
圖4.

如附圖4.所示,以上圖為例,Broker0也就是這一集群的Leader。
內部則是用一個控制器概念來和若干個節點共同實踐資料儲存和請求回應。
Kafka 2.8.0以上就可不用安裝Zookeeper來實踐單節點集群,但若要實踐多節點集群
就需要安裝Zookeeper。

單節點集群vs多節點集群
單節點集群相較來說比較穩定,但吞吐量、性能則沒多節點來的優秀。


由於底層透過java所開發,使其能跨平台。
因此若要用它,需要先在你的windows或linux、mac上安裝jdk,再去裝Kafka。


這邊目前節自2023年最新jdk版本為 jdk20 而jdk17則是LTS,通常正式環境建議盡量用LTS。

在此我用jdk20先嚐鮮看看


這邊上述的一些環境變數配置等等弄好後,接著就是安裝Kafka。

到Apache官網做下載安裝包

預設載下來會是linux壓縮格式.tgz,可用winzip、winrar解壓。












留言

這個網誌中的熱門文章

經得起原始碼資安弱點掃描的程式設計習慣培養(五)_Missing HSTS Header

經得起原始碼資安弱點掃描的程式設計習慣培養(三)_7.Cross Site Scripting(XSS)_Stored XSS_Reflected XSS All Clients

(2021年度)駕訓學科筆試準備題庫歸納分析_法規是非題