RocketMQ與Kafka對比(18項差異)

轉(zhuǎn)自:https://github.com/alibaba/RocketMQ/wiki/rmq_vs_kafka

淘寶內(nèi)部的交易系統(tǒng)使用了淘寶自主研發(fā)的Notify消息中間件音半,使用MySQL作為消息存儲媒介挪钓,可完全水平擴容,為了進一步降低成本轩勘,我們認(rèn)為存儲部分可以進一步優(yōu)化隘世,2011年初可柿,Linkin開源了Kafka這個優(yōu)秀的消息中間件,淘寶中間件團隊在對Kafka做過充分Review之后丙者,Kafka無限消息堆積复斥,高效的持久化速度吸引了我們,但是同時發(fā)現(xiàn)這個消息系統(tǒng)主要定位于日志傳輸械媒,對于使用在淘寶交易永票、訂單、充值等場景下還有諸多特性不滿足滥沫,為此我們重新用Java語言編寫了RocketMQ侣集,定位于非日志的可靠消息傳輸(日志場景也OK),目前RocketMQ在阿里集團被廣泛應(yīng)用在訂單兰绣,交易世分,充值,流計算缀辩,消息推送臭埋,日志流式處理,binglog分發(fā)等場景臀玄。
為了方便大家選型瓢阴,整理一份RocketMQ與Kafka的對比文檔,文中如有錯誤之處健无,歡迎來函指正荣恐。vintage.wang@gmail.com

數(shù)據(jù)可靠性
RocketMQ支持異步實時刷盤,同步刷盤累贤,同步Replication叠穆,異步Replication
Kafka使用異步刷盤方式,異步Replication

總結(jié):RocketMQ的同步刷盤在單機可靠性上比Kafka更高臼膏,不會因為操作系統(tǒng)Crash硼被,導(dǎo)致數(shù)據(jù)丟失。 同時同步Replication也比Kafka異步Replication更可靠渗磅,數(shù)據(jù)完全無單點嚷硫。另外Kafka的Replication以topic為單位检访,支持主機宕機,備機自動切換仔掸,但是這里有個問題脆贵,由于是異步Replication,那么切換后會有數(shù)據(jù)丟失嘉汰,同時Leader如果重啟后丹禀,會與已經(jīng)存在的Leader產(chǎn)生數(shù)據(jù)沖突。開源版本的RocketMQ不支持Master宕機鞋怀,Slave自動切換為Master双泪,阿里云版本的RocketMQ支持自動切換特性。

性能對比
Kafka單機寫入TPS約在百萬條/秒密似,消息大小10個字節(jié)
RocketMQ單機寫入TPS單實例約7萬條/秒焙矛,單機部署3個Broker,可以跑到最高12萬條/秒残腌,消息大小10個字節(jié)

總結(jié):Kafka的TPS跑到單機百萬村斟,主要是由于Producer端將多個小消息合并,批量發(fā)向Broker抛猫。

RocketMQ為什么沒有這么做蟆盹?
Producer通常使用Java語言,緩存過多消息闺金,GC是個很嚴(yán)重的問題
Producer調(diào)用發(fā)送消息接口逾滥,消息未發(fā)送到Broker,向業(yè)務(wù)返回成功败匹,此時Producer宕機寨昙,會導(dǎo)致消息丟失,業(yè)務(wù)出錯
Producer通常為分布式系統(tǒng)掀亩,且每臺機器都是多線程發(fā)送舔哪,我們認(rèn)為線上的系統(tǒng)單個Producer每秒產(chǎn)生的數(shù)據(jù)量有限,不可能上萬槽棍。
緩存的功能完全可以由上層業(yè)務(wù)完成捉蚤。

單機支持的隊列數(shù)
Kafka單機超過64個隊列/分區(qū),Load會發(fā)生明顯的飆高現(xiàn)象刹泄,隊列越多外里,load越高,發(fā)送消息響應(yīng)時間變長
RocketMQ單機支持最高5萬個隊列特石,Load不會發(fā)生明顯變化

隊列多有什么好處?
單機可以創(chuàng)建更多Topic鳖链,因為每個Topic都是由一批隊列組成
Consumer的集群規(guī)模和隊列數(shù)成正比姆蘸,隊列越多墩莫,Consumer集群可以越大

消息投遞實時性
Kafka使用短輪詢方式,實時性取決于輪詢間隔時間
RocketMQ使用長輪詢逞敷,同Push方式實時性一致狂秦,消息的投遞延時通常在幾個毫秒。

消費失敗重試
Kafka消費失敗不支持重試
RocketMQ消費失敗支持定時重試推捐,每次重試間隔時間順延

總結(jié):例如充值類應(yīng)用裂问,當(dāng)前時刻調(diào)用運營商網(wǎng)關(guān),充值失敗牛柒,可能是對方壓力過多堪簿,稍后在調(diào)用就會成功,如支付寶到銀行扣款也是類似需求皮壁。
這里的重試需要可靠的重試椭更,即失敗重試的消息不因為Consumer宕機導(dǎo)致丟失。

嚴(yán)格的消息順序
Kafka支持消息順序蛾魄,但是一臺Broker宕機后虑瀑,就會產(chǎn)生消息亂序
RocketMQ支持嚴(yán)格的消息順序,在順序消息場景下滴须,一臺Broker宕機后舌狗,發(fā)送消息會失敗,但是不會亂序

Mysql Binlog分發(fā)需要嚴(yán)格的消息順序

[]定時消息
Kafka不支持定時消息
RocketMQ支持兩類定時消息開源版本RocketMQ僅支持定時Level
阿里云ONS支持定時Level扔水,以及指定的毫秒級別的延時時間

分布式事務(wù)消息
Kafka不支持分布式事務(wù)消息
阿里云ONS支持分布式定時消息痛侍,未來開源版本的RocketMQ也有計劃支持分布式事務(wù)消息

消息查詢
Kafka不支持消息查詢
RocketMQ支持根據(jù)Message Id查詢消息,也支持根據(jù)消息內(nèi)容查詢消息(發(fā)送消息時指定一個Message Key铭污,任意字符串恋日,例如指定為訂單Id)

總結(jié):消息查詢對于定位消息丟失問題非常有幫助,例如某個訂單處理失敗嘹狞,是消息沒收到還是收到處理出錯了岂膳。

消息回溯
Kafka理論上可以按照Offset來回溯消息
RocketMQ支持按照時間來回溯消息,精度毫秒磅网,例如從一天之前的某時某分某秒開始重新消費消息

總結(jié):典型業(yè)務(wù)場景如consumer做訂單分析谈截,但是由于程序邏輯或者依賴的系統(tǒng)發(fā)生故障等原因,導(dǎo)致今天消費的消息全部無效涧偷,需要重新從昨天零點開始消費簸喂,那么以時間為起點的消息重放功能對于業(yè)務(wù)非常有幫助熙宇。

消費并行度
Kafka的消費并行度依賴Topic配置的分區(qū)數(shù)条辟,如分區(qū)數(shù)為10钦勘,那么最多10臺機器來并行消費(每臺機器只能開啟一個線程)惫周,或者一臺機器消費(10個線程并行消費)播赁。即消費并行度和分區(qū)數(shù)一致礁阁。

RocketMQ消費并行度分兩種情況
順序消費方式并行度同Kafka完全一致
亂序方式并行度取決于Consumer的線程數(shù)燎窘,如Topic配置10個隊列轧坎,10臺機器消費,每臺機器100個線程颜曾,那么并行度為1000纠拔。

消息軌跡
Kafka不支持消息軌跡
阿里云ONS支持消息軌跡

開發(fā)語言友好性
Kafka采用Scala編寫
RocketMQ采用Java語言編寫

Broker端消息過濾
Kafka不支持Broker端的消息過濾
RocketMQ支持兩種Broker端消息過濾方式根據(jù)Message Tag來過濾,相當(dāng)于子topic概念
向服務(wù)器上傳一段Java代碼泛豪,可以對消息做任意形式的過濾稠诲,甚至可以做Message Body的過濾拆分。

消息堆積能力
理論上Kafka要比RocketMQ的堆積能力更強诡曙,不過RocketMQ單機也可以支持億級的消息堆積能力臀叙,我們認(rèn)為這個堆積能力已經(jīng)完全可以滿足業(yè)務(wù)需求。

開源社區(qū)活躍度
Kafka社區(qū)更新較慢
RocketMQ的github社區(qū)有250個個人岗仑、公司用戶登記了聯(lián)系方式匹耕,QQ群超過1000人。

商業(yè)支持
Kafka原開發(fā)團隊成立新公司荠雕,目前暫沒有相關(guān)產(chǎn)品看到
RocketMQ在阿里云上已經(jīng)開放公測近半年稳其,目前以云服務(wù)形式免費供大家商用,并向用戶承諾99.99%的可靠性炸卑,同時徹底解決了用戶自己搭建MQ產(chǎn)品的運維復(fù)雜性問題

成熟度
Kafka在日志領(lǐng)域比較成熟
RocketMQ在阿里集團內(nèi)部有大量的應(yīng)用在使用既鞠,每天都產(chǎn)生海量的消息,并且順利支持了多次天貓雙十一海量消息考驗盖文,是數(shù)據(jù)削峰填谷的利器嘱蛋。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市五续,隨后出現(xiàn)的幾起案子洒敏,更是在濱河造成了極大的恐慌,老刑警劉巖疙驾,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凶伙,死亡現(xiàn)場離奇詭異,居然都是意外死亡它碎,警方通過查閱死者的電腦和手機函荣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扳肛,“玉大人傻挂,你說我怎么就攤上這事⊥谙ⅲ” “怎么了金拒?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長套腹。 經(jīng)常有香客問我殖蚕,道長轿衔,這世上最難降的妖魔是什么沉迹? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任睦疫,我火速辦了婚禮,結(jié)果婚禮上鞭呕,老公的妹妹穿的比我還像新娘蛤育。我一直安慰自己,他們只是感情好葫松,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布瓦糕。 她就那樣靜靜地躺著,像睡著了一般腋么。 火紅的嫁衣襯著肌膚如雪咕娄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天珊擂,我揣著相機與錄音圣勒,去河邊找鬼。 笑死摧扇,一個胖子當(dāng)著我的面吹牛圣贸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播扛稽,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼吁峻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了在张?” 一聲冷哼從身側(cè)響起用含,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎帮匾,沒想到半個月后啄骇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡辟狈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年肠缔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哼转。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡明未,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出壹蔓,到底是詐尸還是另有隱情趟妥,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布佣蓉,位于F島的核電站披摄,受9級特大地震影響亲雪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜疚膊,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一义辕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧寓盗,春花似錦灌砖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至善炫,卻和暖如春撩幽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背箩艺。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工窜醉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人舅桩。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓酱虎,卻偏偏與公主長得像,于是被迫代替她去往敵國和親擂涛。 傳聞我的和親對象是個殘疾皇子读串,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 在互聯(lián)網(wǎng)公司工作的RD們,對消息中間件最為熟悉不過了撒妈,如今隨著分布式系統(tǒng)架構(gòu)的盛行恢暖。一個高可用、高并發(fā)的消息中...
    高效匠人閱讀 14,007評論 6 27
  • (我的美,從不預(yù)約棋蚌,她總是在某個瞬間如花綻放嫁佳,無論過去,還是現(xiàn)在谷暮, 那種美的感覺一來蒿往,身體突然就通透了,荷爾蒙蠢蠢...
    一枝迷糊梅閱讀 339評論 0 3
  • 我又玩了很多地方湿弦,比如:美麗的雪花山和歷史遠久的萬里長城還有四季如春的神潭大峽谷瓤漏,不過最讓我難以忘記的是美麗的海南...
    軒禎閱讀 130評論 0 0
  • 言言言言言言言言言言言言言言言言言言言言言言言言言言言言言言言言言言言言言言言言言言言言言言言言言言言言言言言言言...
    冬巴拉玲閱讀 252評論 0 0
  • 對于我一個神經(jīng)大條的吃貨而言,吃東西就是吃東西,沒那么多講究蔬充!乍聽徐香蝶俱,以為是人名呢!挺好聽的還饥漫!實則不是榨呆,鬧半天...
    田生萬物書婷閱讀 291評論 0 0