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

程序員經(jīng)典面試題,消息隊列怎么用,才能保證萬無一失

開發(fā) 前端
據(jù)不完全統(tǒng)計,工業(yè)級別的代碼,幾乎有三分之二都是在處理異常情況。跟很多面試官聊過,在面試中如何考察一個應(yīng)試者的思維是否周全,比較好的方法就是考察他是否能夠思考周全,想到所有異常情況的處理方案。

 據(jù)不完全統(tǒng)計,工業(yè)級別的代碼,幾乎有三分之二都是在處理異常情況。跟很多面試官聊過,在面試中如何考察一個應(yīng)試者的思維是否周全,比較好的方法就是考察他是否能夠思考周全,想到所有異常情況的處理方案。相信大家都使用過消息MQ,他可以很好地進(jìn)行系統(tǒng)解耦,減低變成的復(fù)雜度,又可以進(jìn)行削峰,增加系統(tǒng)在高并發(fā)的穩(wěn)定性,那么使用MQ有哪些注意事項呢?是不是MQ就是萬無一失呢?一條MQ消息從產(chǎn)生到消費,有沒有可能失敗?在哪些環(huán)節(jié)可能失敗,如何處理?

[[314190]]

消息生產(chǎn)失敗

一般來說,從生產(chǎn)者到MQ中間件是通過網(wǎng)絡(luò)調(diào)用的,是網(wǎng)絡(luò)調(diào)用就有可能存在失敗。下面這些原因,都有可能造成MQ生產(chǎn)失敗,例如網(wǎng)絡(luò)波動,盡管生產(chǎn)者到MQ服務(wù)器之間是內(nèi)網(wǎng)調(diào)用,并不意味著網(wǎng)絡(luò)調(diào)用的成功率就是百分之百,內(nèi)網(wǎng)調(diào)用也會遇到網(wǎng)絡(luò)波動,造成調(diào)用超時或者失敗。又如調(diào)用的MQ機(jī)器瞬間Crash掉,這也是有可能造成調(diào)用失敗的。面對生產(chǎn)者調(diào)用MQ的失敗,我們是容易比較容易處理的,我們只要簡單地進(jìn)行重試即可,如果重試2-3次失敗,那么非常有可能是出現(xiàn)大問題,這個時候再重試意義不大,需要進(jìn)行告警,讓開發(fā)運維介入,進(jìn)行處理。

MQ處理存儲失敗

消息到達(dá)消息中間件之后,通常是會被存儲起來的,只有被寫入到磁盤中,消息才是真正地被存儲,不會丟失。但是,大部分MQ中間件并不是收到消息就立馬寫入磁盤的,只是由于磁盤的寫入速度相對于內(nèi)存,現(xiàn)得慢得多得多,所以,像Kafka這樣的消息系統(tǒng),是會把消息寫到緩沖區(qū)中,異步寫入磁盤,如果機(jī)器在中途突然斷電,是有可能會丟失消息的。為了解決這個問題,大部分的MQ都是采用分布式部署,消息會在多臺機(jī)器上寫入緩存中成功才會返回給業(yè)務(wù)方成功,由于多臺機(jī)器同時斷電的可能性較低,我們可以認(rèn)為這是比較低成本又可靠的方案。

消費者處理失敗

程序員經(jīng)典面試題,消息隊列怎么用,才能保證萬無一失

一般的MQ都有MQ重試機(jī)制,如果處理失敗,就會嘗試重復(fù)消費這個MQ。這個帶來的問題就是,MQ可能已經(jīng)成功消費了,但是在通知MQ中間件的時候失敗了,這個時候帶來的結(jié)果就是消息重復(fù)消費。同理,在生產(chǎn)者重試的時候,也會遇到消息重復(fù)消費的問題。這個時候,就要求我們盡量把接口設(shè)計得有冪等性,這個時候即便是重復(fù)消費,也不用擔(dān)心什么問題了。基本上做好這三點,我們就能夠大大地提高我們地系統(tǒng)地可用性了!如果你有興趣,歡迎大家關(guān)注我,共同學(xué)習(xí),共同進(jìn)步。大家的支持是我繼續(xù)嘮嗑的動力。

 

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

2020-10-11 20:41:14

消息隊列數(shù)據(jù)技術(shù)

2021-01-11 18:36:06

Redis分布式鎖數(shù)據(jù)庫

2013-02-01 10:48:52

2021-06-22 06:13:05

私有云混合多云網(wǎng)絡(luò)架構(gòu)

2013-01-06 10:57:03

2011-07-19 21:20:01

2013-08-12 10:37:14

云服務(wù)云計算

2017-10-26 14:15:32

測試工具設(shè)計開發(fā)

2020-02-06 08:58:09

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

2019-06-25 08:46:04

Redis分布式鎖JVM

2016-11-28 15:54:17

聯(lián)想網(wǎng)盤

2022-02-07 19:28:02

LoRa廣域網(wǎng)5G

2019-09-20 14:25:21

程序員Google人生第一份工作

2020-04-08 10:18:56

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

2012-05-25 10:15:06

Java程序員面試題

2020-03-02 17:00:24

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

2020-04-26 09:48:11

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

2021-04-28 18:26:35

命令參數(shù)git

2021-08-31 15:57:32

勒索軟件零信任網(wǎng)絡(luò)罪犯

2020-05-06 15:02:58

MySQL數(shù)據(jù)庫技術(shù)
點贊
收藏

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