1. 程式人生 > >Kafka、RabbitMQ、RocketMQ等訊息中介軟體的對比

Kafka、RabbitMQ、RocketMQ等訊息中介軟體的對比

訊息中介軟體現在有不少,網上很多文章都對其做過對比,在這我對其做進一步總結與整理。

RocketMQ

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

Kafka

Kafka是LinkedIn開源的分散式釋出-訂閱訊息系統,目前歸屬於Apache定級專案。Kafka主要特點是基於Pull的模式來處理訊息消費,追求高吞吐量,一開始的目的就是用於日誌收集和傳輸。0.8版本開始支援複製,不支援事務,對訊息的重複、丟失、錯誤沒有嚴格要求,適合產生大量資料的網際網路服務的資料收集業務。

RabbitMQ

RabbitMQ是使用Erlang語言開發的開源訊息佇列系統,基於AMQP協議來實現。AMQP的主要特徵是面向訊息、佇列、路由(包括點對點和釋出/訂閱)、可靠性、安全。AMQP協議更多用在企業系統內,對資料一致性、穩定性和可靠性要求很高的場景,對效能和吞吐量的要求還在其次。

有關測試結論

Kafka的吞吐量高達17.3w/s,不愧是高吞吐量訊息中介軟體的行業老大。這主要取決於它的佇列模式保證了寫磁碟的過程是線性IO。此時broker磁碟IO已達瓶頸。

RocketMQ也表現不俗,吞吐量在11.6w/s,磁碟IO %util已接近100%。RocketMQ的訊息寫入記憶體後即返回ack,由單獨的執行緒專門做刷盤的操作,所有的訊息均是順序寫檔案。

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

在服務端處理同步傳送的效能上,Kafka>RocketMQ>RabbitMQ。

對比了最簡單的小訊息傳送場景,Kafka暫時勝出。但是,作為經受過歷次雙十一洗禮的RocketMQ,在網際網路應用場景中更有它優越的一面。

阿里官網對比

功能訊息佇列 RocketMQApache RocketMQ
(開源)
訊息佇列 KafkaApache Kafka
(開源)
RabbitMQ
(開源)
安全防護支援不支援支援不支援支援
主子賬號支援支援不支援支援不支援不支援
可靠性- 同步刷盤
- 同步雙寫
- 超3份資料副本
- 99.99999999%
- 同步刷盤
- 非同步刷盤
- 同步刷盤
- 同步雙寫
- 超3份資料副本
- 99.99999999%
非同步刷盤,丟資料概率高同步刷盤
可用性- 非常好,99.95%
- Always Writable
- 非常好,99.95%
- Always Writable
橫向擴充套件能力- 支援平滑擴充套件
- 支援百萬級 QPS
支援- 支援平滑擴充套件
- 支援百萬級 QPS
支援- 叢集擴容依賴前端
- LVS 負載均衡排程
Low Latency支援不支援支援不支援不支援
消費模型Push / PullPush / PullPush / PullPullPush / Pull
定時訊息支援(可精確到秒級)支援(只支援18個固定 Level)暫不支援不支援支援
事務訊息支援不支援不支援不支援不支援
順序訊息支援支援暫不支援支援不支援
全鏈路訊息軌跡支援不支援暫不支援不支援不支援
訊息堆積能力百億級別
不影響效能
百億級別
影響效能
百億級別
不影響效能
影響效能影響效能
訊息堆積查詢支援支援支援不支援不支援
訊息回溯支援支援支援不支援不支援
訊息重試支援支援暫不支援不支援支援
死信佇列支援支援不支援不支援支援
效能(常規)非常好
百萬級 QPS
非常好
十萬級 QPS
非常好
百萬級 QPS
非常好
百萬級 QPS
一般
萬級 QPS
效能(萬級 Topic 場景)非常好
百萬級 QPS
非常好
十萬級 QPS
非常好
百萬級 QPS
效能(海量訊息堆積場景)非常好
百萬級 QPS
非常好
十萬級 QPS
非常好
百萬級 QPS

對比

ActiveMQRabbitMQRocketMqZeroMQKafka
關注度

成 熟度

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

所屬社群/公司

ApacheMozilla
Public
License

Alibaba

Apache

社群活躍度
文件
特點功能齊全,被大量開源專案使用由於Erlang 語言的併發能力,效能很好 
各個環節分散式擴充套件設計,主從 HA;支援上萬個佇列;多種消費模式;效能很好低延時,高效能,最高 43萬條訊息每秒
授權方式 開源開源開源開源開源
開發語言JavaErlangJavaC
支援的協議OpenWire、
STOMP、
REST、XMPP、
AMQP
AMQP
自己定義的一
套(社群提供
JMS--不成熟)
TCP、UDP
客戶端支援語言Java、C、
C++、
Python、
PHP、
Perl、.net 等 
Java、C、
C++、
Python、
PHP、
Perl、.net 等
Java  
C++(不成熟)
python、 java、 php、.net 等
持久化記憶體、檔案、資料庫記憶體、檔案磁碟檔案在訊息傳送端儲存
事務支援不支援支援不支援
叢集 支援支援支援不支援
負載均衡支援支援支援不支援
管理介面一般無社群有 web
console   實現
部署方式獨立、嵌入獨立獨立獨立
順序無法保證嚴格的順序保證嚴格的消費順序
評價優點:
   成熟的產品,已經在很多公司得到應用(非大規模場景)。有較多的文件。各種協議支援較好,有多重語言的成熟的客戶端;
缺點:
根據其他使用者反饋,會出莫名其妙的問題,切會丟失訊息。 其重心放到activemq6.0 產品—apollo 上去了,目前社群不活躍,且對 5.x 維護較少;
Activemq 不適合用於上千個佇列的應用場景
優點:   由於erlang語言的特性,mq 效能較好;管理介面較豐富,在網際網路公司也有較大規模的應用;支援amqp系誒,有多中語言且支援 amqp 的客戶端可用
 
缺點:
  erlang語言難度較
大。叢集不支援動態擴充套件。
優點:
   模型簡單,介面易用(JMS   的介面很多場合並不太實用)。在阿里大規模應用。目前支付寶中的餘額寶等新興產
品均使用rocketmq。叢集規模大概在50 臺左右,單日處理訊息上百億;效能非常好,可以大量堆
積訊息在broker   中;支援多種消費,包括叢集消費、廣播消費等。開發度較活躍,版本更新很快。
 缺點:
  沒有在 mq 核心中去實現JMS 等介面,

RabbitMQ

是使用Erlang編寫的一個開源的訊息佇列,本身支援很多的協議:AMQP,XMPP, SMTP, STOMP,也正是如此,使的它變的非常重量級,更適合於企業級的開發。同時實現了一個經紀人(Broker)構架,這意味著訊息在傳送給客戶端時先在中心佇列排隊。對路由(Routing),負載均衡(Load balance)或者資料持久化都有很好的支援。

Redis

是一個Key-Value的NoSQL資料庫,開發維護很活躍,雖然它是一個Key-Value資料庫儲存系統,但它本身支援MQ功能,所以完全可以當做一個輕量級的佇列服務來使用。對於RabbitMQ和Redis的入隊和出隊操作,各執行100萬次,每10萬次記錄一次執行時間。測試資料分為128Bytes、512Bytes、1K和10K四個不同大小的資料。實驗表明:入隊時,當資料比較小時Redis的效能要高於RabbitMQ,而如果資料大小超過了10K,Redis則慢的無法忍受;出隊時,無論資料大小,Redis都表現出非常好的效能,而RabbitMQ的出隊效能則遠低於Redis。

ZeroMQ

號稱最快的訊息佇列系統,尤其針對大吞吐量的需求場景。ZMQ能夠實現RabbitMQ不擅長的高階/複雜的佇列,但是開發人員需要自己組合多種技術框架,技術上的複雜度是對這MQ能夠應用成功的挑戰。ZeroMQ具有一個獨特的非中介軟體的模式,你不需要安裝和執行一個訊息伺服器或中介軟體,因為你的應用程式將扮演了這個服務角色。你只需要簡單的引用ZeroMQ程式庫,可以使用NuGet安裝,然後你就可以愉快的在應用程式之間傳送訊息了。但是ZeroMQ僅提供非永續性的佇列,也就是說如果down機,資料將會丟失。其中,Twitter的Storm中使用ZeroMQ作為資料流的傳輸。

ActiveMQ

是Apache下的一個子專案。 類似於ZeroMQ,它能夠以代理人和點對點的技術實現佇列。同時類似於RabbitMQ,它少量程式碼就可以高效地實現高階應用場景。RabbitMQ、ZeroMQ、ActiveMQ均支援常用的多種語言客戶端 C++、Java、.Net,、Python、 Php、 Ruby等。

Jafka/Kafka

Kafka是Apache下的一個子專案,是一個高效能跨語言分散式Publish/Subscribe訊息佇列系統,而Jafka是在Kafka之上孵化而來的,即Kafka的一個升級版。具有以下特性:快速持久化,可以在O(1)的系統開銷下進行訊息持久化;高吞吐,在一臺普通的伺服器上既可以達到10W/s的吞吐速率;完全的分散式系統,Broker、Producer、Consumer都原生自動支援分散式,自動實現複雜均衡;支援Hadoop資料並行載入,對於像Hadoop的一樣的日誌資料和離線分析系統,但又要求實時處理的限制,這是一個可行的解決方案。Kafka通過Hadoop的並行載入機制來統一了線上和離線的訊息處理,這一點也是本課題所研究系統所看重的。Apache Kafka相對於ActiveMQ是一個非常輕量級的訊息系統,除了效能非常好之外,還是一個工作良好的分散式系統。

rabbitmq比kafka可靠,kafka更適合IO高吞吐的處理,比如ELK日誌收集**

Kafka和RabbitMq一樣是通用意圖訊息代理,他們都是以分散式部署為目的。但是他們對訊息語義模型的定義的假設是非常不同的。我對”AMQP 更成熟”這個論點是持懷疑態度的。讓我們用事實說話來看看用什麼解決方案來解決你的問題。
  a) 以下場景你比較適合使用Kafka。你有大量的事件(10萬以上/秒)、你需要以分割槽的,順序的,至少傳遞成功一次到混雜了線上和打包消費的消費者、你希望能重讀訊息、你能接受目前是有限的節點級別高可用或則說你並不介意通過論壇/IRC工具得到還在幼兒階段的軟體的支援。
  b) 以下場景你比較適合使用RabbitMQ。你有較少的事件(2萬以上/秒)並且需要通過複雜的路由邏輯去找到消費者、你希望訊息傳遞是可靠的、你並不關心訊息傳遞的順序、你需要現在就支援叢集-節點級別的高可用或則說你需要7*24小時的付費支援(當然也可以通過論壇/IRC工具)。

redis 訊息推送(基於分散式 pub/sub)多用於實時性較高的訊息推送,並不保證可靠。

redis 訊息推送(基於分散式 pub/sub)多用於實時性較高的訊息推送,並不保證可靠。其他的mq和kafka保證可靠但有一些延遲(非實時系統沒有保證延遲)。redis-pub/sub斷電就清空,而使用redis-list作為訊息推送雖然有持久化,但是又太弱智,也並非完全可靠不會丟。另外一點,redis 釋出訂閱除了表示不同的 topic 外,並不支援分組,比如kafka中釋出一個東西,多個訂閱者可以分組,同一個組裡只有一個訂閱者會收到該訊息,這樣可以用作負載均衡。比如,kafka 中釋出:topic = “釋出帖子” data=”文章1” 這個訊息,後面有一百臺伺服器每臺伺服器都是一個訂閱者,都訂閱了這個 topic,但是他們可能分為三組,A組50臺,用來真的做釋出文章,A組50臺裡所有 subscriber 都訂閱了這個topic。由於在同一組,這條訊息 (topic=”釋出帖子”, data=”文章1”)只會被A組裡面一臺當前空閒的機器收到。而B組25臺伺服器用於統計,C組25臺伺服器用於存檔備份,每組只有一臺會收到。用不同的組來決定每條訊息要抄送出多少分去,用同組內哪些訂閱者忙,哪些訂閱者空閒來決定訊息會被分到哪臺伺服器去處理,生產者消費者模型嘛。redis完全沒有這類機制,這兩點是最大的區別。

redis是記憶體資料庫!redis他爹做了disque,你要不要試試。mq一般都採用訂閱~釋出模型,如果你考慮效能,主要關注點就放在消費模型是pull還是push。影響最大的,應該是儲存結構。kafka的效能要在topic數量小於64的時候,才能發揮威力。partition決定的。極限情況下丟訊息,例如:主寫入訊息後,主機器宕機,並硬碟損壞。review程式碼的時候發現的。rabbit不知道,但是rocket的效能是(萬條每秒),並且能夠橫向無限擴充套件,單機topic數量在256時,效能損失較小。rocket可以說是kafka的變種,是阿里在充分reviewkafka程式碼後,開發的metaQ。在不斷更新,修補以後,阿里把metaQ3.0更名為rocket,並且rocket是java寫的易於維護。另外就是rocket和kafka有類似無限堆積的能力。想想,斷電不丟訊息,積壓兩億條訊息毫無壓力,niubilitykafka和rocket效能根本不是你需要考慮的問題。

在應用場景方面,

RabbitMQ,遵循AMQP協議,由內在高併發的erlanng語言開發,用在實時的對可靠性要求比較高的訊息傳遞上。

kafka是Linkedin於2010年12月份開源的訊息釋出訂閱系統,它主要用於處理活躍的流式資料,大資料量的資料處理上。

在架構模型方面,

RabbitMQ遵循AMQP協議,RabbitMQ的broker由Exchange,Binding,queue組成,其中exchange和binding組成了訊息的路由鍵;客戶端Producer通過連線channel和server進行通訊,Consumer從queue獲取訊息進行消費(長連線,queue有訊息會推送到consumer端,consumer迴圈從輸入流讀取資料)。rabbitMQ以broker為中心;有訊息的確認機制。

kafka遵從一般的MQ結構,producer,broker,consumer,以consumer為中心,訊息的消費資訊儲存的客戶端consumer上,consumer根據消費的點,從broker上批量pull資料;無訊息確認機制。

在吞吐量,

kafka具有高的吞吐量,內部採用訊息的批量處理,zero-copy機制,資料的儲存和獲取是本地磁碟順序批量操作,具有O(1)的複雜度,訊息處理的效率很高。

rabbitMQ在吞吐量方面稍遜於kafka,他們的出發點不一樣,rabbitMQ支援對訊息的可靠的傳遞,支援事務,不支援批量的操作;基於儲存的可靠性的要求儲存可以採用記憶體或者硬碟。

在可用性方面,

rabbitMQ支援miror的queue,主queue失效,miror queue接管。

kafka的broker支援主備模式。

在叢集負載均衡方面,

kafka採用zookeeper對叢集中的broker、consumer進行管理,可以註冊topic到zookeeper上;通過zookeeper的協調機制,producer儲存對應topic的broker資訊,可以隨機或者輪詢傳送到broker上;並且producer可以基於語義指定分片,訊息傳送到broker的某分片上。

rabbitMQ的負載均衡需要單獨的loadbalancer進行支援。

Kafka是可靠的分散式日誌儲存服務。用簡單的話來說,你可以把Kafka當作可順序寫入的一大卷磁帶, 可以隨時倒帶,快進到某個時間點重放。先說下日誌的定義:日誌是資料庫的核心,是對資料庫的所有變更的嚴格有序記錄,“表”是變更的結果。日誌的其他名字有: Changelog, Write Ahead Log, Commit Log, Redo Log, Journaling.Kafka的特徵如下:高寫入速度:Kafka能以超過1Gbps NIC的速度寫這盤磁帶(實際可以到SATA 3速度,參考Benchmarking Apache Kafka: 2 Million Writes Per Second (On Three Cheap Machines)),充分利用了磁碟的物理特性,即,隨機寫入慢(磁頭衝停),順序寫入快(磁頭懸浮)。高可靠性: 通過zookeeper做分散式一致性,同步到任意多塊磁碟上,故障自動切換選主,自愈。高容量:通過橫向擴充套件,LinkedIn每日通過Kafka儲存的新增資料高達175TB,8000億條訊息,可無限擴容,類似把兩條磁帶粘到一起。傳統業務資料庫的根本缺陷在於:1. 太慢,讀寫太昂貴,無法避免的隨機定址。(磁碟最快5ms定址,固態又太昂貴。)2. 根本無法適應持續產生的資料流,越用越慢。(索引效率問題)3. 無法水平scale。(多半是讀寫分離,一主多備。另: NewSQL通過一致性演算法,有多主。)針對這些問題,Kafka提出了一種方法: “log-centric approach(以日誌為中心的方法)。”將傳統資料庫分為兩個獨立的系統,即日誌系統和索引系統。“持久化和索引分開,日誌儘可能快的落地,索引按照自己的速度追趕。”在資料可靠性在得到Kafka這種快速的,類似磁帶順序記錄方式保障的大前提下。資料的呈現,使用方式變得非常靈活,可以根據需要將資料流同時送入搜尋系統,RDBMS系統,資料倉庫系統, 圖資料庫系統,日誌分析等這些各種不同的資料庫系統。 這些不同的系統只不過是一種對Kafka磁帶資料的一種詮釋,一個側面,一個索引,一個快照。資料丟了,沒關係,重放一遍磁帶即可,更多的時候,對這些各式資料庫系統的維護只是需要定期做一個快照,並拷貝到一個安全的物件儲存(如S3) 而已。 一句話:“日誌都是相同的日誌,索引各有各的不同。”關於流計算:在以流為基本抽象的儲存模型下,資料流和資料流之間,可以多流混合處理,或者流和狀態,狀態和狀態的JOIN處理,這就是Kafka Stream提供的功能。 一個簡單的例子是,在使用者觸發了某個事件後,和使用者表混合處理,產生資料增補(Augment),再進入資料倉庫進行相關性分析,一些簡單的視窗統計和實時分析也很容易就能滿足,比如 在收到使用者登入訊息的時候,線上人數+1, 離線的時候-1,反應出當前系統的線上使用者總數。這方面可以參考PipelineDB https://www.pipelinedb.com/Kafka會讓你重新思考系統的構建方式,使以前不可能的事變為可能,是一個系統中最重要的最核心的部分,不誇張的說,系統設計都需要圍繞Kafka做。

相關推薦

KafkaRabbitMQRocketMQ訊息中介軟體對比 —— 訊息傳送效能和區別

分散式系統中,我們廣泛運用訊息中介軟體進行系統間的資料交換,便於非同步解耦。現在開源的訊息中介軟體有很多,前段時間我們自家的產品 RocketMQ (MetaQ的核心) 也順利開源,得到大家的關注。 那麼,訊息中介軟體效能究竟哪家強? 帶著這個疑問,我們中介軟體測

架構師日記——KafkaRabbitMQRocketMQ訊息中介軟體對比

分散式系統中,我們廣泛運用訊息中介軟體進行系統間的資料交換,便於非同步解耦。現在開源的訊息中介軟體有很多,前段時間我們自家的產品 RocketMQ (MetaQ的核心) 也順利開源,得到大家的關注。 那麼,訊息中介軟體效能究竟哪家強? 帶著這個疑問,我們中

KafkaRabbitMQRocketMQ訊息中介軟體對比

訊息中介軟體現在有不少,網上很多文章都對其做過對比,在這我對其做進一步總結與整理。RocketMQ淘寶內部的交易系統使用了淘寶自主研發的Notify訊息中介軟體,使用Mysql作為訊息儲存媒介,可完全水平擴容,為了進一步降低成本,我們認為儲存部分可以進一步優化,2011年初,

TIBCO RendezvousIBM MQ和JMS訊息中介軟體技術比較

1.1.1.      TIBCO Rendezvous — 技術介紹 TIBCO Rendezvous(或稱為TIBCO RV)產品是一種中介軟體,它具有釋出/訂閱(Publish/Subscribe)、基於主題定址(Subject-Based Addressing) 和

【轉】【選型】【MQ】訊息中介軟體對比

https://blog.csdn.net/huayushuangfei/article/details/80866642    訊息中介軟體對比 為什麼選擇RocketMQ 價效比,社群活躍度  價效比之“性”:  效能:阿里支撐,經受住淘寶,

訊息中介軟體kafka與activeMQrabbitMQzeroMQrocketMQ的比較

一、kafka 1、不完全符合jms規範,注重吞吐量,類似udp 和 tcp 2、一般做大資料吞吐的管道 我們現在的用途就是負責在各個idc之間通訊 3、量大對資料不是百分之百保證的,會有資料丟失,不是百分百送達(amq和rmq等有重發機制,而kafka沒有);在吞吐量有提升 ,在這方面

訊息中介軟體/佇列:ActiveMQRabbitMQKafkaRocketMQZeroMq

Kafka最高,RabbitMq 次之, ActiveMq 最差。 2)吞吐量對比: kafka具有高的吞吐量,內部採用訊息的批量處理,zero-copy機制,資料的儲存和獲取是本地磁碟順序批量操作,具有O(1)的複雜度,訊息處理的效率很高。 rabbitMQ在吞吐量方面稍遜於kafka,他們的出發點不一樣,

KafkaRabbitMQRocketMQ訊息中介軟體對比 —— 訊息傳送效能(轉自阿里中介軟體

引言分散式系統中,我們廣泛運用訊息中介軟體進行系統間的資料交換,便於非同步解耦。現在開源的訊息中介軟體有很多,前段時間我們自家的產品 RocketMQ (MetaQ的核心) 也順利開源,得到大家的關注。那麼,訊息中介軟體效能究竟哪家強?帶著這個疑問,我們中介軟體測試組對常見的三類訊息產品(Kafka、Rabb

KafkaRabbitMQRocketMQ 訊息中介軟體對比 | 訊息傳送效能篇

摘要: 訊息中介軟體效能究竟哪家強? 帶著這個疑問,我們訊息佇列測試小組對常見的三類訊息產品(Kafka、RabbitMQ、RocketMQ)做了效能比較。 阿里雲訊息佇列測試小組 出品 分散式系統中,我們廣泛運用訊息中介軟體進行系統間的資料交換,便於非同步解耦。現在

KafkaRabbitMQRocketMQ訊息中介軟體對比

引言分散式系統中,我們廣泛運用訊息中介軟體進行系統間的資料交換,便於非同步解耦。現在開源的訊息中介軟體有很多,前段時間我們自家的產品 RocketMQ (MetaQ的核心) 也順利開源,得到大家的關注。那麼,訊息中介軟體效能究竟哪家強?帶著這個疑問,我們中介軟體測試組對常見的三類訊息產品(Kafka、Rabb

為什麼使用訊息佇列?訊息佇列有什麼優點和缺點?KafkaActiveMQRabbitMQRocketMQ 都有什麼優點和缺點?

面試題 為什麼使用訊息佇列? 訊息佇列有什麼優點和缺點? Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什麼區別,以及適合哪些場景? 面試官心理分析 其實面試官主要是想看看: 第一,你知不知道你們系統裡為什麼要用訊息佇列這個東西? 不少候選人,說自己專案裡用了 Redis、M

ActiveMQRabbitMQRocketMQKafka有什麼優點和缺點

ActiveMQ   單機吞吐量:萬級   topic數量都吞吐量的影響:   時效性:ms級   可用性:高,基於主從架構實現高可用性   訊息可靠性:有較低的概率丟失資料   功能支援:MQ領域的功能極其完備   總結:     非常成熟,功能強大,在早些年業內大量的公司以及專案中都有應用

KafkaActiveMQRabbitMQRocketMQ效能對比

特性 ActiveMQ RabbitMQ RocketMQ Kafka 單機吞吐量 萬級,比 RocketMQ、Kafka 低一個數量級 同 Activ

Java訊息佇列總結只需一篇解決ActiveMQRabbitMQZeroMQKafka

一、訊息佇列概述 訊息佇列中介軟體是分散式系統中重要的元件,主要解決應用解耦,非同步訊息,流量削鋒等問題,實現高效能,高可用,可伸縮和最終一致性架構。目前使用較多的訊息佇列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ 二、

訊息中介軟體系列五:RabbitMQ的使用場景(非同步處理應用解耦)

一、非同步處理 場景: 使用者註冊,寫入資料庫成功以後,傳送郵件和簡訊。 準備工作: 1)安裝RabbitMQ,參考前面的文章 2)新建一個名為RabbitMQAsyncProc的maven web工程,在pom.xml檔案裡面引入如下依賴 <project xmlns="http://maven.a

面試題:KafkaActiveMQRabbitMQRocketMQ 有什麼優缺點

面試題 1.為什麼使用訊息佇列? 2.訊息佇列有什麼優點和缺點? 3.Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什麼區別,以及適合哪些場景? 面試官心理分析 其實面試官主要是想看看: 第一,你知不知道你們系統裡為什麼要用訊息佇列這個東西? 不少

訊息中介軟體學習總結(1)——RocketMQ之專訪RocketMQ聯合創始人:專案思路技術細節和未來規劃

編者按 這些年開源氛圍越來越好,各大IT公司都紛紛將一些自研程式碼開源出來。2012年,阿里巴巴開源其自研的第三代分散式訊息中介軟體——RocketMQ。經過幾年的技術打磨,阿里稱基於RocketMQ技術,目前雙十一當天訊息容量可達到萬億級。 2016年11月,阿里將Ro

【陌上軒客】技術領域:涉獵JavaGoPythonGroovy 語言,高效能高併發高可用非同步與訊息中介軟體、快取與資料庫分散式與微服務容器和自動化領域; 興趣愛好:籃球,騎行,讀書,發呆; 職業規劃:勵志成為一名出色的伺服器端系統架構師。

陌上軒客 技術領域:涉獵Java、Go、Python、Groovy 等語言,高效能、高併發、高可用、非同步與訊息中介軟體、快取與資料庫、分散式與微服務、容器和自動化等領域; 興趣愛好:籃球,騎行,讀書,發呆; 職業...

轉載:~面試題:KafkaActiveMQRabbitMQRocketMQ 有什麼優缺點

面試題 1.為什麼使用訊息佇列? 2.訊息佇列有什麼優點和缺點? 3.Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什麼區別,以及適合哪些場景? 面試官心理分析 其實面試官主要是想看看: 第一,你知不知道你們系統裡為什麼要用訊息佇列這個東西? 不少候選

KafkaRabbitMQRocketMQ消息中間件的對比 —— 消息發送性能-轉自阿裏中間件

壓力 隊列 xxxx java開發 返回 簡單 大量 數量 pull 引言 分布式系統中,我們廣泛運用消息中間件進行系統間的數據交換,便於異步解耦。現在開源的消息中間件有很多,前段時間我們自家的產品 RocketMQ (MetaQ的內核) 也順利開源,得到大家的關註。