日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

消息队列的使用场景_消息队列MQ的特点、选型及应用场景

發(fā)布時(shí)間:2025/3/19 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 消息队列的使用场景_消息队列MQ的特点、选型及应用场景 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、什么是消息隊(duì)列

消息隊(duì)列(Message Queue,簡稱MQ),指保存消息的一個(gè)容器,本質(zhì)是個(gè)隊(duì)列。

消息(Message)是指在應(yīng)用之間傳送的數(shù)據(jù),消息可以非常簡單,比如只包含文本字符串,也可以更復(fù)雜,可能包含嵌入對象。

消息隊(duì)列(Message Queue)是一種應(yīng)用間的通信方式,消息發(fā)送后可以立即返回,有消息系統(tǒng)來確保信息的可靠專遞,消息發(fā)布者只管把消息發(fā)布到MQ中而不管誰來取,消息使用者只管從MQ中取消息而不管誰發(fā)布的,這樣發(fā)布者和使用者都不用知道對方的存在。

  • Producer:消息生產(chǎn)者,負(fù)責(zé)產(chǎn)生和發(fā)送消息到 Broker;
  • Broker:消息處理中心。負(fù)責(zé)消息存儲、確認(rèn)、重試等,一般其中會包含多個(gè) queue;
  • Consumer:消息消費(fèi)者,負(fù)責(zé)從 Broker 中獲取消息,并進(jìn)行相應(yīng)處理;

現(xiàn)在常用的MQ組件有ActiveMQ、RabbitMQ、RocketMQ、ZeroMQ,當(dāng)然近年來火熱的Kafka,從某些場景來說,也是MQ,當(dāng)然kafka的功能更加強(qiáng)大。

雖然不同的MQ都有自己的特點(diǎn)和優(yōu)勢,但是,不管是哪種MQ,都有MQ本身自帶的一些特點(diǎn),下面,咱們談?wù)勏㈥?duì)列的的特點(diǎn)、優(yōu)勢、選型、以及應(yīng)用場景。

二、為什么需要消息隊(duì)列

在高并發(fā)分布式環(huán)境下,由于來不及同步處理,通過使用消息隊(duì)列,可以異步處理請求,從而緩解系統(tǒng)的壓力。

舉一個(gè)訂單系統(tǒng)的例子:用戶點(diǎn)擊下訂單,會觸發(fā)以下業(yè)務(wù)邏輯流程:

  • 扣減庫存
  • 生成相應(yīng)的訂單
  • 發(fā)短信通知等等

在業(yè)務(wù)發(fā)展初期這些邏輯可能放在一起同步執(zhí)行,隨著業(yè)務(wù)訂單量增長,需要提升系統(tǒng)服務(wù)的性能,這時(shí)候可以將一些不需要立即生效的操作拆分出來異步執(zhí)行,比如發(fā)短信通知等,這種場景就可以使用消息隊(duì)列MQ。

本質(zhì)還是通過異步來解決同步的系統(tǒng)壓力,所以我們在做架構(gòu)設(shè)計(jì)的時(shí)候有一個(gè)原則:能異步的就盡量不要同步。

三、消息隊(duì)列的優(yōu)點(diǎn)

1、屏蔽異構(gòu)平臺的細(xì)節(jié):發(fā)送方、接收方系統(tǒng)之間不需要了解雙方,只需認(rèn)識消息。

2、異步:消息堆積能力;發(fā)送方接收方不需同時(shí)在線,發(fā)送方接收方不需同時(shí)擴(kuò)容(削峰)。

3、解耦:防止引入過多的API給系統(tǒng)的穩(wěn)定性帶來風(fēng)險(xiǎn);調(diào)用方使用不當(dāng)會給被調(diào)用方系統(tǒng)造成壓力,被調(diào)用方處理不當(dāng)會降低調(diào)用方系統(tǒng)的響應(yīng)能力。

4、復(fù)用:一次發(fā)送多次消費(fèi)。

5、可靠:一次保證消息的傳遞。如果發(fā)送消息時(shí)接收者不可用,消息隊(duì)列會保留消息,直到成功地傳遞它。

6、提供路由:發(fā)送者無需與接收者建立連接,雙方通過消息隊(duì)列保證消息能夠從發(fā)送者路由到接收者,甚至對于本來網(wǎng)絡(luò)不易互通的兩個(gè)服務(wù),也可以提供消息路由。

四、消息隊(duì)列的特點(diǎn)

1.異步性

將耗時(shí)的同步操作,通過以發(fā)送消息的方式,進(jìn)行了異步化處理。減少了同步等待的時(shí)間。

2.松耦合

消息隊(duì)列減少了服務(wù)之間的耦合性,不同的服務(wù)可以通過消息隊(duì)列進(jìn)行通信,而不用關(guān)心彼此的實(shí)現(xiàn)細(xì)節(jié),只要定義好消息的格式就行。

3.分布式

通過對消費(fèi)者的橫向擴(kuò)展,降低了消息隊(duì)列阻塞的風(fēng)險(xiǎn),以及單個(gè)消費(fèi)者產(chǎn)生單點(diǎn)故障的可能性(當(dāng)然消息隊(duì)列本身也可以做成分布式集群)。

4.可靠性

消息隊(duì)列一般會把接收到的消息存儲到本地硬盤上(當(dāng)消息被處理完之后,存儲信息根據(jù)不同的消息隊(duì)列實(shí)現(xiàn),有可能將其刪除),這樣即使應(yīng)用掛掉或者消息隊(duì)列本身掛掉,消息也能夠重新加載。

五、消息隊(duì)列的選型

1.ActiveMQ

Apache出品,最早使用的消息隊(duì)列產(chǎn)品,時(shí)間比較長了,最近版本更新比較緩慢。

2.RabbitMQ

RabbitMQ是erlang語言開發(fā),結(jié)合erlang語言本身的并發(fā)優(yōu)勢,支持很多的協(xié)議:AMQP,XMPP, SMTP, STOMP,也正是如此,使的它變的非常重量級,更適合于企業(yè)級的開發(fā)。性能較好,但是不利于做二次開發(fā)和維護(hù)。

3.RocketMQ

阿里開源的消息中間件,純Java開發(fā),具有高吞吐量、高可用性、適合大規(guī)模分布式系統(tǒng)應(yīng)用的特點(diǎn)。

4.ZeroMQ

號稱最快的消息隊(duì)列系統(tǒng),尤其針對大吞吐量的需求場景。

擴(kuò)展性好,開發(fā)比較靈活,采用C語言實(shí)現(xiàn),實(shí)際上只是一個(gè)socket庫的重新封裝,如果做為消息隊(duì)列使用,需要開發(fā)大量的代碼。

5.Kafka

Kafka是Apache下的一個(gè)子項(xiàng)目,是一個(gè)高性能跨語言分布式發(fā)布/訂閱消息隊(duì)列系統(tǒng),而Jafka是在Kafka之上孵化而來的,即Kafka的一個(gè)升級版。

6.消息隊(duì)列的詳細(xì)比較

7.消息隊(duì)列總結(jié)

消息隊(duì)列的選型需要根據(jù)具體應(yīng)用需求而定,ZeroMQ小而美,RabbitMQ大而穩(wěn),Kakfa和RocketMQ快而強(qiáng)勁。

四、消息隊(duì)列的應(yīng)用場景

1.異步處理

消息隊(duì)列的主要特點(diǎn)是異步處理,主要目的是減少請求響應(yīng)時(shí)間,實(shí)現(xiàn)非核心流程異步化,提高系統(tǒng)響應(yīng)性能。

所以典型的使用場景就是將比較耗時(shí)而且不需要即時(shí)(同步)返回結(jié)果的操作,作為消息放入消息隊(duì)列。

2.應(yīng)用解耦


使用了消息隊(duì)列后,只要保證消息格式不變,消息的發(fā)送方和接收方并不需要彼此聯(lián)系,也不需要受對方的影響,即解耦。

每個(gè)成員不必受其他成員影響,可以更獨(dú)立自主,只通過消息隊(duì)列MQ來聯(lián)系。

舉一個(gè)例子:用戶下訂單流程,下訂單后會發(fā)生扣庫存這個(gè)動作,上游系統(tǒng)訂單和下游系統(tǒng)扣庫存,就可以通過上圖的消息隊(duì)列MQ來聯(lián)系,扣庫存異步化,從而實(shí)現(xiàn)訂單系統(tǒng)與庫存系統(tǒng)的應(yīng)用解耦。

3.流量削鋒

流量削鋒也是消息隊(duì)列中的常用場景,一般在秒殺或團(tuán)搶活動中使用廣泛。

應(yīng)用場景:秒殺活動,一般會因?yàn)榱髁窟^大,導(dǎo)致流量暴增,應(yīng)用掛掉。為解決這個(gè)問題,一般需要在應(yīng)用前端加入消息隊(duì)列。

4.日志處理

日志處理是指將消息隊(duì)列用在日志處理中,比如Kafka的應(yīng)用,解決大量日志傳輸?shù)膯栴}。

5.消息通訊

消息隊(duì)列一般都內(nèi)置了高效的通信機(jī)制,因此也可以用于單純的消息通訊,比如實(shí)現(xiàn)點(diǎn)對點(diǎn)消息隊(duì)列或者聊天室等。

以上,是分布式之消息隊(duì)列的詳解。

如果覺得不錯,請點(diǎn)贊支持下。關(guān)注優(yōu)知學(xué)院專欄【直通BAT】進(jìn)階Java架構(gòu)師,實(shí)戰(zhàn)架構(gòu)技術(shù)干貨第一時(shí)間送達(dá)。

----end----

優(yōu)知學(xué)院往期分享的【消息隊(duì)列系列文章】精選干貨,包括MQ的設(shè)計(jì)思路、核心原理、如何選型、場景應(yīng)用等,成體系的知識分享,讓你深度掌握MQ。

如何從0到1設(shè)計(jì)一個(gè)MQ消息隊(duì)列

MQ消息隊(duì)列的12點(diǎn)核心原理總結(jié)

RPC遠(yuǎn)程調(diào)用和消息隊(duì)列MQ的區(qū)別

Kafka、RocketMQ、RabbitMQ的優(yōu)劣勢比較

主流消息隊(duì)列MQ比較,MQ的4類應(yīng)用場景

總結(jié)

以上是生活随笔為你收集整理的消息队列的使用场景_消息队列MQ的特点、选型及应用场景的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: www.国产视频 | 贝利弗山的秘密在线观看 | 亚洲欧美激情精品一区二区 | 视色视频| 春色激情| 日本成人高清 | 久久综合免费视频 | 免费在线观看毛片视频 | 波多野结衣中文字幕在线 | 黑料网在线观看 | 国产一区二区免费在线 | 日韩午夜在线视频 | 日本黄色片免费 | 黄色网免费 | 亚洲激情欧美色图 | 国产www免费 | 毛片123| 精品视频久久 | 国产一级美女 | 国产第一页第二页 | 国产剧情av麻豆香蕉精品 | 伊人网中文字幕 | 亚洲a毛片 | 欧美激情爱爱 | 国产成人a人亚洲精品无码 在线aa | 欧美精品在线一区二区三区 | 妺妺窝人体色www聚色窝仙踪 | 动漫av一区 | 少妇做爰免费理伦电影 | 少妇精品一区 | 久久精品丝袜 | 巨乳美女在线 | 99热这里只有精品5 国产精品伦子伦免费视频 精品一二三 | 香蕉视频在线视频 | 日韩中文字幕在线观看视频 | 久久人人艹 | 精品91在线 | 91偷拍网| 欧美视频一区在线 | 国产精品久久久久久久久久小说 | 精品人妻二区中文字幕 | 亚洲精品66 | 亚洲 小说 欧美 激情 另类 | 美女网站免费黄 | 在线观看中文字幕av | 永久免费黄色 | 日本熟妇一区二区 | 色悠悠av | 欧美粗暴jizz性欧美20 | 污漫在线观看 | 日本美女交配 | 瑟瑟在线视频 | 无码人妻精品一区二 | 国产综合在线观看 | 不卡三区| 永久在线观看 | 99国产精品久久 | 欧美激情久久久久久 | 国产91色 | 成人免费a视频 | 欧美成人精品一区二区三区 | 成人调教视频 | 五月深爱| 国产午夜福利一区二区 | 国产黄色在线 | 九色蝌蚪porny | 国产永久在线观看 | xxxxx黄色片| 秋霞成人午夜伦在线观看 | 在线观看黄色免费视频 | 国产精品久久久久久精 | 日韩福利在线 | 国产成人精品免费在线观看 | xxx一区 | 欧美综合视频在线观看 | 午夜天堂在线观看 | a√在线 | 国产亚洲精品aaaaaaa片 | 黄色一级片黄色一级片 | 日韩三级视频在线播放 | 国产一区二区三区四区hd | 欧美成人一区在线观看 | 日韩在线视频中文字幕 | 一起草国产 | 99热国产在线观看 | 91精品国产色综合久久不卡98口 | 一级黄色大片视频 | chinese hd av | 国产精品一区二区在线观看 | 88xx成人永久免费观看 | 三大队在线观看 | 一区在线观看视频 | 欧美一级一级一级 | 欧美色图13p | 2019国产在线 | 在线黄网站 | 亚洲一区 在线播放 | 中国无码人妻丰满熟妇啪啪软件 | 亚洲骚|