美團為什么偏愛kafka?

? ? ? ?美團每天產(chǎn)生幾億條消息,這些消息是如何處理的?kakfa又有什么魔力協(xié)助美團完成這么大數(shù)據(jù)量的運轉(zhuǎn)?

? ? ? ? 據(jù)說去美團面試必定會被問到kafka的問題,有一道題是:kafka的存儲機制是怎樣的?

? ? ? ?一、 kafka介紹:kafka 是分布式的、基于發(fā)布/訂閱的消息機制。

? ? ? ? 特點:1、磁盤持久化

? ? ? ? ? ? ? ? ? ?2、順序?qū)懭耄冗M先出

? ? ? ? ? ? ? ? ? ?3、支持流計算

? ? ?結(jié)構(gòu):kafka的數(shù)據(jù)單元由字節(jié)數(shù)組組成。消息由key+value構(gòu)成,key可為空。如下圖所示:

? ? 消息模式: 數(shù)據(jù)格式j(luò)son ,XML等

二、kafka的消息存儲

? ? 1、 kafka的消息存儲的劃分: 1)主題; 2)分區(qū)

(上面是根據(jù)個人的理解,不對的地方請指正)

? ? ? 比如主題:消息可以根據(jù)美團電影票,外賣,團購,打車等主題進行分類分區(qū);

? ? ? 比如主題外賣:可以分為北京,深圳,上海,三個分區(qū)?

? ? ? 然后每個分區(qū)可以放在不同服務(wù)器,所以吞吐量可以非常高,堆服務(wù)器輕輕松松到100萬。

2、kafka的消息以Broker存儲。

? ? ?1)一個獨立的kafka服務(wù)器被稱為broker

? ? ?2)多個broker組成一個集群

? ? 3)多個broker,有一個當(dāng)首領(lǐng)

? ?4)副本機制

? ? 以下為一張kafka的經(jīng)典集群圖,來源網(wǎng)絡(luò)。

其中生產(chǎn)者產(chǎn)生的消息只會給首領(lǐng),同理,銷售者也只會從首領(lǐng)消費消息。 如圖:生產(chǎn)者產(chǎn)生消息0,發(fā)送給broker1的首領(lǐng)主題A的0分區(qū)上,首領(lǐng)會自動復(fù)制到broker2對應(yīng)分區(qū)上。消費者同理。——(個人理解)

? ? ?三、kafka 與其它消息中間件比較

rabbitMQ可靠性高是因為有確認(rèn)機制,kafka的可靠性是通過副本做確認(rèn)的

????????流計算的理解:

????????比如:今年的天貓兩小時定量單突破千萬,應(yīng)該是給予消息系統(tǒng)的實時統(tǒng)計,不可能從數(shù)據(jù)庫層面統(tǒng)計。

????????kafka的流計算:

每天消息都帶有時間戳,通過SQL能實時統(tǒng)計出來訂單量

????????四、安裝,配置

? ? ????????? 略

????????五、使用

? ? ? ? pom文件引用:

配置項:

最重要的兩項:brokers 和 zk-nodes

生產(chǎn)者發(fā)送消息:

????消費者


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容