圖文全面詳解 Kafka 架構和原理機制


圖文全面詳解 Kafka 架構和原理機制

文章插圖
目錄
  • 一:Kafka 簡介
  • 二:Kafka 基本架構
  • 三:Kafka 基本原理
  • 四:Zookeeper 在 kafka 的作用
  • 五:Kafka 的特性
  • 六:Kafka 的應用場景
一:Kafka 簡介Apache Kafka 是分布式發布 - 訂閱消息系統 , 在 kafka 官網上對 kafka 的定義:一個分布式發布 - 訂閱消息傳遞系統 。
Kafka 最初由 LinkedIn 公司開發,Linkedin 于 2010 年貢獻給了 Apache 基金會并成為頂級開源項目 。
Kafka 的主要應用場景有:日志收集系統和消息系統 。
圖文全面詳解 Kafka 架構和原理機制

文章插圖
二:Kafka 基本架構Kafka 的架構包括以下組件:
圖文全面詳解 Kafka 架構和原理機制

文章插圖
1、話題(Topic):是特定類型的消息流 。消息是字節的有效負載(Payload),話題是消息的分類名;
2、生產者(Producer):是能夠發布消息到話題的任何對象;
3、服務代理(Broker):已發布的消息保存在一組服務器中,它們被稱為代理(Broker)或 Kafka 集群;
4、消費者(Consumer):可以訂閱一個或多個話題,并從 Broker 拉數據,從而消費這些已發布的消息;
上圖中可以看出,生產者將數據發送到 Broker 代理,Broker 代理有多個話題 topic ,消費者從 Broker 獲取數據 。
三:Kafka 基本原理我們將消息的發布(publish)稱作 producer,將消息的訂閱(subscribe)表述為 consumer,將中間的存儲陣列稱作 broker (代理),這樣就可以大致描繪出這樣一個場面:
圖文全面詳解 Kafka 架構和原理機制

文章插圖
生產者將數據生產出來,交給 broker 進行存儲,消費者需要消費數據了,就從 broker 中去拿出數據來,然后完成一系列對數據的處理操作 。
圖文全面詳解 Kafka 架構和原理機制

文章插圖
多個 broker 協同合作 , producer 和 consumer 部署在各個業務邏輯中被頻繁的調用,三者通過 zookeeper 管理協調請求和轉發,這樣一個高性能的分布式消息發布訂閱系統就完成了 。
圖上有個細節需要注意,producer 到 broker 的過程是 push,也就是有數據就推送到 broker,而 consumer 到 broker 的過程是 pull,是通過 consumer 主動去拉數據的 。
四:Zookeeper 在 Kafka 的作用
圖文全面詳解 Kafka 架構和原理機制

文章插圖
1.  無論是 Kafka 集群,還是 producer 和 consumer,都依賴于 Zookeeper 來保證系統可用性集群保存一些 meta 信息 。
2.  Kafka 使用 Zookeeper 作為其分布式協調框架,可以很好地將消息生產、消息存儲、消息消費的過程結合在一起 。
3.  Kafka 借助 Zookeeper,讓生產者、消費者和 broker 在內的所有組件,在無狀態的情況下 , 建立起生產者和消費者的訂閱關系,并實現生產者與消費者的負載均衡 。
五:Kafka 的特性1. 高吞吐量、低延遲
Kafka 每秒可以處理幾十萬條消息,它的延遲最低只有幾毫秒 , 每個 topic 可以分多個 partition ,  consumer group 對 partition 進行 consume 操作 。
2. 可擴展性
Kafka 集群支持熱擴展 。
3.  持久性、可靠性
消息被持久化到本地磁盤,并且支持數據備份防止數據丟失 。
4.  容錯性
允許集群中節點失?。ㄈ舾北緮盗繛?n, 則允許 n-1 個節點失敗)
5.  高并發
支持數千個客戶端同時讀寫 。
六:Kafka 的應用場景
圖文全面詳解 Kafka 架構和原理機制

文章插圖
1.  日志收集
一個公司可以用 Kafka 收集各種服務的 log,通過 Kafka 以統一接口服務的方式開放給各種 consumer,例如:hadoop、Hbase、Solr 等 。
2.  消息系統
解耦和生產者和消費者、緩存消息等 。
3. 用戶活動跟蹤
Kafka 經常被用來記錄 web 用戶、或者 app 用戶的各種活動,例如:瀏覽網頁、搜索、點擊等活動 。
這些活動信息,被各個服務器發布到 Kafka 的 topic 中,訂閱者再通過訂閱這些 topic 來做實時的監控分析,或者裝載到 hadoop 、數據倉庫中做離線分析和挖掘 。
4.  運營指標
Kafka 也經常用來記錄運營監控數據 。
包括收集各種分布式應用的數據,生產各種操作的集中反饋等,例如:報警和報告 。
5. 流式處理
例如:spark streaming、storm。
以上!
作者簡介陳睿 | mikechen , 10 年 + 大廠架構經驗,「mikechen 的互聯網架構」系列文章作者,專注于互聯網架構技術 。

推薦閱讀