Kafka 架構和原理機制 (圖文全面詳解)
目錄
- 一:Kafka 簡介
- 二:Kafka 基本架構
- 三:Kafka 基本原理
- 四:Zookeeper 在 kafka 的作用
- 五:Kafka 的特性
- 六:Kafka 的應用場景
一:Kafka 簡介
Apache Kafka 是分散式釋出 - 訂閱訊息系統,在 kafka 官網上對 kafka 的定義:一個分散式釋出 - 訂閱訊息傳遞系統。
Kafka 最初由 LinkedIn 公司開發,Linkedin 於 2010 年貢獻給了 Apache 基金會併成為頂級開源專案。
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 (代理),這樣就可以大致描繪出這樣一個場面:
生產者將資料生產出來,交給 broker 進行儲存,消費者需要消費資料了,就從 broker 中去拿出資料來,然後完成一系列對資料的處理操作。
多個 broker 協同合作,producer 和 consumer 部署在各個業務邏輯中被頻繁的呼叫,三者透過 zookeeper 管理協調請求和轉發,這樣一個高效能的分散式訊息釋出訂閱系統就完成了。
圖上有個細節需要注意,producer 到 broker 的過程是 push,也就是有資料就推送到 broker,而 consumer 到 broker 的過程是 pull,是透過 consumer 主動去拉資料的。
四:Zookeeper 在 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 的應用場景
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 的網際網路架構」系列文章作者,專注於網際網路架構技術。
閱讀 「mikechen 的網際網路架構」40W 字技術文章合集
Java 併發 | JVM | MySQL | Spring | Redis | 分散式 | 高併發
以上合集,關注「mikechen 的網際網路架構」公眾號,回覆 : 架構 ,即可獲得。
--- end ---
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70011997/viewspace-2921233/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Dubbo原理和機制詳解(非常全面)
- 圖文詳解 HDFS 的工作機制及其原理
- 高併發架構最全詳解(圖文全面總結)架構
- RabbitMQ架構詳解(7大架構原理模型圖解)MQ架構模型圖解
- 分頁機制圖文詳解
- kafka核心架構詳解Kafka架構
- 8張圖帶你全面瞭解kafka的核心機制Kafka
- 長文圖解:詳解金字塔原理如何應用於架構設計圖解架構
- 架構與思維:瞭解Http 和 Https的區別(圖文詳解)架構HTTP
- 詳解 php 反射機制原理PHP反射
- 譯文 | 科普:Pulsar 和 Kafka 架構對比Kafka架構
- 微服務最全詳解(圖文全面總結)微服務
- 【轉】kafka-檔案儲存機制詳解Kafka
- 一文詳解微服務架構微服務架構
- 負載均衡最全詳解(圖文全面總結)負載
- RabbitMQ原理和架構圖解(附6大工作模式)MQ架構圖解模式
- 一文詳解Kafka APIKafkaAPI
- 分散式儲存最全詳解(圖文全面總結)分散式
- 一文詳解MySQL的鎖機制MySql
- 一文讀懂Kafka副本機制Kafka
- Java虛擬機器:Jvm概念和原理詳解以及GC機制的分析Java虛擬機JVMGC
- SSO單點登入最全詳解(圖文全面總結)
- DDD領域驅動最全詳解(圖文全面總結)
- kafka和raft共識機制KafkaRaft
- 一文讀懂微服務架構——【詳解】微服務架構
- 阿里大牛實戰歸納——Kafka架構原理阿里Kafka架構
- Kafka 架構圖-輕鬆理解 kafka 生產消費Kafka架構
- Android Handler訊息傳遞機制:圖文解析工作原理Android
- Nginx 原理和架構Nginx架構
- storm 架構和原理ORM架構
- 詳解Oracle架構、原理、程式,學會世間再無複雜架構Oracle架構
- 一文詳解BI平臺——火山引擎DataWind架構和實踐架構
- 高可用架構設計全面詳解(8大高可用方案)架構
- 9大效能最佳化方案詳解(圖文全面總結)
- vue內建元件——transition簡單原理圖文詳解Vue元件
- 微服務 Zipkin 鏈路追蹤原理(圖文詳解)微服務
- kafka的原理及叢集部署詳解Kafka
- Cloud Foundry架構和訊息處理機制Cloud架構