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

你以為優(yōu)化就要用緩存?四類緩存常見誤用,你中招了嗎?

開發(fā) 架構(gòu)
有架構(gòu)師說“緩存是萬金油,哪里有問題,加個(gè)緩存,就能優(yōu)化”,緩存的濫用,可能會(huì)導(dǎo)致一些錯(cuò)誤用法。

緩存,是互聯(lián)網(wǎng)分層架構(gòu)中,非常重要的一個(gè)部分,通常用它來降低數(shù)據(jù)庫壓力,提升系統(tǒng)整體性能,縮短訪問時(shí)間。

有架構(gòu)師說“緩存是萬金油,哪里有問題,加個(gè)緩存,就能優(yōu)化”,緩存的濫用,可能會(huì)導(dǎo)致一些錯(cuò)誤用法。

四類緩存常見誤用,你中招了嗎?

誤用一:把緩存作為服務(wù)與服務(wù)之間傳遞數(shù)據(jù)的媒介。

如上圖:

  • 服務(wù)1和服務(wù)2約定好key和value,通過緩存?zhèn)鬟f數(shù)據(jù);
  • 服務(wù)1將數(shù)據(jù)寫入緩存,服務(wù)2從緩存讀取數(shù)據(jù),達(dá)到兩個(gè)服務(wù)通信的目的;

該方案存在的問題是:

  • 數(shù)據(jù)管道,數(shù)據(jù)通知場(chǎng)景,MQ更加適合;
  • 多個(gè)服務(wù)關(guān)聯(lián)同一個(gè)緩存實(shí)例,會(huì)導(dǎo)致服務(wù)耦合;

誤用二:使用緩存未考慮雪崩。

常規(guī)的緩存玩法,如上圖:

  • 緩存不命中,再讀數(shù)據(jù)庫;

(1) 什么時(shí)候會(huì)產(chǎn)生雪崩?

如果緩存掛掉,所有的請(qǐng)求會(huì)壓到數(shù)據(jù)庫,如果未提前做容量預(yù)估,可能會(huì)把數(shù)據(jù)庫壓垮(在緩存恢復(fù)之前,數(shù)據(jù)庫可能一直都起不來),導(dǎo)致系統(tǒng)整體不可服務(wù)。

(2) 如何應(yīng)對(duì)潛在的雪崩?

提前做容量預(yù)估,如果緩存掛掉,數(shù)據(jù)庫仍能扛住,才能執(zhí)行上述方案。

否則,就要進(jìn)一步設(shè)計(jì),更具體的,有兩類常見方案。

① 方案一:高可用緩存

如上圖:使用高可用緩存集群,一個(gè)緩存實(shí)例掛掉后,能夠自動(dòng)做故障轉(zhuǎn)移。

② 方案二:緩存水平切分

如上圖:使用緩存水平切分,一個(gè)緩存實(shí)例掛掉后,不至于所有的流量都?jí)旱綌?shù)據(jù)庫上。

誤用三:調(diào)用方緩存數(shù)據(jù)。

如上圖:

  • 服務(wù)提供方緩存,向調(diào)用方屏蔽數(shù)據(jù)獲取的復(fù)雜性(這個(gè)沒問題);
  • 服務(wù)調(diào)用方,也緩存一份數(shù)據(jù),先讀自己的緩存,再?zèng)Q定是否調(diào)用服務(wù)(這個(gè)有問題);

該方案存在的問題是:

  • 調(diào)用方需要關(guān)注數(shù)據(jù)獲取的復(fù)雜性;
  • 更嚴(yán)重的,服務(wù)修改db里的數(shù)據(jù),淘汰了服務(wù)cache之后,難以通知調(diào)用方淘汰其cache里的數(shù)據(jù),從而導(dǎo)致數(shù)據(jù)不一致;
  • 有人說,服務(wù)可以通過MQ通知調(diào)用方淘汰數(shù)據(jù),額,難道下游的服務(wù)要依賴上游的調(diào)用方,分層架構(gòu)設(shè)計(jì)不是這么玩的;

誤用四:多服務(wù)共用緩存實(shí)例。

服務(wù)A和服務(wù)B共用一個(gè)緩存實(shí)例(不是通過這個(gè)緩存實(shí)例交互數(shù)據(jù))。

該方案存在的問題是:

  • 可能導(dǎo)致key沖突,彼此沖掉對(duì)方的數(shù)據(jù);

畫外音:可能需要服務(wù)A和服務(wù)B提前約定好了key,以確保不沖突,常見的約定方式是使用namespace:key的方式來做key。

  • 不同服務(wù)對(duì)應(yīng)的數(shù)據(jù)量,吞吐量不一樣,共用一個(gè)實(shí)例容易導(dǎo)致一個(gè)服務(wù)把另一個(gè)服務(wù)的熱數(shù)據(jù)擠出去;
  • 共用一個(gè)實(shí)例,會(huì)導(dǎo)致服務(wù)之間的耦合,與微服務(wù)架構(gòu)的“數(shù)據(jù)庫,緩存私有”的設(shè)計(jì)原則是相悖的;

建議的玩法是:

如上圖:各個(gè)服務(wù)私有化自己的數(shù)據(jù)存儲(chǔ),對(duì)上游屏蔽底層的復(fù)雜性。

總結(jié)

緩存使用小技巧:

  • 服務(wù)與服務(wù)之間不要通過緩存?zhèn)鬟f數(shù)據(jù);
  • 如果緩存掛掉,可能導(dǎo)致雪崩,此時(shí)要做高可用緩存,或者水平切分;
  • 調(diào)用方不宜再單獨(dú)使用緩存存儲(chǔ)服務(wù)底層的數(shù)據(jù),容易出現(xiàn)數(shù)據(jù)不一致,以及反向依賴;
  • 不同服務(wù),緩存實(shí)例要做垂直拆分;

這些坑,你踩過嗎?

知其然,知其所以然。

思路比結(jié)論更重要。

責(zé)任編輯:趙寧寧 來源: 架構(gòu)師之路
相關(guān)推薦

2021-01-07 08:12:08

自學(xué)編程學(xué)習(xí)

2018-10-22 17:52:28

GitHub代碼開發(fā)者

2021-08-16 14:00:27

手機(jī)科技功能

2018-10-25 10:36:50

物聯(lián)網(wǎng)誤區(qū)IOT

2019-07-25 08:08:33

SQLJavaMySQL

2022-04-01 17:32:00

Windows3.1元宇宙模式黑客

2015-09-16 11:53:21

2018-08-14 11:02:55

機(jī)器學(xué)習(xí)項(xiàng)目失敗

2021-03-23 10:17:45

5G手機(jī)網(wǎng)絡(luò)

2024-04-26 00:15:51

2025-06-27 01:00:00

C#性能字符串

2018-08-28 09:42:21

緩存愛奇藝架構(gòu)

2025-02-10 00:00:25

內(nèi)存管理開發(fā)

2025-05-27 08:45:00

2024-07-10 08:10:10

2013-09-30 09:18:39

2023-06-06 09:01:09

2020-04-02 19:16:03

Windows 10Windows操作系統(tǒng)

2019-05-05 10:59:26

數(shù)據(jù)科學(xué)家數(shù)據(jù)科學(xué)編碼

2019-01-10 16:52:26

華為
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 亚洲免费专区 | 夜夜肉她怀孕h周君彦 | 亚洲丝袜av| 黄色片中文字幕 | 亚洲欧美精品 | 欧美一区在线视频 | 中文字幕在线不卡 | 久久精品久久久久久久 | 长河落日| 精品成人在线 | 国产传媒在线播放 | 欧美日韩精品久久久免费观看 | 欧美视频区 | 国产黄色录像 | 日韩欧美二区 | 国产人成 | 中文在线观看免费高清 | 日韩 欧美 亚洲 | 狠狠久 | 福利在线看 | 亚洲在线中文字幕 | 香蕉视频在线看 | 99视频网 | 欧美一区二区三区视频 | 久久免费视频网站 | 日韩久久久 | 中国毛片视频 | 午夜www| 四虎在线观看视频 | 91av免费在线观看 | 天堂av片 | 国产福利视频在线观看 | 天天综合久久 | 亚洲一区二区三区在线 | 精品一区二区国产 | 国产美女免费 | 亚洲视频在线一区 | 免费中文字幕日韩欧美 | 国产理论片 | 成av人片一区二区三区久久 | 精品国产福利 |