成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

后端程序員必備技術(shù)棧,消息隊(duì)列的作用是什么

開(kāi)發(fā) 前端
消息隊(duì)列在后臺(tái)技術(shù)棧中,占有舉足輕重的作用,接下來(lái)的一段時(shí)間,我們會(huì)系統(tǒng)的講一講消息隊(duì)列。 今天我們主要來(lái)講一講消息隊(duì)列的作用。

 消息隊(duì)列在后臺(tái)技術(shù)棧中,占有舉足輕重的作用,接下來(lái)的一段時(shí)間,我們會(huì)系統(tǒng)的講一講消息隊(duì)列。 今天我們主要來(lái)講一講消息隊(duì)列的作用。

[[345196]]

流量削峰

消息隊(duì)列,其實(shí)并不是什么深?yuàn)W的東西,類(lèi)似這次我們的國(guó)慶出行,許多的景區(qū)都會(huì)出現(xiàn)人滿(mǎn)為患,到處都是人從眾的現(xiàn)象,這個(gè)時(shí)候,景區(qū)是怎么解決問(wèn)題的呢?通常就是排隊(duì)限流了,在檢票處設(shè)一個(gè)等待區(qū)域,如果景區(qū)里面的人太多,那么就在售票處設(shè)立一個(gè)等待區(qū),讓游客進(jìn)行排隊(duì), 等景區(qū)出來(lái)一些游客后,再放一批游客進(jìn)去。

現(xiàn)實(shí)的生產(chǎn)環(huán)境也是如此,在生產(chǎn)環(huán)境中,每個(gè)系統(tǒng)的容量是不一樣的,核心系統(tǒng)或者簡(jiǎn)單的系統(tǒng)吞吐量往往比較大,非核心系統(tǒng)與復(fù)雜系統(tǒng)往往吞吐量比較低。舉個(gè)例子,在電商系統(tǒng)中,我們經(jīng)常要對(duì)用戶(hù)行為進(jìn)行數(shù)據(jù)上報(bào),相對(duì)于用戶(hù)瀏覽、交易等行為,數(shù)據(jù)上報(bào)顯得并不那么重要,所以支撐數(shù)據(jù)上報(bào)的系統(tǒng)性能往往是不如核心功能的。

在一些流量的高峰,例如雙十一大促,我們一般不會(huì)對(duì)這種上報(bào)系統(tǒng)進(jìn)行擴(kuò)容,這個(gè)時(shí)候,同步的進(jìn)行數(shù)據(jù)上報(bào)容易引發(fā)雪崩,應(yīng)對(duì)這種情況,我們可以把用戶(hù)行為數(shù)據(jù)的寫(xiě)入放入異步隊(duì)列,可以根據(jù)數(shù)據(jù)的寫(xiě)入速度進(jìn)行消費(fèi),從而保證系統(tǒng)的魯棒性。

 

系統(tǒng)解耦

當(dāng)我們開(kāi)始開(kāi)發(fā)一個(gè)系統(tǒng)的時(shí)候,邏輯總是比較清晰跟簡(jiǎn)單,隨著需求的迭代,系統(tǒng)會(huì)變得越來(lái)越復(fù)雜,舉個(gè)簡(jiǎn)單的例子,原先我們進(jìn)行一次交易的時(shí)候,可能交易系統(tǒng)可能只是踐行簡(jiǎn)單的庫(kù)存扣減,然后寫(xiě)入訂單。隨著功能的迭代,我們需要通知廣告系統(tǒng)、第三方的賣(mài)家的話、需要通知商家系統(tǒng)等等,像阿里巴巴,每發(fā)生一次簡(jiǎn)單的交易行為之后,可能需要通知數(shù)十個(gè)不同的業(yè)務(wù)方進(jìn)行處理。

 

后端程序員必備技術(shù)棧,消息隊(duì)列的作用是什么

 

這些增加的邏輯,假如我們都做在交易系統(tǒng)的話,就會(huì)發(fā)現(xiàn)交易系統(tǒng)會(huì)變得越來(lái)越臃腫不堪,而且會(huì)難以保證數(shù)據(jù)的一致性。假如成單之后,通知廣告系統(tǒng)失敗了(例如網(wǎng)絡(luò)波動(dòng)),那么,這次交易行為是否還要進(jìn)行下去呢,通知廣告系統(tǒng)這種可能失敗了就算了,要是通知商家系統(tǒng)失敗了呢?數(shù)據(jù)不一致可能會(huì)給公司帶來(lái)投訴與資損,后期開(kāi)發(fā)要花大量的時(shí)間進(jìn)行數(shù)據(jù)修復(fù)。

消息隊(duì)列,是一種更簡(jiǎn)單又更可靠的方法。當(dāng)我們成功完成一次交易行為之后,我們生產(chǎn)一條消息,所有的業(yè)務(wù)方都來(lái)消費(fèi)這條消息,由業(yè)務(wù)方自己來(lái)保證成功消費(fèi)。這樣子,交易系統(tǒng)就不用關(guān)心交易行為的后續(xù)動(dòng)作,大大減少了交易系統(tǒng)的復(fù)雜性。

延遲與異步

這樣的場(chǎng)景在電商系統(tǒng)是非常常見(jiàn)的,用戶(hù)創(chuàng)建一次訂單之后,可能沒(méi)有支付,我們可以在創(chuàng)建訂單25分鐘之后去提醒用戶(hù),告訴他有筆訂單未支付,從而提高轉(zhuǎn)化率。假如讓你來(lái)實(shí)現(xiàn)這個(gè)功能,那么你要怎么做呢?

我們可以使用一個(gè)定時(shí)任務(wù),每分鐘都去掃描數(shù)據(jù)庫(kù),把未支付的訂單掃出來(lái),然后通知用戶(hù)進(jìn)行支付。這也是一個(gè)不錯(cuò)的方法,但是,一個(gè)可靠的定時(shí)任務(wù)的難點(diǎn)這里就不進(jìn)行贅述了,我們今天來(lái)介紹另外一個(gè)方法,那就是消息隊(duì)列。

一些消息隊(duì)列提供了延遲隊(duì)列功能,例如RabbitMQ,我們可以利用其延遲的特性,非常簡(jiǎn)單地實(shí)現(xiàn)這個(gè)功能。當(dāng)用戶(hù)下單的時(shí)候,我們發(fā)布一個(gè)延遲消息,等到消費(fèi)的時(shí)候,再去查詢(xún)訂單的狀態(tài),后面,我們會(huì)單獨(dú)講消息隊(duì)列延遲是如何保證可靠性的。

 

今天我們主要講了消息隊(duì)列的三個(gè)作用,接下來(lái)我們會(huì)介紹幾個(gè)常見(jiàn)的消息隊(duì)列以及他們的特點(diǎn),如果你有興趣,歡迎關(guān)注我,我們一起學(xué)習(xí),一起進(jìn)步。

責(zé)任編輯:華軒 來(lái)源: 今日頭條
相關(guān)推薦

2020-10-10 11:01:40

后端程序員技術(shù)

2019-06-23 17:37:58

Linux后端函數(shù)棧

2022-05-19 15:08:43

技術(shù)函數(shù)調(diào)用棧Linux

2022-02-18 11:06:12

首席技術(shù)官技術(shù)人工智能

2022-02-06 10:20:42

代碼重用程序員

2009-07-07 16:38:36

ServletCont

2013-03-29 13:15:32

程序員

2017-12-15 15:09:42

2020-02-06 08:58:09

程序員技術(shù)數(shù)據(jù)庫(kù)

2014-12-08 10:08:33

程序員

2014-12-08 09:44:01

程序員

2022-10-24 09:00:47

畫(huà)圖工具程序員XMind

2020-04-20 19:00:30

程序員分布式事務(wù)架構(gòu)

2010-04-23 16:56:26

OracleSQL調(diào)優(yōu)

2009-06-25 09:33:43

Java API程序員

2019-12-13 15:00:16

索引MySQL數(shù)據(jù)庫(kù)

2011-06-08 10:24:58

程序員

2015-12-04 08:49:00

程序員夢(mèng)魘

2021-09-08 17:36:58

程序員技能開(kāi)發(fā)者

2012-02-23 15:02:46

程序員
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 久久国产精品一区二区三区 | 国产高清久久 | 91福利在线导航 | 国产日韩欧美一区 | 国产一区 在线视频 | 精品成人在线观看 | 久久99深爱久久99精品 | 国内久久精品 | 国产在线播 | 国产一区二区三区免费视频 | 91麻豆精品一区二区三区 | 中文字幕亚洲无线 | 91在线精品一区二区 | 免费精品 | 99国产精品久久久久久久 | 亚洲a视| 欧美a区 | 中文字幕在线观看成人 | 国产美女在线看 | eeuss国产一区二区三区四区 | k8久久久一区二区三区 | 亚洲成人精品久久 | 久草福利| 一区精品国产欧美在线 | av天天干 | 成人精品一区二区三区中文字幕 | 欧美激情国产日韩精品一区18 | 成人伊人| 天天操人人干 | 国产一区二区三区四区 | 国产精品中文字幕在线观看 | 日韩第一区 | 四虎永久免费影院 | 久草在线| 欧美 日韩 国产 成人 在线 91 | 综合一区二区三区 | 午夜精品一区二区三区在线观看 | 欧美狠狠操| 日本精品一区 | 一级毛片在线播放 | 亚洲激情一区二区 |