2019-08-13

MemcacheQ

持久化消息隊(duì)列(簡稱mcq)是一個輕量級的消息隊(duì)列,特性如下:

簡單易用

處理速度快

多條隊(duì)列

并發(fā)性能好

與memcache的協(xié)議兼容。意味著只要裝了前者的extension即可,不需要額外的插件

在zend framework中使用很方便

MSMQ

這是微軟的產(chǎn)品力唯一被認(rèn)為有價值的東西。如果MSMQ能證明可以應(yīng)對這種任務(wù),他們將選擇使用它。

關(guān)鍵是它并不復(fù)雜,除了接收和發(fā)送,沒有別的;它有一些硬性限制,比如最大消息體積是4MB。

然而,通過和一些想MassTransit或NServiceBus這樣的軟件的連接,它完全可以解決這些問題。

ZeroMQ

ZeroMQ是一個非常輕量級的消息系統(tǒng),號稱最快的消息隊(duì)列系統(tǒng),專門為高吞吐量/低延遲的場景開發(fā),在金融界的應(yīng)用中經(jīng)??梢园l(fā)現(xiàn)它。

與RabbitMQ相比,ZeroMQ支持許多高級消息場景,能夠?qū)崿F(xiàn)RabbitMQ不擅長的高級/復(fù)雜的隊(duì)列,但是你必須實(shí)現(xiàn)ZeroMQ框架中的各個塊(比如Socket或Device等)。

ZeroMQ具有一個獨(dú)特的非中間件的模式,你不需要安裝和運(yùn)行一個消息服務(wù)器或中間件,因?yàn)槟愕膽?yīng)用程序?qū)缪葸@個服務(wù)角色。你只需要簡單地引用ZeroMQ程序庫,可以使用NuGet安裝,然后你就可以愉快地在應(yīng)用程序之間發(fā)送消息了。

但是ZeroMQ僅提供非持久性的隊(duì)列,即沒有地方可以觀察它是否有問題出現(xiàn),也就是說如果down機(jī),數(shù)據(jù)將會丟失。

ZeroMQ非常靈活,但是你必須學(xué)習(xí)它的80頁的手冊(如果你要寫一個分布式系統(tǒng),一定要閱讀它)。

Jafka/Kafka

Kafka(能將消息分散到不同的節(jié)點(diǎn)上)是LinkedIn于2010年12月開發(fā)并開源的一個分布式MQ系統(tǒng),現(xiàn)在是Apache的一個孵化項(xiàng)目,是一個高性能跨語言分布式Publish/Subscribe消息隊(duì)列系統(tǒng),而Jafka是在Kafka之上孵化而來的,即Kafka的一個升級版。具有以下特性:

快速持久化,可以在O(1)的系統(tǒng)開銷下進(jìn)行消息持久化;

高吞吐,在一臺普通的服務(wù)器上既可以打到10W/s的吞吐速率;

完全的分布式系統(tǒng),Broker、Producer、Consumer都原生自動支持分布式,自動實(shí)現(xiàn)復(fù)雜均衡;

支持Hadoop數(shù)據(jù)并行加載,統(tǒng)一了在線和離線的消息處理,對于像Hadoop一樣的日志數(shù)據(jù)和離線分析系統(tǒng),但又要求實(shí)時處理的限制,這是一個可行的解決方案。

相對于ActiveMQ是一個非常輕量級的消息系統(tǒng),除了性能非常好之外,還是一個工作良好的分布式系統(tǒng)。

Apache ActiveMQ

ActiveMQ居于(RabbitMQ&ZeroMQ)之間,類似于ZemoMQ,它可以部署于代理模式和P2P模式。

ActiveMQ被譽(yù)為Java世界的中堅(jiān)力量。它有很長的歷史,且被廣泛使用。它還是跨平臺的,給那些非微軟平臺的產(chǎn)品提供了一個天然的集成接入點(diǎn)。

然而它只有跑過了MSMQ才有可能被考慮。如需配置ActiveMQ則需要在目標(biāo)機(jī)器上安裝Java環(huán)境。

類似于RabbitMQ,它易于實(shí)現(xiàn)高級場景,而且只需付出低消耗。它被譽(yù)為消息中間件的“瑞士軍刀”。

RabbitMQ

RabbitMQ是使用Erlang編寫的一個開源消息隊(duì)列,本身支持很多的協(xié)議:AMQP, XMPP, SMTP, STONP,也正是如此,使的它變的非常重量級,更適合于企業(yè)級的開發(fā)。

它實(shí)現(xiàn)了代理(Broker)架構(gòu),意味著消息在發(fā)送到客戶端之前可以在中央節(jié)點(diǎn)上排隊(duì)。此特性使得RabbitMQ易于使用和部署,適宜于很多場景如路由、負(fù)載均衡或消息持久化等,用消息隊(duì)列只需幾行代碼即可搞定。

但是,這使得它的可擴(kuò)展性差,速度較慢,因?yàn)橹醒牍?jié)點(diǎn)增加了延遲,消息封裝后也比較大。

如需配置RabbitMQ則需要在目標(biāo)機(jī)器上安裝Erlang環(huán)境。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1 消息隊(duì)列中間件簡介 消息隊(duì)列中間件是分布式系統(tǒng)中重要的組件,主要解決應(yīng)用耦合,異步消息,流量削鋒等問題實(shí)現(xiàn)高性...
    艾綸_6460閱讀 273評論 0 0
  • 前言 在分布式系統(tǒng)中,我們廣泛運(yùn)用消息中間件進(jìn)行系統(tǒng)間的數(shù)據(jù)交換,便于異步解耦。現(xiàn)在開源的消息中間件有很多,前段時...
    zwb_jianshu閱讀 2,721評論 0 0
  • 前言 在分布式系統(tǒng)中,我們廣泛運(yùn)用消息中間件進(jìn)行系統(tǒng)間的數(shù)據(jù)交換,便于異步解耦?,F(xiàn)在開源的消息中間件有很多,前段時...
    中v中閱讀 3,190評論 1 29
  • 1 消息隊(duì)列概述 消息隊(duì)列中間件是分布式系統(tǒng)中重要的組件,主要解決應(yīng)用耦合,異步消息,流量削鋒等問題。實(shí)現(xiàn)高性能,...
    Bobby0322閱讀 11,061評論 0 24
  • 正如我之前的那篇關(guān)于Promise的介紹, async可以讓你的異步操作變得更加簡單。 異步操作 async函數(shù)返...
    龔達(dá)耶閱讀 10,354評論 0 5

友情鏈接更多精彩內(nèi)容