国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Kafka、RabbitMQ、RocketMQ中間件的對比

這篇具有很好參考價值的文章主要介紹了Kafka、RabbitMQ、RocketMQ中間件的對比。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Kafka、RabbitMQ、RocketMQ中間件的對比,java消息中間件現(xiàn)在有不少,網(wǎng)上很多文章都對其做過對比,在這我對其做進(jìn)一步總結(jié)與整理。

?文章來源地址http://www.zghlxwxcb.cn/news/detail-745121.html

?

RocketMQ

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

?

Kafka

Kafka是LinkedIn開源的分布式發(fā)布-訂閱消息系統(tǒng),目前歸屬于Apache定級項目。Kafka主要特點是基于Pull的模式來處理消息消費,追求高吞吐量,一開始的目的就是用于日志收集和傳輸。0.8版本開始支持復(fù)制,不支持事務(wù),對消息的重復(fù)、丟失、錯誤沒有嚴(yán)格要求,適合產(chǎn)生大量數(shù)據(jù)的互聯(lián)網(wǎng)服務(wù)的數(shù)據(jù)收集業(yè)務(wù)。

?

RabbitMQ

RabbitMQ是使用Erlang語言開發(fā)的開源消息隊列系統(tǒng),基于AMQP協(xié)議來實現(xiàn)。AMQP的主要特征是面向消息、隊列、路由(包括點對點和發(fā)布/訂閱)、可靠性、安全。AMQP協(xié)議更多用在企業(yè)系統(tǒng)內(nèi),對數(shù)據(jù)一致性、穩(wěn)定性和可靠性要求很高的場景,對性能和吞吐量的要求還在其次。

?

?

?

有關(guān)測試結(jié)論

Kafka的吞吐量高達(dá)17.3w/s,不愧是高吞吐量消息中間件的行業(yè)老大。這主要取決于它的隊列模式保證了寫磁盤的過程是線性IO。此時broker磁盤IO已達(dá)瓶頸。

?

RocketMQ也表現(xiàn)不俗,吞吐量在11.6w/s,磁盤IO %util已接近100%。RocketMQ的消息寫入內(nèi)存后即返回ack,由單獨的線程專門做刷盤的操作,所有的消息均是順序?qū)懳募?/p>

?

RabbitMQ的吞吐量5.95w/s,CPU資源消耗較高。它支持AMQP協(xié)議,實現(xiàn)非常重量級,為了保證消息的可靠性在吞吐量上做了取舍。我們還做了RabbitMQ在消息持久化場景下的性能測試,吞吐量在2.6w/s左右。

?

在服務(wù)端處理同步發(fā)送的性能上,Kafka>RocketMQ>RabbitMQ。

?

對比了最簡單的小消息發(fā)送場景,Kafka暫時勝出。但是,作為經(jīng)受過歷次雙十一洗禮的RocketMQ,在互聯(lián)網(wǎng)應(yīng)用場景中更有它優(yōu)越的一面。

?

?

?

阿里官網(wǎng)對比

功能 消息隊列 RocketMQ Apache RocketMQ

(開源) 消息隊列 Kafka Apache Kafka

(開源) RabbitMQ

(開源)

安全防護(hù) 支持 不支持 支持 不支持 支持

主子賬號支持 支持 不支持 支持 不支持 不支持

可靠性 - 同步刷盤

- 同步雙寫

- 超3份數(shù)據(jù)副本

- 99.99999999% - 同步刷盤

- 異步刷盤 - 同步刷盤

- 同步雙寫

- 超3份數(shù)據(jù)副本

- 99.99999999% 異步刷盤,丟數(shù)據(jù)概率高 同步刷盤

可用性 - 非常好,99.95%

- Always Writable 好 - 非常好,99.95%

- Always Writable 好 好

橫向擴(kuò)展能力 - 支持平滑擴(kuò)展

- 支持百萬級 QPS 支持 - 支持平滑擴(kuò)展

- 支持百萬級 QPS 支持 - 集群擴(kuò)容依賴前端

- LVS 負(fù)載均衡調(diào)度

Low Latency 支持 不支持 支持 不支持 不支持

消費模型 Push / Pull Push / Pull Push / Pull Pull Push / Pull

定時消息 支持(可精確到秒級) 支持(只支持18個固定 Level) 暫不支持 不支持 支持

事務(wù)消息 支持 不支持 不支持 不支持 不支持

順序消息 支持 支持 暫不支持 支持 不支持

全鏈路消息軌跡 支持 不支持 暫不支持 不支持 不支持

消息堆積能力 百億級別

不影響性能 百億級別

影響性能 百億級別

不影響性能 影響性能 影響性能

消息堆積查詢 支持 支持 支持 不支持 不支持

消息回溯 支持 支持 支持 不支持 不支持

消息重試 支持 支持 暫不支持 不支持 支持

死信隊列 支持 支持 不支持 不支持 支持

性能(常規(guī)) 非常好

百萬級 QPS 非常好

十萬級 QPS 非常好

百萬級 QPS 非常好

百萬級 QPS 一般

萬級 QPS

性能(萬級 Topic 場景) 非常好

百萬級 QPS 非常好

十萬級 QPS 非常好

百萬級 QPS 低 低

性能(海量消息堆積場景) 非常好

百萬級 QPS 非常好

十萬級 QPS 非常好

百萬級 QPS 低 低

?

?

對比

? ActiveMQ RabbitMQ RocketMq ZeroMQ Kafka

關(guān)注度 高 高 中 中 高

成 熟度

?

? ? ? ? ? ? ? ??

?

成熟 成熟 比較成熟 不成熟 成熟

所屬社區(qū)/公司

?

? ? ? ? ? ? ? ? ? ? ? ?

?

Apache Mozilla

Public

License?

Alibaba

?

Apache

?

? ?

社區(qū)活躍度 高 高 中 低 高

文檔 多 多 中 中 多

特點 功能齊全,被大量開源項目使用 由于Erlang 語言的并發(fā)能力,性能很好?

各個環(huán)節(jié)分布式擴(kuò)展設(shè)計,主從 HA;支持上萬個隊列;多種消費模式;性能很好 低延時,高性能,最高 43萬條消息每秒??

授權(quán)方式 開源 開源 開源 開源 開源

開發(fā)語言 Java Erlang Java C??

支持的協(xié)議 OpenWire、

STOMP、

REST、XMPP、

AMQP AMQP

自己定義的一

套(社區(qū)提供

JMS--不成熟) TCP、UDP??

客戶端支持語言 Java、C、

C++、

Python、

PHP、

Perl、.net 等 Java、C、

C++、

Python、

PHP、

Perl、.net 等

Java??

C++(不成熟) python、 java、 php、.net 等??

持久化 內(nèi)存、文件、數(shù)據(jù)庫 內(nèi)存、文件 磁盤文件 在消息發(fā)送端保存??

事務(wù) 支持 不支持 支持 不支持??

集群 支持 支持 支持 不支持??

負(fù)載均衡 支持 支持 支持 不支持??

管理界面 一般 好 無社區(qū)有 web

console 實現(xiàn) 無??

部署方式 獨立、嵌入 獨立 獨立 獨立??

順序 無法保證嚴(yán)格的順序 保證嚴(yán)格的消費順序? ??

評價 優(yōu)點:

? ?成熟的產(chǎn)品,已經(jīng)在很多公司得到應(yīng)用(非大規(guī)模場景)。有較多的文檔。各種協(xié)議支持較好,有多重語言的成熟的客戶端;

缺點:

根據(jù)其他用戶反饋,會出莫名其妙的問題,切會丟失消息。 其重心放到activemq6.0 產(chǎn)品—apollo 上去了,目前社區(qū)不活躍,且對 5.x 維護(hù)較少;

Activemq 不適合用于上千個隊列的應(yīng)用場景 優(yōu)點: 由于erlang語言的特性,mq 性能較好;管理界面較豐富,在互聯(lián)網(wǎng)公司也有較大規(guī)模的應(yīng)用;支持amqp系誒,有多中語言且支持 amqp 的客戶端可用

?

缺點:

? erlang語言難度較

大。集群不支持動態(tài)擴(kuò)展。 優(yōu)點:

? ?模型簡單,接口易用(JMS 的接口很多場合并不太實用)。在阿里大規(guī)模應(yīng)用。目前支付寶中的余額寶等新興產(chǎn)

品均使用rocketmq。集群規(guī)模大概在50 臺左右,單日處理消息上百億;性能非常好,可以大量堆

積消息在broker 中;支持多種消費,包括集群消費、廣播消費等。開發(fā)度較活躍,版本更新很快。

?缺點:

? 沒有在 mq 核心中去實現(xiàn)JMS 等接口,? ??

? ? ? ? ? ?

?

RabbitMQ

是使用Erlang編寫的一個開源的消息隊列,本身支持很多的協(xié)議:AMQP,XMPP, SMTP, STOMP,也正是如此,使的它變的非常重量級,更適合于企業(yè)級的開發(fā)。同時實現(xiàn)了一個經(jīng)紀(jì)人(Broker)構(gòu)架,這意味著消息在發(fā)送給客戶端時先在中心隊列排隊。對路由(Routing),負(fù)載均衡(Load balance)或者數(shù)據(jù)持久化都有很好的支持。

?

Redis

是一個Key-Value的NoSQL數(shù)據(jù)庫,開發(fā)維護(hù)很活躍,雖然它是一個Key-Value數(shù)據(jù)庫存儲系統(tǒng),但它本身支持MQ功能,所以完全可以當(dāng)做一個輕量級的隊列服務(wù)來使用。對于RabbitMQ和Redis的入隊和出隊操作,各執(zhí)行100萬次,每10萬次記錄一次執(zhí)行時間。測試數(shù)據(jù)分為128Bytes、512Bytes、1K和10K四個不同大小的數(shù)據(jù)。實驗表明:入隊時,當(dāng)數(shù)據(jù)比較小時Redis的性能要高于RabbitMQ,而如果數(shù)據(jù)大小超過了10K,Redis則慢的無法忍受;出隊時,無論數(shù)據(jù)大小,Redis都表現(xiàn)出非常好的性能,而RabbitMQ的出隊性能則遠(yuǎn)低于Redis。

?

ZeroMQ

號稱最快的消息隊列系統(tǒng),尤其針對大吞吐量的需求場景。ZMQ能夠?qū)崿F(xiàn)RabbitMQ不擅長的高級/復(fù)雜的隊列,但是開發(fā)人員需要自己組合多種技術(shù)框架,技術(shù)上的復(fù)雜度是對這MQ能夠應(yīng)用成功的挑戰(zhàn)。ZeroMQ具有一個獨特的非中間件的模式,你不需要安裝和運行一個消息服務(wù)器或中間件,因為你的應(yīng)用程序?qū)缪萘诉@個服務(wù)角色。你只需要簡單的引用ZeroMQ程序庫,可以使用NuGet安裝,然后你就可以愉快的在應(yīng)用程序之間發(fā)送消息了。但是ZeroMQ僅提供非持久性的隊列,也就是說如果down機(jī),數(shù)據(jù)將會丟失。其中,Twitter的Storm中使用ZeroMQ作為數(shù)據(jù)流的傳輸。

?

ActiveMQ

是Apache下的一個子項目。 類似于ZeroMQ,它能夠以代理人和點對點的技術(shù)實現(xiàn)隊列。同時類似于RabbitMQ,它少量代碼就可以高效地實現(xiàn)高級應(yīng)用場景。RabbitMQ、ZeroMQ、ActiveMQ均支持常用的多種語言客戶端 C++、Java、.Net,、Python、 Php、 Ruby等。

?

Jafka/Kafka

Kafka是Apache下的一個子項目,是一個高性能跨語言分布式Publish/Subscribe消息隊列系統(tǒng),而Jafka是在Kafka之上孵化而來的,即Kafka的一個升級版。具有以下特性:快速持久化,可以在O(1)的系統(tǒng)開銷下進(jìn)行消息持久化;高吞吐,在一臺普通的服務(wù)器上既可以達(dá)到10W/s的吞吐速率;完全的分布式系統(tǒng),Broker、Producer、Consumer都原生自動支持分布式,自動實現(xiàn)復(fù)雜均衡;支持Hadoop數(shù)據(jù)并行加載,對于像Hadoop的一樣的日志數(shù)據(jù)和離線分析系統(tǒng),但又要求實時處理的限制,這是一個可行的解決方案。Kafka通過Hadoop的并行加載機(jī)制來統(tǒng)一了在線和離線的消息處理,這一點也是本課題所研究系統(tǒng)所看重的。Apache Kafka相對于ActiveMQ是一個非常輕量級的消息系統(tǒng),除了性能非常好之外,還是一個工作良好的分布式系統(tǒng)。

?

到了這里,關(guān)于Kafka、RabbitMQ、RocketMQ中間件的對比的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 消息中間件(RocketMQ、RabbitMQ、ActiveMQ、Redis、kafka、ZeroMQ)以及之間的區(qū)別

    消息中間件(RocketMQ、RabbitMQ、ActiveMQ、Redis、kafka、ZeroMQ)以及之間的區(qū)別

    目錄 一、什么是消息中間件 二、消息中間件的組成 1、Broker 2、Producer 3、Consumer 4、Topic 5、Queue 6、Message 三、消息中間件通信模式 1、點對點(kafka不支持這種模式) ?2、發(fā)布/訂閱 ?四、消息中間件的作用 1、系統(tǒng)解耦 2、提高系統(tǒng)響應(yīng)時間 3、為大數(shù)據(jù)處理架構(gòu)提供服務(wù) 五、

    2024年01月25日
    瀏覽(26)
  • docker 安裝 mysql、redis、rabbitmq、RocketMQ、Nacos 等中間件

    docker 用寶塔進(jìn)行管理比較方便,如果想外部訪問,一定要用寶塔在安全那里打開對應(yīng)端口 使用 寶塔 直接安裝即可 注意:mysql這樣是沒辦法進(jìn)行外部鏈接的還需要一步打開外部鏈接操作。 需要在進(jìn)入 mysql 的bash之后進(jìn)行操作:具體操作 通過簡易版方式安裝,主打的就是有問

    2024年01月21日
    瀏覽(30)
  • 【Java中間件】RocketMQ

    【Java中間件】RocketMQ

    Message Queue,是一種提供消息隊列服務(wù)的中間件。提供了消息生產(chǎn)、存儲、消費全過程API的軟件系統(tǒng)。 MQ的作用 限流削峰:當(dāng)用戶發(fā)送超量請求時,將請求暫存,以便后期慢慢處理。如果不使用MQ暫存直接請求到業(yè)務(wù)系統(tǒng)中容易引起系統(tǒng)崩潰。 異步解耦:若上游系統(tǒng)和下游系

    2024年02月15日
    瀏覽(23)
  • 【Kubernetes部署Shardingsphere、Mycat、Mysql、Redis、中間件Rocketmq、Rabbitmq、Nacos】

    部署Shardingsphere、Mycat、Mysql、Redis、中間件Rocketmq、Rabbitmq、Nacos的步驟如下: 安裝Docker和Kubernetes環(huán)境。 部署MySQL: a. 在Kubernetes中創(chuàng)建一個MySQL的Service,可以使用外部LoadBalancer或ClusterIP類型的Service。 b. 創(chuàng)建MySQL的Deployment對象,并設(shè)置相關(guān)的配置,如鏡像名稱、環(huán)境變量等。

    2024年02月09日
    瀏覽(18)
  • 消息中間件,RabbitMQ,kafka常見面試題

    RabbitMQ和Kafka都是消息隊列系統(tǒng),可以用于流處理。流處理是指對高速、連續(xù)、增量的數(shù)據(jù)進(jìn)行實時處理。 RabbitMQ 和 Kafka 的相同點有以下幾個: 都是消息隊列系統(tǒng),可以用于流處理、異步通信、解耦等場景 都是開源的,有活躍的社區(qū)和豐富的文檔 都支持分布式部署,具有高

    2024年02月04日
    瀏覽(38)
  • 基于golang多消息隊列中間件的封裝nsq,rabbitmq,kafka

    場景 在創(chuàng)建個人的公共方法庫中有這樣一個需求,就是不同的項目會用到不同的消息隊列中間件,我的思路把所有的消息隊列中間件進(jìn)行封裝一個消息隊列接口(MQer)有兩個方法一個生產(chǎn)一個消費,那么在實例化對象的時候根據(jù)配置文件指定當(dāng)前項目使用的那個消息隊列中

    2024年02月14日
    瀏覽(93)
  • 實戰(zhàn):Spring Cloud Stream集成兼容多消息中間件kafka、rabbitmq

    實戰(zhàn):Spring Cloud Stream集成兼容多消息中間件kafka、rabbitmq

    前面的博文我們介紹并實戰(zhàn)演示了Spring Cloud Stream整合rabbitmq,其中主要介紹了如何使用和配置完成消息中間件的集成。但是,在實際的生產(chǎn)環(huán)境中可能會用到多個消息中間件,又或者是由于業(yè)務(wù)改變需要更換消息中間件,在這些情況下我們的Spring Cloud Stream框架可以完全兼容多

    2024年02月08日
    瀏覽(25)
  • RocketMQ:一個純java的開源消息中間件--開發(fā)測試環(huán)境搭建

    一、簡介 ? ? RocketMQ的前身是Metaq,當(dāng)?Metaq?3.0發(fā)布時,產(chǎn)品名稱改為? RocketMQ ????MetaQ2.x版本由于依賴了alibaba公司內(nèi)部其他系統(tǒng),對于公司外部用戶使用不夠友好,推薦使用3.0版本。 ? ? ?項目地址:? https://github.com/alibaba/RocketMQ

    2024年02月11日
    瀏覽(25)
  • 【Java面試丨消息中間件】Kafka

    【Java面試丨消息中間件】Kafka

    1. 介紹 使用kafka在消息的收發(fā)過程都有可能會出現(xiàn)消息丟失 (1)生產(chǎn)者發(fā)送消息到broker丟失 (2)消息在broker中存儲丟失 (3)消費者從broker接收消息丟失 2. 生產(chǎn)者發(fā)送消息到broker丟失 設(shè)置異步發(fā)送:同步發(fā)送會發(fā)生阻塞,一般使用異步發(fā)送方式發(fā)送消息 消息重試:由于網(wǎng)

    2024年02月11日
    瀏覽(30)
  • 想學(xué)高并發(fā)技能,這些常用的消息中間件( RabbitMQ、Kafka、ActiveMQ、Redis、NATS )你要必知

    對于全?;蛘吆蠖斯こ處焷碚f,解決高并發(fā)是一個必備的技能,一說到高并發(fā)時,我們第一反應(yīng)是分布式系統(tǒng),那么,消息中間件( RabbitMQ 、 Kafka 、 ActiveMQ 、 Redis 、 NATS 等)的出現(xiàn)是為了解決分布式系統(tǒng)中的消息傳遞和異步通信的問題,以及提供可靠的消息傳遞機(jī)制。它們

    2024年04月15日
    瀏覽(43)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包