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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

为什么使用消息中间件

發(fā)布時(shí)間:2023/12/29 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为什么使用消息中间件 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

為什么要使用消息中間件

如有一個(gè)電商交易的場(chǎng)景,用戶下單之后調(diào)用庫存系統(tǒng)減庫存,然后調(diào)用物流系統(tǒng)進(jìn)行發(fā)貨,如果剛開始交易,庫存,物流都是屬于一個(gè)系統(tǒng),那么他們之間就是接口調(diào)用。但是隨著系統(tǒng)的發(fā)展,各個(gè)模塊業(yè)務(wù)越來越龐大、業(yè)務(wù)邏輯越來越復(fù)雜,這個(gè)時(shí)候就必然要做服務(wù)化和業(yè)務(wù)拆分。這個(gè)時(shí)候就需要考慮這些系統(tǒng)之間是如何交互的。首先想到的就是RPC(Remote Procedure Call),但是隨著系統(tǒng)的發(fā)展,可能一筆交易后序需要調(diào)用幾十個(gè)接口位于不同系統(tǒng)的接口,比如短信服務(wù)、郵件服務(wù)等等,這個(gè)時(shí)候就需要消息中間件來解決問題了。

消息中間件最突出的特點(diǎn)就是提供數(shù)據(jù)傳輸?shù)目煽啃院透咝?#xff0c;主要解決分布式的系統(tǒng)數(shù)據(jù)傳輸需求

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

消息中間件主要解決分布式系統(tǒng)數(shù)據(jù)傳輸?shù)男枨?#xff0c;同時(shí)提供數(shù)據(jù)傳輸?shù)目煽啃院透咝浴?/p>

低耦合

低耦合:消息中間件在處理過程中插入了一個(gè)接口層,兩邊的處理過程都實(shí)現(xiàn)這接口,這允許你獨(dú)立的擴(kuò)展或是修改兩邊的處理過程,只要確保他們遵守同樣的接口約束。

應(yīng)用場(chǎng)景

用戶下單后,訂單系統(tǒng)需要通知庫存系統(tǒng)。通常的做法是訂單系統(tǒng)調(diào)用庫存系統(tǒng)的接口。

缺點(diǎn):1.加入庫存系統(tǒng)無法訪問,則訂單減庫存將失敗,從而導(dǎo)致訂單失敗。

2.庫存系統(tǒng)更改了減庫存的接口(例如修改了入?yún)?#xff09;,訂單系統(tǒng)需要進(jìn)行相應(yīng)的改變,訂單系統(tǒng)會(huì)被影響。

引入消息隊(duì)列之后:

訂單系統(tǒng),用戶下單之后,訂單系統(tǒng)完成持久化處理,并將消息寫入消息隊(duì)列,返回用戶訂單下單成功。

庫存系統(tǒng):訂閱下單的消息,獲取下單信息,進(jìn)行庫存操作。

如果在下單時(shí)庫存系統(tǒng)不能正常使用。也不影響下單,因?yàn)橄聠沃笥唵蜗到y(tǒng)寫入消息隊(duì)列之后不用關(guān)系其他操作,庫存系統(tǒng)系統(tǒng)恢復(fù)之后,獲取消息隊(duì)列中的消息,進(jìn)行減庫存的操作。并且單獨(dú)修改庫存系統(tǒng)并不會(huì)影響到訂單系統(tǒng)。

?異步通信

異步通信:在很多時(shí)候應(yīng)用不想也不需要立即處理消息。消息中間件提供了異步處理機(jī)制,允許應(yīng)用把一些消息放入消息中間中,但并不立即處理它,之后需要的時(shí)候再慢慢處理。

應(yīng)用場(chǎng)景

用戶注冊(cè)以后,需要發(fā)送注冊(cè)郵件和注冊(cè)短信,傳統(tǒng)的方式有兩種串行處理和并行處理。

串行處理:進(jìn)注冊(cè)信息寫入數(shù)據(jù)庫成功之后,發(fā)送注冊(cè)短信再發(fā)送注冊(cè)短信,三個(gè)任務(wù)完成之后返回客戶端。假設(shè)每個(gè)業(yè)務(wù)節(jié)點(diǎn)使用50毫秒,不考慮網(wǎng)絡(luò)等其他開銷,總共花費(fèi)150ms時(shí)間

并行處理:將注冊(cè)信息寫入數(shù)據(jù)庫成功之后,發(fā)送注冊(cè)短信的同時(shí)發(fā)送注冊(cè)郵件,三個(gè)任務(wù)完成之后返回給客戶端。假設(shè)每個(gè)業(yè)務(wù)節(jié)點(diǎn)使用50ms,不考慮網(wǎng)絡(luò)等開銷,并行的時(shí)間為100ms。

雖然并行處理可以提高效率,但是由于發(fā)送短信和發(fā)送郵件對(duì)于我們正常使用應(yīng)用來說是沒有影響的,所以客戶端不需要當(dāng)它發(fā)送短信和郵件完成之后才提示用戶注冊(cè)成功,當(dāng)成功寫入數(shù)據(jù)庫時(shí),就可以返回了。

?引入消息隊(duì)列之后:將不是必須的業(yè)務(wù)邏輯(發(fā)送注冊(cè)短信和注冊(cè)郵件),進(jìn)行異步處理。用戶的響應(yīng)時(shí)間=寫入數(shù)據(jù)庫時(shí)間+寫入消息隊(duì)列時(shí)間(可以忽略不計(jì))

?緩沖能力和流量削峰

緩沖能力和流量削峰:消息中間件通過一個(gè)緩沖層來幫助任務(wù)最高效率地執(zhí)行,寫入消息中間件的處理會(huì)盡可能快速。該緩沖層有助于控制和優(yōu)化數(shù)據(jù)流過系統(tǒng)的速度。使用消息中間件能夠使關(guān)鍵組件支撐突發(fā)訪問壓力,不會(huì)因?yàn)橥话l(fā)的超負(fù)荷請(qǐng)求而完全崩潰。

應(yīng)用場(chǎng)景:

流量削峰一般在秒殺活動(dòng)或團(tuán)搶購(gòu)活動(dòng)中使用廣泛,在秒殺活動(dòng)中,一般會(huì)因?yàn)榱髁勘┰?#xff0c;導(dǎo)致應(yīng)用掛掉。為了解決這個(gè)問題一般在應(yīng)用前端加入消息隊(duì)列,可以控制活動(dòng)的人數(shù),可以緩解短時(shí)間內(nèi)高流量。

傳統(tǒng)模式:在下單的時(shí)候就往數(shù)據(jù)庫中寫入數(shù)據(jù),但是如果并發(fā)量過高,可能就會(huì)宕機(jī)。

引入消息隊(duì)列之后

消息被寫入消息隊(duì)列之后,系統(tǒng)可以根據(jù)自己的消費(fèi)能力來消費(fèi),比如每秒2000個(gè)數(shù)據(jù)寫入數(shù)據(jù)庫。

如果加入消息隊(duì)列長(zhǎng)度超過最大數(shù)量,則可以直接拋棄用戶請(qǐng)求或挑戰(zhàn)到錯(cuò)誤頁面。

參考博文:消息中間件概述https://zengyihong.blog.csdn.net/article/details/127019856什么是消息中間件https://blog.csdn.net/weixin_43561060/article/details/118195543

總結(jié)

以上是生活随笔為你收集整理的为什么使用消息中间件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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