自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

程序員經(jīng)典面試題,消息隊(duì)列的作用,你能說(shuō)出幾個(gè)?

新聞
今年疫情嚴(yán)峻,希望早日控制住,有不少的朋友都打算年后找份新的工作,正好趁著這個(gè)時(shí)候好好學(xué)習(xí),提升下自己。今天我們來(lái)聊一聊消息隊(duì)列的作用。消息隊(duì)列,相信大家都不陌生,Kafka、RMQ都是大家常用的隊(duì)列,也是程序員面試中的一個(gè)常見(jiàn)的題目。

 今年疫情嚴(yán)峻,希望早日控制住,有不少的朋友都打算年后找份新的工作,正好趁著這個(gè)時(shí)候好好學(xué)習(xí),提升下自己。今天我們來(lái)聊一聊消息隊(duì)列的作用。消息隊(duì)列,相信大家都不陌生,Kafka、RMQ都是大家常用的隊(duì)列,也是程序員面試中的一個(gè)常見(jiàn)的題目。

 

 

 

 

 

[[314087]]

 

進(jìn)行削峰,減少并發(fā)

數(shù)據(jù)在后臺(tái)各個(gè)系統(tǒng)中流轉(zhuǎn)就跟流水線上的工人一樣,如果前面的工人干得非??欤敲垂ぷ骶蜁?huì)不停地堆積,很多零件就堆積著等著下面的工人解決。如果請(qǐng)求一直堆積著得不到處理,用戶就只能夠一直等待,會(huì)有不好的體驗(yàn),同時(shí),因?yàn)槿蝿?wù)堆積,總是需要占用內(nèi)存、連接數(shù)等資源,就容易引發(fā)服務(wù)雪崩。所以,對(duì)一些實(shí)時(shí)性要求不高的請(qǐng)求,我們通??梢圆捎卯惒竭M(jìn)行削峰。一個(gè)常見(jiàn)的例子,在電商系統(tǒng)中,當(dāng)用戶下單并完成支付的時(shí)候,我們通常會(huì)去通知商家的后臺(tái),告訴他們可以發(fā)貨了。但是不同的商家的技術(shù)良莠不齊,有些速度真是跟蝸牛一樣,這個(gè)時(shí)候我們這可以采用異步的方式,使用消息隊(duì)列,慢慢地進(jìn)行通知。

 

系統(tǒng)解耦

當(dāng)我們開(kāi)始開(kāi)發(fā)一個(gè)系統(tǒng)的時(shí)候,邏輯總是比較清晰跟簡(jiǎn)單,隨著需求的迭代,我們會(huì)發(fā)現(xiàn)系統(tǒng)越來(lái)越復(fù)雜,如果開(kāi)發(fā)的程序員能力不足的話,我們會(huì)發(fā)現(xiàn)系統(tǒng)會(huì)越來(lái)越混亂,最后甚至出現(xiàn)一個(gè)方法幾千行代碼的情況,那么對(duì)于一個(gè)越來(lái)越復(fù)雜地系統(tǒng),我們?cè)趺催M(jìn)行系統(tǒng)的解耦呢?

 

程序員經(jīng)典面試題,消息隊(duì)列的作用,你能說(shuō)出幾個(gè)?

 

在一個(gè)電商系統(tǒng)中,當(dāng)我們完成一次交易的時(shí)候,遠(yuǎn)遠(yuǎn)沒(méi)有想象中那么地簡(jiǎn)單,我們通常需要通知倉(cāng)庫(kù)或者通知商家,讓他們接受訂單,盡快發(fā)貨。同時(shí),我們可能要通知積分系統(tǒng),給用戶下發(fā)一定的交易積分??赡苓@個(gè)用戶是通過(guò)分銷(xiāo)過(guò)來(lái)購(gòu)買(mǎi)的,需要通知分銷(xiāo)系統(tǒng),創(chuàng)建分銷(xiāo)訂單,以便后面的結(jié)算。一次簡(jiǎn)單的交易過(guò)后,我們可能要同時(shí)數(shù)十個(gè)系統(tǒng),像阿里巴巴的天貓?zhí)詫?,可能完成一次交易,甚至要通?00個(gè)系統(tǒng)。如果我們?cè)谖覀兊慕灰琢鞒汤锩?,逐個(gè)系統(tǒng)逐漸通知,那么必然會(huì)帶來(lái)系統(tǒng)緩慢的問(wèn)題,所以我們可以使用消息隊(duì)列,每次交易成功后發(fā)布一條消息,讓其他系統(tǒng)去訂閱這條消息。就可以做到系統(tǒng)的解耦了。

延遲處理

在程序設(shè)計(jì)中,延遲任務(wù)也是常有的事情。例如用戶創(chuàng)建一次訂單之后,可能沒(méi)有支付。我們可以在創(chuàng)建訂單25分鐘之后去提醒用戶,告訴他有筆訂單未支付,萬(wàn)一用戶支付了。豈不是美滋滋。一些消息隊(duì)列提供了延遲隊(duì)列功能,例如RabbitMQ,我們可以利用其延遲的特性,非常簡(jiǎn)單地實(shí)現(xiàn)這個(gè)功能。當(dāng)然,我們也可以使用其他方法,例如每一分鐘掃描一次數(shù)據(jù)庫(kù)等等。歡迎大家關(guān)注我,共同學(xué)習(xí),共同進(jìn)步。大家的支持是我繼續(xù)嘮嗑的動(dòng)力。

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

2020-02-07 10:14:07

程序員設(shè)計(jì)人生第一份工作

2012-05-25 10:15:06

Java程序員面試題

2020-04-08 10:18:56

MySQL數(shù)據(jù)庫(kù)SQL

2020-04-26 09:48:11

MySQL數(shù)據(jù)庫(kù)架構(gòu)

2020-03-02 17:00:24

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

2020-05-06 15:02:58

MySQL數(shù)據(jù)庫(kù)技術(shù)

2020-04-12 22:29:50

程序員MySQL數(shù)據(jù)

2020-03-18 09:33:47

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

2019-09-20 14:25:21

程序員Google人生第一份工作

2019-10-18 09:40:19

程序員固態(tài)硬盤(pán)Linux

2020-10-09 14:44:57

程序員開(kāi)發(fā)技術(shù)

2023-09-13 08:00:57

云原生Java開(kāi)發(fā)者

2015-05-27 09:45:59

程序員

2014-07-28 14:00:40

linux面試題

2010-04-15 11:54:55

面試

2021-03-04 09:35:54

thisJavaScript開(kāi)發(fā)

2022-08-30 08:13:30

流程模板定期復(fù)盤(pán)數(shù)據(jù)

2018-12-03 09:42:32

Java程序員阿里面試

2011-03-29 14:31:41

CC++

2009-08-02 10:21:39

ASP.NET程序員面ASP.NET
點(diǎn)贊
收藏

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