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 Broker之間複製。


總結
每一個Topic被切分為多個Partitions
消費者數目通常少於或等於Partition數目
Broker Group中每一個Broker保存的Topic的一或多個Partitions。
Consumer Group中僅有一個Consumer讀取Topic的一或多個Partitions,並且是唯一的Consumer。




Ref:
https://lankydan.dev/intro-to-kafka-topics-and-partitions
https://redhat-developer-demos.github.io/kafka-tutorial/kafka-tutorial/1.0.x/02-topics-partitions.html
https://lankydan.dev/intro-to-kafka-consumer-groups
https://www.redpanda.com/guides/kafka-architecture-kafka-consumer-group


留言

這個網誌中的熱門文章

何謂淨重(Net Weight)、皮重(Tare Weight)與毛重(Gross Weight)

Architecture(架構) 和 Framework(框架) 有何不同?_軟體設計前的事前規劃的藍圖概念

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