歷啟鵬
很高興有機會和大家分享Apache RocketMQ。首先,和大家分享一下RocketMQ的發(fā)展歷史。2007年,阿里的B2C業(yè)務(wù)蓬勃發(fā)展,當時,阿里啟動了“五采石”項目,這個項目把阿里平臺拆分為若干個庫存中心、訂單中心、支付中心等,阿里第一代消息引擎Notify就誕生于此。2010年,阿里B2B業(yè)務(wù)也做了一些新的項目,打造了一個全新的消息中間件,叫做Napoli。無論是Napoli,還是第一代消息引擎Notify,都是基于關(guān)系型數(shù)據(jù)庫做的數(shù)據(jù)存儲。淘寶的關(guān)系型數(shù)據(jù)存儲量比較大,關(guān)系型數(shù)據(jù)庫會有大量事件堆積,也會導致很多性能問題。2011年,阿帕奇開源了一個叫卡布卡的項目,該項目的日志處理能力非常好,隨后,阿里也基于卡布卡的思路重構(gòu)了核心邏輯,形成了一個新的項目MetaQ。后來,阿里也把MetaQ貢獻給開源社區(qū)。因為卡布卡是社交場景,而阿里是電商場景,所以MetaQ在阿里內(nèi)部的使用過程中會遇到很多問題,比如,宕機和擴容問題。2015年,阿里重新編寫了MetaQ,命名為RocketMQ。2016年,阿里把RocketMQ捐獻給了阿帕奇基金會,成為了阿帕奇的孵化項目。2017年,RocketMQ成為了阿帕奇基金會的頂級項目。從此以后,RocketMQ受到了極大的關(guān)注,國內(nèi)外的很多銀行開始用RocketMQ進行POC的測試。
接下來,為大家介紹RocketMQ的生態(tài)布局。首先是RocketMQ Core,主要功能是進行消息訂閱和發(fā)布。其次是RocketMQ IoT Bridge,主要對接RocketMQ的上游生態(tài)IoT設(shè)備,可以支持MQTT和其他行業(yè)。我們在深耕各個產(chǎn)業(yè)的IoT時,發(fā)現(xiàn)很多行業(yè)都有自己的IoT設(shè)備協(xié)議。RocketMQ IoT Bridge原生設(shè)計的目的是為了兼容多協(xié)議,發(fā)動有熱情的開發(fā)者或者廠商一起去補充、完善各個行業(yè)的IoT采集協(xié)議,支持廠商自己定義自己的行業(yè)協(xié)議。RocketMQ IoT Bridge可以基于我們設(shè)備的數(shù)量做平滑的自動擴容和縮容,使用起來非常方便。最后是RocketMQ API,RocketMQ API支持下游生態(tài),可以支持在線以及離線的大數(shù)據(jù)分析平臺進行融合,Spark和Hadoop可以做無縫對接。目前,RocketMQ支持四種語言,分別是Java、C++、Goland、PHP。
關(guān)于Cloud RocketMQ,Cloud RocketMQ是我們對RocketMQ的一個功能規(guī)劃,包括Apache RocketMQ、Alibaba Cloud MQ、云服務(wù)三層。第一層包括普通消息、順序消息、廣播消息等基本功能。第二層包括Dashboard、定時消息、授權(quán)認證、安全配額、高可用等功能,據(jù)了解,現(xiàn)在阿里內(nèi)部使用的RocketMQ已經(jīng)完善了這些功能,如果有公司自己想用,我們建議他把這些功能補充上。第三層包括容災(zāi)演練、依賴管理、智能部署等功能。
接下來,介紹一下RocketMQ在大數(shù)據(jù)方面的幾個使用場景。第一個是RocketMQ for ELK。RocketMQ與ELK相融合,做一些日志分析。ELK是一個非常火的日志處理平臺,包括日志采集、日志分析、日志存儲等。但是,ELK這個平臺也有很多不盡如人意的地方,比如,ELK在做數(shù)據(jù)分析的時候,如果數(shù)據(jù)量非常大,對ELK就會產(chǎn)生巨大的壓力,一旦ELK出現(xiàn)故障,就會導致數(shù)據(jù)丟失,整個日志有可能會丟失?,F(xiàn)在,我們基于RocketMQ為ELK日志平臺推薦了一個方案,首先可以通過ELK產(chǎn)生一個filebeat,通過filebeat采集數(shù)據(jù)之后,直接發(fā)送到RocketMQ,把這些日志存儲下來做持久化。RocketMQ通過RocketMQ Streaming平臺完成日志分析、特定標簽的識別以及簡單的統(tǒng)計。完成之后,這些信息可以存儲到ELK的ElasticSearch平臺里,這樣就可以避免ELK的數(shù)據(jù)丟失和高負荷情況。
第二個是RocketMQ for IoT。RocketMQ在電力、能源、交通、物流等很多行業(yè)已經(jīng)在做IoT設(shè)備數(shù)據(jù)的一些存儲與分發(fā),比如,國家電網(wǎng)的電動汽車的車輛軌跡跟蹤,都是基于RocketMQ做存儲。另外,我們覺得未來IoT設(shè)備與云端連接,可以實現(xiàn)雙向通信與數(shù)據(jù)傳輸。比如,未來的智能冰箱,用戶使用一鍵購物,通過按鍵,向RocketMQ發(fā)送消息,RocketMQ如果再加上阿里云的計算函數(shù)或AWS的計算函數(shù),可以打通云端平臺,完成一鍵購物。
第三個是RocketMQ for Storm。RocketMQ是一個消息處理平臺,Storm是流式處理平臺,不同點是,我們定位RocketMQ為更輕量級的流式處理,比如,如果一個密集型的大數(shù)據(jù)分析,我們還是建議放在Storm平臺上做。
第四個是基于RocketMQ的金融級消息服務(wù)平臺。隨著金融業(yè)務(wù)的快速發(fā)展,ESB總線很多地方的擴展性并不是很強,比如,ESB總線很難做到服務(wù)的熔斷、降級等,我們基于RocketMQ,結(jié)合現(xiàn)有業(yè)務(wù),對ESB總線做了一些改造,結(jié)合消息組件完成了服務(wù)平臺的一個服務(wù)治理。
RocketMQ在這里起的作用主要有:收集各個服務(wù)中心的運行狀態(tài)和健康情況,把這些數(shù)據(jù)發(fā)送到?jīng)Q策中心,基于數(shù)據(jù)做了分析之后,把消息通過RocketMQ系統(tǒng)部署到各個服務(wù),完成對服務(wù)的閉環(huán)控制,在壓力比較大的時,RocketMQ可能會把消息發(fā)到控制端進行服務(wù)降級。
(根據(jù)演講內(nèi)容整理,未經(jīng)本人審核)