使用MQ消息隊(duì)列的優(yōu)缺點(diǎn)

1申钩、前言

公司的項(xiàng)目一直都是在使用MQ的次绘,但是由于使用的功能很簡(jiǎn)單,所以一直都是知其然不知其所以然撒遣,作為一個(gè)程序猿有必要了解每一個(gè)使用的技術(shù)邮偎,為什么使用它?它的優(yōu)點(diǎn)是什么义黎?缺點(diǎn)是什么禾进?等等。廉涕。泻云。

2.0使用mq的好處

2.1解耦與復(fù)用

系統(tǒng)A要發(fā)送一個(gè)消息到多個(gè)系統(tǒng),如果此時(shí)每增加一個(gè)系統(tǒng)狐蜕,系統(tǒng)A都需要通過(guò)修改源碼來(lái)增加接口壶愤,此時(shí)耦合非常高,但是如果中間使用消息隊(duì)列的話馏鹤,系統(tǒng)只需要發(fā)送一次到消息隊(duì)列征椒,別的系統(tǒng)就能復(fù)用該信息,當(dāng)增加或刪除系統(tǒng)調(diào)用接口的時(shí)候湃累,不需要額外的更新代碼勃救。

2.2異步

用戶調(diào)用一個(gè)接口的時(shí)候碍讨,可能該接口調(diào)用了別的方法。例如:用戶注冊(cè)的時(shí)候蒙秒,后臺(tái)可能需要調(diào)用:查詢數(shù)據(jù)庫(kù)勃黍,插入數(shù)據(jù)庫(kù),發(fā)送郵件晕讲,發(fā)送用戶指南等等...

但是用戶可能并不需要后臺(tái)將所有的任務(wù)執(zhí)行完畢覆获,那么此時(shí)在初入數(shù)據(jù)口后面加入mq隊(duì)列,用戶就能很快得到注冊(cè)成功的響應(yīng)而去做一些別的事情瓢省。mq的機(jī)制又能保證最終的一致性弄息,所以使用起來(lái)很安全很穩(wěn)定。

2.3消峰

何為消峰勤婚,就是當(dāng)系統(tǒng)壓力過(guò)大的時(shí)候摹量,讓系統(tǒng)壓力減小。如何做馒胆?

加入數(shù)據(jù)庫(kù)的讀寫(xiě)每秒3000缨称,在高峰期,系統(tǒng)的訪問(wèn)達(dá)到了每秒10000祝迂。此時(shí)由于加入了消息隊(duì)列睦尽,所以不會(huì)出現(xiàn)激增的訪問(wèn)導(dǎo)致系統(tǒng)奔潰。

(注意型雳,曉峰并不會(huì)讓用戶的等待時(shí)間減少骂删,所以一般會(huì)跟異步搭配來(lái)使用)

3.0使用mq的缺點(diǎn)

3.1增加了復(fù)雜度與降低了可用性

本來(lái)系統(tǒng)之間直接通行調(diào)用接口就行了,但是引入了mq導(dǎo)致系統(tǒng)的復(fù)雜度大大增加四啰,并且如果mq掛掉了,那么系統(tǒng)之間的通信就中斷了粗恢,導(dǎo)致整個(gè)系統(tǒng)的全部掛掉柑晒。

3.2一致性問(wèn)題

A系統(tǒng)處理完了發(fā)送到消息對(duì)流后直接返回成功了,用戶以為你這個(gè)請(qǐng)求就成功了眷射;但是問(wèn)題是匙赞,其他系統(tǒng)消費(fèi)該消息后,如果當(dāng)中有一個(gè)系統(tǒng)出現(xiàn)了問(wèn)題妖碉,導(dǎo)致數(shù)據(jù)丟失涌庭。最后就會(huì)發(fā)生數(shù)據(jù)不一致等問(wèn)題。

4.0常見(jiàn)的mq的區(qū)別

特性ActiveMQRabbitMQRocketMQKafka

單機(jī)吞吐量萬(wàn)級(jí)欧宜,吞吐量比RocketMQ和Kafka要低了一個(gè)數(shù)量級(jí)萬(wàn)級(jí)坐榆,吞吐量比RocketMQ和Kafka要低了一個(gè)數(shù)量級(jí)10萬(wàn)級(jí),RocketMQ也是可以支撐高吞吐的一種MQ10萬(wàn)級(jí)別冗茸,這是kafka最大的優(yōu)點(diǎn)席镀,就是吞吐量高匹中。一般配合大數(shù)據(jù)類(lèi)的系統(tǒng)來(lái)進(jìn)行實(shí)時(shí)數(shù)據(jù)計(jì)算、日志采集等場(chǎng)景

topic數(shù)量對(duì)吞吐量的影響??topic可以達(dá)到幾百豪诲,幾千個(gè)的級(jí)別顶捷,吞吐量會(huì)有較小幅度的下降這是RocketMQ的一大優(yōu)勢(shì),在同等機(jī)器下屎篱,可topic可以達(dá)到幾百服赎,幾千個(gè)的級(jí)別,吞吐量會(huì)有較小幅度的下降這是RocketMQ的一大優(yōu)勢(shì)交播,在同等機(jī)器下重虑,可

時(shí)效性ms級(jí)微秒級(jí),這是rabbitmq的一大特點(diǎn)堪侯,延遲是最低的ms級(jí)延遲在ms級(jí)以內(nèi)

可用性高嚎尤,基于主從架構(gòu)實(shí)現(xiàn)高可用性高,基于主從架構(gòu)實(shí)現(xiàn)高可用性非常高伍宦,分布式架構(gòu)非常高芽死,kafka是分布式的,一個(gè)數(shù)據(jù)多個(gè)副本次洼,少數(shù)機(jī)器宕機(jī)关贵,不會(huì)丟失數(shù)據(jù),不會(huì)導(dǎo)致不可用

消息可靠性有較低的概率丟失數(shù)據(jù)?經(jīng)過(guò)參數(shù)優(yōu)化配置卖毁,可以做到0丟失經(jīng)過(guò)參數(shù)優(yōu)化配置揖曾,消息可以做到0丟失

功能支持MQ領(lǐng)域的功能極其完備基于erlang開(kāi)發(fā),所以并發(fā)能力很強(qiáng)亥啦,性能極其好炭剪,延時(shí)很低MQ功能較為完善,還是分布式的翔脱,擴(kuò)展性好功能較為簡(jiǎn)單奴拦,主要支持簡(jiǎn)單的MQ功能,在大數(shù)據(jù)領(lǐng)域的實(shí)時(shí)計(jì)算以及日志采集被大規(guī)模使用届吁,是事實(shí)上的標(biāo)準(zhǔn)

優(yōu)劣勢(shì)總結(jié)非常成熟错妖,功能強(qiáng)大,在業(yè)內(nèi)大量的公司以及項(xiàng)目中都有應(yīng)用偶爾會(huì)有較低概率丟失消息而且現(xiàn)在社區(qū)以及國(guó)內(nèi)應(yīng)用都越來(lái)越少疚沐,官方社區(qū)現(xiàn)在對(duì)ActiveMQ 5.x維護(hù)越來(lái)越少暂氯,幾個(gè)月才發(fā)布一個(gè)版本而且確實(shí)主要是基于解耦和異步來(lái)用的,較少在大規(guī)模吞吐的場(chǎng)景中使用erlang語(yǔ)言開(kāi)發(fā)亮蛔,性能極其好痴施,延時(shí)很低;吞吐量到萬(wàn)級(jí),MQ功能比較完備而且開(kāi)源提供的管理界面非常棒晾剖,用起來(lái)很好用社區(qū)相對(duì)比較活的锉矢。RabbitMQ吞吐量會(huì)低一些,這是因?yàn)樗龅膶?shí)現(xiàn)機(jī)制比較重齿尽。erlang開(kāi)發(fā)很難去看懂源碼沽损,你公司對(duì)這個(gè)東西的掌控很弱,基本職能依賴于開(kāi)源社區(qū)的快速維護(hù)和修復(fù)bug循头。接口簡(jiǎn)單易用绵估,而且畢竟在阿里大規(guī)模應(yīng)用過(guò),可以做到大規(guī)模吞吐卡骂,性能也非常好国裳,分布式擴(kuò)展也很方便,社區(qū)維護(hù)還可以全跨,可靠性和可用性是ok的缝左,還可以支撐大規(guī)模的topic數(shù)量。阿里出品都是java系的浓若,我們可以自己閱讀源碼渺杉。kafka的特點(diǎn)其實(shí)很明顯,就是僅僅提供較少的核心功能挪钓,但是提供超高的吞吐量是越,ms級(jí)的延遲,極高的可用性以及可靠性碌上,而且分布式可以任意擴(kuò)展同時(shí)kafka最好是支撐較少的topic數(shù)量即可倚评,保證其超高吞吐量而且kafka唯一的一點(diǎn)劣勢(shì)是有可能消息重復(fù)消

5.0總結(jié)

所以在軟件的正常功能開(kāi)發(fā)中,并不需要去刻意的尋找消息隊(duì)列的使用場(chǎng)景馏予,而是當(dāng)出現(xiàn)性能瓶頸時(shí)天梧,去查看業(yè)務(wù)邏輯是否存在可以異步處理的耗時(shí)操作,如果存在的話便可以引入消息隊(duì)列來(lái)解決霞丧。否則盲目的使用消息隊(duì)列可能會(huì)增加維護(hù)和開(kāi)發(fā)的成本卻無(wú)法得到可觀的性能提升呢岗,那就得不償失了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蚯妇,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子暂筝,更是在濱河造成了極大的恐慌箩言,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,729評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件焕襟,死亡現(xiàn)場(chǎng)離奇詭異陨收,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)务漩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)拄衰,“玉大人,你說(shuō)我怎么就攤上這事饵骨∏滔ぃ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,461評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵居触,是天一觀的道長(zhǎng)妖混。 經(jīng)常有香客問(wèn)我,道長(zhǎng)轮洋,這世上最難降的妖魔是什么制市? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,135評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮弊予,結(jié)果婚禮上祥楣,老公的妹妹穿的比我還像新娘。我一直安慰自己汉柒,他們只是感情好误褪,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著竭翠,像睡著了一般振坚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上斋扰,一...
    開(kāi)封第一講書(shū)人閱讀 52,736評(píng)論 1 312
  • 那天渡八,我揣著相機(jī)與錄音,去河邊找鬼传货。 笑死屎鳍,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的问裕。 我是一名探鬼主播逮壁,決...
    沈念sama閱讀 41,179評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼粮宛!你這毒婦竟也來(lái)了窥淆?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,124評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤巍杈,失蹤者是張志新(化名)和其女友劉穎忧饭,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體筷畦,經(jīng)...
    沈念sama閱讀 46,657評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡词裤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評(píng)論 3 342
  • 正文 我和宋清朗相戀三年刺洒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吼砂。...
    茶點(diǎn)故事閱讀 40,872評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡逆航,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出渔肩,到底是詐尸還是另有隱情因俐,我是刑警寧澤,帶...
    沈念sama閱讀 36,533評(píng)論 5 351
  • 正文 年R本政府宣布赖瞒,位于F島的核電站女揭,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏栏饮。R本人自食惡果不足惜吧兔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望袍嬉。 院中可真熱鬧境蔼,春花似錦、人聲如沸伺通。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,700評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)罐监。三九已至吴藻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間弓柱,已是汗流浹背沟堡。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,819評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留矢空,地道東北人航罗。 一個(gè)月前我還...
    沈念sama閱讀 49,304評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像屁药,于是被迫代替她去往敵國(guó)和親粥血。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 背景介紹 Kafka簡(jiǎn)介 Kafka是一種分布式的酿箭,基于發(fā)布/訂閱的消息系統(tǒng)复亏。主要設(shè)計(jì)目標(biāo)如下: 以時(shí)間復(fù)雜度為O...
    高廣超閱讀 12,843評(píng)論 8 167
  • 以下是消息隊(duì)列以下的大綱,本文主要介紹消息隊(duì)列概述缭嫡,消息隊(duì)列應(yīng)用場(chǎng)景和消息中間件示例(電商缔御,日志系統(tǒng))。 本次分享...
    文檔隨手記閱讀 1,888評(píng)論 0 28
  • 轉(zhuǎn)自:http://www.cnblogs.com/linjiqin/p/5720865.html一械巡、消息隊(duì)列概述...
    striveSmile閱讀 834評(píng)論 0 49
  • iOS定位服務(wù)設(shè)計(jì)實(shí)例一則 當(dāng)前刹淌,越來(lái)越多的移動(dòng)應(yīng)用基于LBS(位置服務(wù))構(gòu)建業(yè)務(wù),LBS可以說(shuō)是移動(dòng)應(yīng)用浪潮的基...
    fever105閱讀 1,862評(píng)論 1 4
  • 今天讥耗,我一時(shí)興起有勾,想來(lái)談?wù)勔徊縿?dòng)漫,沒(méi)錯(cuò)古程,就是如標(biāo)題所言的海賊王蔼卡。還記得第一次接觸海賊王。應(yīng)該是在我初二的時(shí)候吧挣磨。...
    隨心了閱讀 224評(píng)論 5 1