MQ,其實目的都是同樣,就是應對系統的併發能夠實現消峯和解耦的做用,相似於建立了一個線程異步操做,這一點能夠了解一下一款優秀的併發框架(Disruptor),聽說是每秒能夠處理十萬級數據,node
目前據本人瞭解,有一個開源分佈式事務框架Hmily使用了這個,實現了異步處理解耦的做用,也省去了很多代碼併發
言歸正傳,說回MQ,框架
本人就最近使用rabbitmq有感,發現rabbitmq在應對高併發的時候,效率彷佛不敵rocketmq,異步
rocketmq有幾大優勢:分佈式
高併發高併發
- ROCKETMQ/ONS消費區處理很快,快速拉取消息
- rabbitmq彷佛略慢一點,
高可用線程
-
- 它兩均可以作集羣,比較適用於分佈式系統
- 阿里雙十一用的是rocketmq做爲異步處理,天然很優秀,有億級消息堆積能力,這點可能不少mq就已經作不到了
所須要的節點數量server
- ROCKETMQ集羣環境下,雖然不依賴zk,可是須要name server,至少2個節點,2個MASTER,就是4個
- RABBITMQ集羣環境下,不依賴zk,只要3個erlang node,就是3個
全局順序消費rabbitmq
- ROCKETMQ/ONS同上,只是變成了另一個術語
- RABBITMQ能大體保證全局順序消費
- 以上所講的都是消息沒有被拒絕或者消息處理失敗從新回到隊列的狀況
事務
隊列
- RocketMQ支持事務消息,一旦消費失敗,同一個事務會進行回滾
- rabbitmq不支持
其餘功能-流控
其餘功能-優先級隊列