Kafka工作原理圖解,看這篇就夠了!
當(dāng)前位置:點(diǎn)晴教程→知識管理交流
→『 技術(shù)文檔交流 』
之前我就講過消息中間件那真的是太重要了,那就是億級互聯(lián)網(wǎng)架構(gòu)的基石,實(shí)在是太重要了,當(dāng)然這肯定也是大廠必備技能了。 很多同學(xué)留言給我:學(xué)哪個(gè)消息中間件?那肯定是學(xué)主流中間件,比如:Kafka、RocketMQ,本篇就先來談?wù)?span style="-webkit-tap-highlight-color: transparent; margin: 0px; padding: 0px; outline: 0px; max-width: 100%; letter-spacing: 0.578px; visibility: visible; box-sizing: border-box !important; overflow-wrap: break-word !important;">Kafka的底層架構(gòu)以及實(shí)現(xiàn)原理。 希望本篇,對你掌握好消息中間件有所幫助@mikechen Kafka核心架構(gòu) 它的架構(gòu)包括以下組件: 1、話題(Topic):是特定類型的消息流。消息是字節(jié)的有效負(fù)載(Payload),話題是消息的分類名; 2、生產(chǎn)者(Producer):是能夠發(fā)布消息到話題的任何對象; 3、服務(wù)代理(Broker):已發(fā)布的消息保存在一組服務(wù)器中,它們被稱為代理(Broker)或Kafka集群; 4、消費(fèi)者(Consumer):可以訂閱一個(gè)或多個(gè)話題,并從Broker拉數(shù)據(jù),從而消費(fèi)這些已發(fā)布的消息; 上圖中可以看出,生產(chǎn)者將數(shù)據(jù)發(fā)送到Broker代理,Broker代理有多個(gè)話題topic,消費(fèi)者從Broker獲取數(shù)據(jù)。 Kafka原理機(jī)制我們將消息的發(fā)布(publish)稱作 producer,將消息的訂閱(subscribe)表述為 consumer,將中間的存儲陣列稱作 broker(代理),這樣就可以大致描繪出這樣一個(gè)場面: 生產(chǎn)者將數(shù)據(jù)生產(chǎn)出來,交給 broker 進(jìn)行存儲,消費(fèi)者需要消費(fèi)數(shù)據(jù)了,就從broker中去拿出數(shù)據(jù)來,然后完成一系列對數(shù)據(jù)的處理操作。 多個(gè) broker 協(xié)同合作,producer 和 consumer 部署在各個(gè)業(yè)務(wù)邏輯中被頻繁的調(diào)用,三者通過 zookeeper管理協(xié)調(diào)請求和轉(zhuǎn)發(fā),這樣一個(gè)高性能的分布式消息發(fā)布訂閱系統(tǒng)就完成了。 圖上有個(gè)細(xì)節(jié)需要注意,producer 到 broker 的過程是 push,也就是有數(shù)據(jù)就推送到 broker,而 consumer 到 broker 的過程是 pull,是通過 consumer 主動(dòng)去拉數(shù)據(jù)的。 Zookeeper在kafka的作用(1)無論是kafka集群,還是producer和consumer都依賴于zookeeper來保證系統(tǒng)可用性集群保存一些meta信息。 (2)Kafka使用zookeeper作為其分布式協(xié)調(diào)框架,很好的將消息生產(chǎn)、消息存儲、消息消費(fèi)的過程結(jié)合在一起。 (3)同時(shí)借助zookeeper,kafka能夠生產(chǎn)者、消費(fèi)者和broker在內(nèi)的所以組件在無狀態(tài)的情況下,建立起生產(chǎn)者和消費(fèi)者的訂閱關(guān)系,并實(shí)現(xiàn)生產(chǎn)者與消費(fèi)者的負(fù)載均衡。 Kafka的特性1.高吞吐量、低延遲 kafka每秒可以處理幾十萬條消息,它的延遲最低只有幾毫秒,每個(gè)topic可以分多個(gè)partition, consumer group 對partition進(jìn)行consume操作。 2.可擴(kuò)展性 kafka集群支持熱擴(kuò)展 3.持久性、可靠性 消息被持久化到本地磁盤,并且支持?jǐn)?shù)據(jù)備份防止數(shù)據(jù)丟失 4.容錯(cuò)性 允許集群中節(jié)點(diǎn)失?。ㄈ舾北緮?shù)量為n,則允許n-1個(gè)節(jié)點(diǎn)失?。?/p> 5.高并發(fā) 支持?jǐn)?shù)千個(gè)客戶端同時(shí)讀寫 Kafka的應(yīng)用場景1.日志收集 一個(gè)公司可以用Kafka可以收集各種服務(wù)的log,通過kafka以統(tǒng)一接口服務(wù)的方式開放給各種consumer,例如hadoop、Hbase、Solr等。 2.消息系統(tǒng) 解耦和生產(chǎn)者和消費(fèi)者、緩存消息等。 3.用戶活動(dòng)跟蹤 Kafka經(jīng)常被用來記錄web用戶或者app用戶的各種活動(dòng),如瀏覽網(wǎng)頁、搜索、點(diǎn)擊等活動(dòng),這些活動(dòng)信息被各個(gè)服務(wù)器發(fā)布到kafka的topic中,然后訂閱者通過訂閱這些topic來做實(shí)時(shí)的監(jiān)控分析,或者裝載到hadoop、數(shù)據(jù)倉庫中做離線分析和挖掘。 4.運(yùn)營指標(biāo) Kafka也經(jīng)常用來記錄運(yùn)營監(jiān)控?cái)?shù)據(jù)。包括收集各種分布式應(yīng)用的數(shù)據(jù),生產(chǎn)各種操作的集中反饋,比如報(bào)警和報(bào)告。 5.流式處理 比如spark streaming和storm 閱讀原文:原文鏈接 該文章在 2025/7/2 0:07:38 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |