發表文章

目前顯示的是有「Kafka」標籤的文章

Kafka筆記_開發API類別及常見用語跟組成單元

圖片
接續前一篇筆記  Kafka筆記_架構與集群概念 基本上Kafka處理發布跟訂閱消息的系統,背後使用了4個API分別如下 1.生產者 API:支援應用程式發布 Record 流。 2.消費者 API:支援應用程式訂閱 Topic 和處理 Record 流。 3.Stream API:將輸入流轉換為輸出流,並產生結果。 4.Connector API:執行可重複使用的生產者和消費者 API,可將 Topic 連結到現有應用程式。 Kafka 對各類程式語言提供相關支援 API ,可供.NET、Java、Python 等主流的程式語言所使用。 捨麼是Messages? Messages消息(也稱為 Kafka 記錄)是存儲在主題分區內的鍵/值對。Message 根據為主題配置的保留設置進行持久保存和持久保存。每條消息都包含元數據,例如時間戳屬性,該屬性由建立者在創建時設置,或由代理在插入時設置。 捨麼是Producer? 消息和資料的產生者,向Kafka的一個topic發布消息的一個Process、程式碼、服務。 捨麼是Consumer? 消息和資料的消費者,訂閱數據(topic)並且處理其發佈消息的一個Process、程式碼、服務。 捨麼是Consumer Group? 對於同一個Topic,會廣播給不同Group,一個Group中,只有一個Consumer可消費該消息。 捨麼是Broker? 即Kafka集群中的每個Kafka節點。 什麼是Topic ? 是持久化到磁碟的事件的集合,可以理解為Kafka消息的類別,對數據做區分和隔離。 Topic 由 Record 組成,Record 持有不同的訊息,而 Broker 則負責複製訊息。 Topic支持數據保留的概念,因此可以附加事件並將其保留更長的時間(例如幾天/幾周/幾個月)或僅短暫存儲(例如幾分鐘/小時) 什麼是Partitions ? 從物理層級概念切入,Kafka下數據儲存的基本單元。 一個Topic進一步劃分儲存到多個Partitions(至少有一個),每一個Partition都是有序的。  以提高負載較重時的性能,比方優化可以是 10 秒或 100 秒。 Topic的分區分佈(即複製)所有 Kafka Brokers之間,以實現容錯並提高使用主題時的並行度。 可將Topic分區配置為在不...

Kafka筆記_架構與集群概念

圖片
Kafka 是一個訊息佇列中間件,使用 Scala 和Java 編寫。 Scala 是一門多範式、多重編程(Multi-paradigm programming language)的程式語言,一種類Java 的程式語言,設計初衷是實現可擴展的語言、集結成物件導向程式和函數式程式設計的各種特性,可運行在Windows、Linux、MacOS主流平台上。 Kafka 提供的是發布/訂閱者的訊息處理模式,訊息生產者(發布)將訊息發佈到topic中,同時有多個訊息消費者(訂閱)消費該訊息,發佈到topic 的訊息會被所有訂閱者消費。 Kafka 最初是由領英 (LinkedIn)開發, 並於2011年初開源,2012年10月23日由Apache 孵化。 https://kafka.apache.org/ 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以上就可不用安裝Z...