kafka架構介紹
1、生產者 API
- 允許應用程序發佈記錄流至一個或者多個kafka的主題 topics(生產數據到topic)。
2、消費者 API
- 允許應用程序訂閱一個或者多個主題,並處理這些主題接收到的記錄流(讀取數據,消費數目)。
3、StreamsAPI
- 允許應用程序充當流處理器(stream processor),從一個或者多個主題獲取輸入流,並生產一個輸出流到一個或 者多個主題,能夠有效的變化輸入流爲輸出流。(把kafka 主題連接到現有的應用程序或數據系統)
4、ConnectAPI
- 允許構建和運行可重用的生產者或者消費者,能夠把kafka主題連接到現有的應用程序或數據系統。例如:一個計算數字的原始數據隊列,經過不同的應用程序,生成最終的目標數據隊列(應用充當處理器)
- 如何理解應用充當處理器?(如下圖)
kafka架構內部細節剖析
說明
kafka支持消息持久化
,消費端爲拉模型
來拉取數據,消費狀態和訂閱關係有客戶端負責維護,消息消費完後,不會立即刪除,會保留歷史消息。因此支持多訂閱時,消息只會存儲一份就可以了。
kafka消息保留在磁盤上,並在集羣內複製以防止數據丟失(不能提高數據的讀取效率)。
Consumer Group
:每一個Consumer屬於一個特定的Consumer Group(可以爲每個Consumer指定 groupName)
Broker
:kafka集羣中包含一個或者多個服務實例
Topic
:每條發佈到kafka集羣的消息都有一個類別,分類
Partition
:Partition是一個物理上的概念,每個Topic包含一個或者多個Partition
segment
:一個partition當中存在多個segment文件段,每個segment分爲兩部分,.log文件和.index文件,其中:
.index文件是索引文件,主要用於快速查詢.log文件當中數據的偏移量位置
.log存放數據文件