真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

常用消息隊列對比-創(chuàng)新互聯(lián)

作為中間件,消息隊列是分布式應(yīng)用間交換信息的重要組件。消息隊列可駐留在內(nèi)存或磁盤上, 隊列可以存儲消息直到它們被應(yīng)用程序讀走。通過消息隊列,應(yīng)用程序可以在不知道彼此位置的情況下獨立處理消息,或者在處理消息前不需要等待接收此消息。所以消息隊列可以解決應(yīng)用解耦、異步消息、流量削鋒等問題,是實現(xiàn)高性能、高可用、可伸縮和最終一致性架構(gòu)中不可以或缺的一環(huán)。下面對消息隊列就直接使用MQ表示。

創(chuàng)新互聯(lián)建站主營望江網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶APP開發(fā)公司,望江h(huán)5小程序開發(fā)搭建,望江網(wǎng)站營銷推廣歡迎望江等地區(qū)企業(yè)咨詢

常用消息隊列對比

現(xiàn)在比較常見的MQ產(chǎn)品主要是ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ,當(dāng)然還有很多其他的產(chǎn)品。因為個人水平有限,就簡單的比較下這幾種MQ的優(yōu)缺點,作為自己選型的參考。

1 ZeroMQ

常用消息隊列對比

ZeroMQ (also known as ?MQ, 0MQ, or zmq) looks like an embeddable networking library but acts like a concurrency framework. It gives you sockets that carry atomic messages across various transports like in-process, inter-process, TCP, and multicast. You can connect sockets N-to-N with patterns like fan-out, pub-sub, task distribution, and request-reply. It’s fast enough to be the fabric for clustered products. Its asynchronous I/O model gives you scalable multicore applications, built as asynchronous message-processing tasks. It has a score of language APIs and runs on most operating systems. ZeroMQ is from iMatix and is LGPLv3 open source.

ZeroMQ號稱是“史上最快的消息隊列”,基于c語言開發(fā)的,可以在任何平臺通過任何代碼連接,通過inproc、IPC、TCP、TIPC、多播傳送消息,支持發(fā)布-訂閱、推-拉、共享隊列等模式,高速異步I/O引擎。

根據(jù)官方的說法,ZeroMQ是一個簡單好用的傳輸層,像框架一樣的可嵌入的socket類庫,使Socket編程更加簡單、簡潔、性能更高,是專門為高吞吐量/低延遲的場景開發(fā)的。ZeroMQ與其他MQ有著本質(zhì)的區(qū)別,它根本不是消息隊列服務(wù)器,更類似與一個底層網(wǎng)絡(luò)通訊庫,對原有Socket API進(jìn)行封裝,在使用的使用引入對應(yīng)的jar包即可,可謂是相當(dāng)靈活。

同時,因為它的簡單靈活,如果我們想作為消息隊列使用的話,需要開發(fā)大量代碼。而且,ZeroMQ不支持消息持久化,其定位并不是安全可靠的消息傳輸,所以還需要自己編碼保證可靠性。簡而言之一句話,ZeroMQ很強(qiáng)大,但是想用好需要自己實現(xiàn)。

2 RabbitMQ

常用消息隊列對比

官方定義:

  • Robust messaging for applications

  • Easy to use

  • Runs on all major operating systems

  • Supports a huge number of developer platforms

  • Open source and commercially supported

RabbitMQ是基于Erlang語言編寫的開源消息隊列,通過Erlang的Actor模型實現(xiàn)了數(shù)據(jù)的穩(wěn)定可靠傳輸。本身是實現(xiàn)AMQP的消息隊列,因此官方推薦,如果僅僅是使用RabbitMQ的話,建議使用AMQP 0-9-1的協(xié)議。不過,因為其可擴(kuò)展性,可以通過插件的形式使用STOMP、XMPP、AMQP 1.0,還可以通過插件使用HTTP這種非消息的傳輸協(xié)議。所以,RabbitMQ可以說是適應(yīng)性非常強(qiáng)的一個消息隊列中間件了。

當(dāng)然,不僅是協(xié)議支持的多,還因為它實現(xiàn)了代理(Broker)架構(gòu),意味著消息在發(fā)送到客戶端之前可以在中央節(jié)點上排隊。此特性使得RabbitMQ易于使用和部署,適宜于很多場景如路由、負(fù)載均衡或消息持久化等,用消息隊列只需幾行代碼即可搞定。但是,這使得它的可擴(kuò)展性差,速度較慢,因為中央節(jié)點增加了延遲,消息封裝后也比較大,如需配置RabbitMQ則需要在目標(biāo)機(jī)器上安裝Erlang環(huán)境。

總的來說,RabbitMQ在數(shù)據(jù)一致性、穩(wěn)定性和可靠性方面比較優(yōu)秀,而且直接或間接的支持多種協(xié)議,對多種語言支持良好。但是其性能和吞吐量差強(qiáng)人意,由于Erlang語言本身的限制,二次開發(fā)成本較高。

3 ActiveMQ

常用消息隊列對比

Apache ActiveMQ ? is the most popular and powerful open source messaging and Integration Patterns server.
Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. Apache ActiveMQ is released under the Apache 2.0 License.

ActiveMQ介于ZeroMQ和RabbitMQ之間。類似于ZeroMQ,它可以部署于代理模式和P2P模式。類似于RabbitMQ,它易于實現(xiàn)高級場景,而且只需付出低消耗。被譽(yù)為消息中間件的“瑞士×××”。

支持OpenWire、Stomp、AMQP v1.0、MQTT v3.1、REST、Ajax、Webservice等多種協(xié)議;完全支持JMS1.1和J2EE 1.4規(guī)范(事務(wù)、持久化、XA消息);支持持久化到數(shù)據(jù)庫。但是ActiveMQ不夠輕巧,而且對于隊列較多的情況支持不好,據(jù)說還有丟消息的情況。

目前已經(jīng)有了其下一代消息產(chǎn)品Apollo。

4 Apollo

常用消息隊列對比

ActiveMQ Apollo is a faster, more reliable, easier to maintain messaging broker built from the foundations of the original ActiveMQ. It accomplishes this using a radically different threading and message dispatching architecture. Like ActiveMQ, Apollo is a multi-protocol broker and supports STOMP, AMQP, MQTT, Openwire, SSL, and WebSockets.

Apache稱Apollo為最快、最強(qiáng)健的STOMP服務(wù)器。支持STOMP、AMQP、MQTT、OpenWire協(xié)議,支持Topic、Queue、持久訂閱等消費(fèi)形式,支持對消息的多種處理,支持安全性處理,支持REST管理API。。。功能列表很長,大的弊病就是目前市場接收度不夠,所以使用的并不廣泛。

5 Kafka

常用消息隊列對比

Kafka? is used for building real-time data pipelines and streaming apps. It is horizontally scalable, fault-tolerant, wicked fast, and runs in production in thousands of companies.

Kafka是LinkedIn于2010年12月開發(fā)并開源的一個分布式流平臺,現(xiàn)在是Apache的頂級項目,是一個高性能跨語言分布式Publish/Subscribe消息隊列系統(tǒng),以Pull的形式消費(fèi)消息。具有以下特性:快速持久化,可以在O(1)的系統(tǒng)開銷下進(jìn)行消息持久化;高吞吐,在一臺普通的服務(wù)器上既可以達(dá)到10W/s的吞吐速率;完全的分布式系統(tǒng),Broker、Producer、Consumer都原生自動支持分布式,自動實現(xiàn)復(fù)雜均衡。因為設(shè)計之初是作為日志流平臺和運(yùn)營消息管道平臺,所以實現(xiàn)了消息順序和海量堆積。

Kafka自身服務(wù)與消息的生產(chǎn)和消費(fèi)都依賴與Zookeeper,使用Scala語言開發(fā)。因為其消息的消費(fèi)使用客戶端Pull方式,消息可以被多個客戶端消費(fèi),理論上消息會重復(fù),但是不會丟失(除非消息過期)。因此比較常用的場景是作為日志傳輸?shù)南⑵脚_。

6 RocketMQ

常用消息隊列對比

Apache RocketMQ? is an open source distributed messaging and streaming data platform.

RocketMQ是阿里開源的消息中間件,目前在Apache孵化,使用純Java開發(fā),具有高吞吐量、高可用性、適合大規(guī)模分布式系統(tǒng)應(yīng)用的特點。RocketMQ思路起源于Kafka,但并不是簡單的復(fù)制,它對消息的可靠傳輸及事務(wù)性做了優(yōu)化,目前在阿里集團(tuán)被廣泛應(yīng)用于交易、充值、流計算、消息推送、日志流式處理、binglog分發(fā)等場景,支撐了阿里多次雙十一活動。

因為是阿里內(nèi)部從實踐到產(chǎn)品的產(chǎn)物,因此里面很多接口、api并不是很普遍適用。其可靠性毋庸置疑,而且與Kafka一脈相承(甚至更優(yōu)),性能強(qiáng)勁,支持海量堆積。不過據(jù)說,沒有在mq核心上實現(xiàn)JMS,但是也無傷大雅。

7 寫在最后

其實對于這些消息隊列的產(chǎn)品,每一種都在某一領(lǐng)域占有一席,雖然ActiveMQ目前在社區(qū)已經(jīng)不是很活躍,但是其下一代產(chǎn)品Apollo已經(jīng)問世。ZeroMQ小而美,RabbitMQ大而穩(wěn),Kakfa和RocketMQ快而強(qiáng)勁。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


分享文章:常用消息隊列對比-創(chuàng)新互聯(lián)
標(biāo)題URL:http://weahome.cn/article/hocjj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部