91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行RocketMQ與Kafka對比

發布時間:2021-12-01 15:58:15 來源:億速云 閱讀:160 作者:柒染 欄目:云計算

這篇文章給大家介紹如何進行RocketMQ與Kafka對比,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

淘寶內部的交易系統使用了淘寶自主研發的Notify消息中間件,使用Mysql作為消息存儲媒介,可完全水平擴容,為了進一步降低成本,我們認為存儲部分可以進一步優化,2011年初,Linkin開源了Kafka這個優秀的消息中間件,淘寶中間件團隊在對Kafka做過充分Review之后,Kafka無限消息堆積,高效的持久化速度吸引了我們,但是同時發現這個消息系統主要定位于日志傳輸,對于使用在淘寶交易、訂單、充值等場景下還有諸多特性不滿足,為此我們重新用Java語言編寫了RocketMQ,定位于非日志的可靠消息傳輸(日志場景也OK),目前RocketMQ在阿里集團被廣泛應用在訂單,交易,充值,流計算,消息推送,日志流式處理,binglog分發等場景。

數據可靠性

  • RocketMQ支持異步實時刷盤,同步刷盤,同步Replication,異步Replication

  • Kafka使用異步刷盤方式,異步Replication

總結:RocketMQ的同步刷盤在單機可靠性上比Kafka更高,不會因為操作系統Crash,導致數據丟失。 同時同步Replication也比Kafka異步Replication更可靠,數據完全無單點。另外Kafka的Replication以topic為單位,支持主機宕機,備機自動切換,但是這里有個問題,由于是異步Replication,那么切換后會有數據丟失,同時Leader如果重啟后,會與已經存在的Leader產生數據沖突。開源版本的RocketMQ不支持Master宕機,Slave自動切換為Master,阿里云版本的RocketMQ支持自動切換特性。

性能對比

  • Kafka單機寫入TPS約在百萬條/秒,消息大小10個字節

  • RocketMQ單機寫入TPS單實例約7萬條/秒,單機部署3個Broker,可以跑到最高12萬條/秒,消息大小10個字節

總結:Kafka的TPS跑到單機百萬,主要是由于Producer端將多個小消息合并,批量發向Broker。

RocketMQ為什么沒有這么做?

  1. Producer通常使用Java語言,緩存過多消息,GC是個很嚴重的問題

  2. Producer調用發送消息接口,消息未發送到Broker,向業務返回成功,此時Producer宕機,會導致消息丟失,業務出錯

  3. Producer通常為分布式系統,且每臺機器都是多線程發送,我們認為線上的系統單個Producer每秒產生的數據量有限,不可能上萬。

  4. 緩存的功能完全可以由上層業務完成。

單機支持的隊列數

  • Kafka單機超過64個隊列/分區,Load會發生明顯的飆高現象,隊列越多,load越高,發送消息響應時間變長

  • RocketMQ單機支持最高5萬個隊列,Load不會發生明顯變化

隊列多有什么好處?

  1. 單機可以創建更多Topic,因為每個Topic都是由一批隊列組成

  2. Consumer的集群規模和隊列數成正比,隊列越多,Consumer集群可以越大

消息投遞實時性

  • Kafka使用短輪詢方式,實時性取決于輪詢間隔時間

  • RocketMQ使用長輪詢,同Push方式實時性一致,消息的投遞延時通常在幾個毫秒。

消費失敗重試

  • Kafka消費失敗不支持重試

  • RocketMQ消費失敗支持定時重試,每次重試間隔時間順延

總結:例如充值類應用,當前時刻調用運營商網關,充值失敗,可能是對方壓力過多,稍后在調用就會成功,如支付寶到銀行扣款也是類似需求。

這里的重試需要可靠的重試,即失敗重試的消息不因為Consumer宕機導致丟失。

嚴格的消息順序

  • Kafka支持消息順序,但是一臺Broker宕機后,就會產生消息亂序

  • RocketMQ支持嚴格的消息順序,在順序消息場景下,一臺Broker宕機后,發送消息會失敗,但是不會亂序

Mysql Binlog分發需要嚴格的消息順序

定時消息

  • Kafka不支持定時消息

  • RocketMQ支持兩類定時消息

    • 開源版本RocketMQ僅支持定時Level

    • 阿里云ONS支持定時Level,以及指定的毫秒級別的延時時間

分布式事務消息

  • Kafka不支持分布式事務消息

  • 阿里云ONS支持分布式定時消息,未來開源版本的RocketMQ也有計劃支持分布式事務消息

消息查詢

  • Kafka不支持消息查詢

  • RocketMQ支持根據Message Id查詢消息,也支持根據消息內容查詢消息(發送消息時指定一個Message Key,任意字符串,例如指定為訂單Id)

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

消息回溯

  • Kafka理論上可以按照Offset來回溯消息

  • RocketMQ支持按照時間來回溯消息,精度毫秒,例如從一天之前的某時某分某秒開始重新消費消息

總結:典型業務場景如consumer做訂單分析,但是由于程序邏輯或者依賴的系統發生故障等原因,導致今天消費的消息全部無效,需要重新從昨天零點開始消費,那么以時間為起點的消息重放功能對于業務非常有幫助。

消費并行度

  • Kafka的消費并行度依賴Topic配置的分區數,如分區數為10,那么最多10臺機器來并行消費(每臺機器只能開啟一個線程),或者一臺機器消費(10個線程并行消費)。即消費并行度和分區數一致。

  • RocketMQ消費并行度分兩種情況

    • 順序消費方式并行度同Kafka完全一致

    • 亂序方式并行度取決于Consumer的線程數,如Topic配置10個隊列,10臺機器消費,每臺機器100個線程,那么并行度為1000。

消息軌跡

  • Kafka不支持消息軌跡

  • 阿里云ONS支持消息軌跡

開發語言友好性

  • Kafka采用Scala編寫

  • RocketMQ采用Java語言編寫

Broker端消息過濾

  • Kafka不支持Broker端的消息過濾

  • RocketMQ支持兩種Broker端消息過濾方式

    • 根據Message Tag來過濾,相當于子topic概念

    • 服務器上傳一段Java代碼,可以對消息做任意形式的過濾,甚至可以做Message Body的過濾拆分。

消息堆積能力

理論上Kafka要比RocketMQ的堆積能力更強,不過RocketMQ單機也可以支持億級的消息堆積能力,我們認為這個堆積能力已經完全可以滿足業務需求。

開源社區活躍度

  • Kafka社區更新較慢

  • RocketMQ的github社區有250個個人、公司用戶登記了聯系方式,QQ群超過1000人。

商業支持

  • Kafka原開發團隊成立新公司,目前暫沒有相關產品看到

  • RocketMQ在阿里云上已經開放公測近半年,目前以云服務形式免費供大家商用,并向用戶承諾99.99%的可靠性,同時徹底解決了用戶自己搭建MQ產品的運維復雜性問題

成熟度

  • Kafka在日志領域比較成熟

  • RocketMQ在阿里集團內部有大量的應用在使用,每天都產生海量的消息,并且順利支持了多次天貓雙十一海量消息考驗,是數據削峰填谷的利器。

關于如何進行RocketMQ與Kafka對比就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

资阳市| 叶城县| 千阳县| 淮南市| 祁门县| 芜湖县| 同江市| 梅河口市| 深水埗区| 桂阳县| 屯门区| 新乡县| 定襄县| 平阴县| 凌云县| 曲阜市| 鸡泽县| 汝阳县| 高州市| 晋州市| 阜南县| 莱芜市| 渑池县| 桂平市| 博野县| 寿宁县| 江安县| 礼泉县| 芦山县| 奉新县| 法库县| 临海市| 郎溪县| 古交市| 神木县| 陆川县| 富裕县| 特克斯县| 梓潼县| 黎川县| 瑞金市|