
文章插圖
1.什么是消息中間件
MQ全稱為Message Queue,消息隊列是應(yīng)用程序和應(yīng)用程序之間的通信方法 。
為什么使用MQ?2.應(yīng)用場景2.1 任務(wù)異步處理
在項目中,可將一些無需即時返回且耗時的操作提取出來,進行異步處理,而這種異步處理的方式大大的節(jié)省了服務(wù)器的請求響應(yīng)時間,從而提高了系統(tǒng)的吞吐量
將不需要同步處理的并且耗時長的操作由消息隊列通知消息接收方進行異步處理 。提高了應(yīng)用程序的響應(yīng)時間 。2.2 應(yīng)用程序解耦合
MQ相當于一個中介,通過它讓生產(chǎn)者與消費者交互,將應(yīng)用程序進行解耦合 。2.3 削峰填谷如某個系統(tǒng)會往數(shù)據(jù)庫寫數(shù)據(jù),但是數(shù)據(jù)庫只能支撐每秒1000左右的并發(fā)寫入,并發(fā)量再高就容易宕機 。
在系統(tǒng)低峰期的時候并發(fā)也就100多個,但在高峰期時候,并發(fā)量會突然激增到5000以上,這個時候數(shù)據(jù)庫肯定會卡死 。
這時候,可以使用MQ,消息會被MQ保存起來,然后系統(tǒng)就可以按照自己的消費能力來消費,比如每秒1000個數(shù)據(jù),慢慢寫入數(shù)據(jù)庫,就不會卡死數(shù)據(jù)庫了 。
但使用了MQ之后,限制消費消息的速度為1000,但是這樣一來,高峰期產(chǎn)生的數(shù)據(jù)勢必會被積壓在MQ中,高峰就被“削”掉了 。
但是因為消息積壓,在高峰期過后的一段時間內(nèi),消費消息的速度還是會維持在1000QPS,直到消費完積壓的消息,這就叫做**“填谷”**
3. AMQP 和 JMS
MQ是消息通信的模型;實現(xiàn)MQ的大致有兩種主流方式:AMQP、JMS 。3.1 AMQPAMQP 是一種協(xié)議,更準確地說是一種 binary wire-level protocol(鏈接協(xié)議) 。與 JMS 的本質(zhì)差別 : AMQP不從API層進行限定,而是直接定義網(wǎng)絡(luò)交換的數(shù)據(jù)格式 。
3.2 JMSJMS 即Java消息服務(wù)(JavaMessage Service)應(yīng)用程序接口,是一個Java平臺中關(guān)于面向消息中間件(MOM)的API,用于在兩個應(yīng)用程序之間,或分布式系統(tǒng)中發(fā)送消息,進行異步通信 。
3.3 AMQP 與 JMS 區(qū)別
- JMS 是定義了統(tǒng)一的接口,來對消息操作進行統(tǒng)一; AMQP是通過規(guī)定協(xié)議來統(tǒng)一數(shù)據(jù)交互的格式
- JMS 限定了必須使用Java語言; AMQP只是協(xié)議,不規(guī)定實現(xiàn)方式,因此是跨語言的 。
- JMS 規(guī)定了兩種消息模式; AMQP的消息模式更加豐富
- ActiveMQ:基于 JMS
- ZeroMQ:基于 C 語言開發(fā)
- RabbitMQ:基于 AMQP 協(xié)議,erlang 語言開發(fā),穩(wěn)定性好
- RocketMQ:基于 JMS,阿里巴巴產(chǎn)品
- Kafka:類似MQ的產(chǎn)品;分布式消息系統(tǒng),高吞吐量
RabbitMQ是由erlang語言開發(fā),基于AMQP(Advanced Message Queue 高級消息隊列協(xié)議)協(xié)議實現(xiàn)的消息隊列,它是一種應(yīng)用程序之間的通信方法,消息隊列在分布式系統(tǒng)開發(fā)中應(yīng)用非常廣泛 。
RabbitMQ官方地址:http://www.rabbitmq.com/
RabbitMQ提供了6種模式:
簡單模式
work模式
Publish/Subscribe 發(fā)布與訂閱模式
Routing 路由模式
Topics 主題模式
RPC 遠程調(diào)用模式;
官網(wǎng)對應(yīng)模式介紹:https://www.rabbitmq.com/getstarted.html
來源:
https://www.cnblogs.com/MoYu-zc/p/15144660.html
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助:- 大學考研哪幾科
- 夢見鋪路
- 文學考研專業(yè)課題型
- java下載安裝教程 java下載網(wǎng)址官網(wǎng)
- wap開發(fā)詳細解釋 wap開發(fā)是什么
- 2021Java學習路線 java開發(fā)學習路線
- 生活中的無線網(wǎng)絡(luò)實例 認知無線網(wǎng)絡(luò)的優(yōu)點
- java源代碼運行操作方法 java源代碼怎么運行
- 高中學校黨建述職評議考核制度
- 等師范學校畢業(yè)及其以上學歷
