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

緩存,你真的用對(duì)了么?

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

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

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

[[234668]]

緩存,你真的用對(duì)了么?

誤用一:把緩存作為服務(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ī)的緩存玩法,如上圖:

  • 服務(wù)先讀緩存,緩存***則返回
  • 緩存不***,再讀數(shù)據(jù)庫

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

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

如何應(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í)例要做垂直拆分

【本文為51CTO專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2022-05-09 07:27:50

ThreadLocaJava

2019-08-27 08:24:17

簡歷技能工作

2020-09-18 06:39:18

hashMap循環(huán)數(shù)據(jù)

2024-12-17 15:00:00

字符串Java

2021-12-25 22:28:27

緩存穿透緩存擊穿緩存雪崩

2024-09-18 10:08:37

2022-01-12 18:35:54

MongoDB數(shù)據(jù)查詢

2022-07-26 00:00:04

Maven作用域Java

2019-12-18 15:11:42

數(shù)組集合數(shù)據(jù)

2021-10-26 00:38:10

Redis分布式

2018-06-29 08:36:50

2022-03-14 00:05:23

MySQL模式數(shù)據(jù)庫

2021-10-25 09:50:57

Redis分布式技術(shù)

2025-06-25 02:00:00

2021-01-20 16:26:17

Go編程語言

2018-10-07 06:30:40

代碼設(shè)計(jì)模式面向?qū)ο笤瓌t

2024-01-08 08:27:11

注解Bean代理

2019-12-10 10:13:58

HTTPNginxRedirect

2017-10-10 15:30:20

JavaScript
點(diǎn)贊
收藏

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

主站蜘蛛池模板: av成人在线观看 | 免费一区二区三区 | 欧美视频| 91视视频在线观看入口直接观看 | 99reav| 欧美1区2区 | 亚洲精品一区二区 | 成人高清网站 | 粉嫩一区二区三区四区公司1 | 免费xxxx大片国产在线 | 欧美一级特黄aaa大片在线观看 | 国产高清一区二区 | 国产91丝袜在线播放 | 91精品一区二区三区久久久久久 | 国产精品成人国产乱 | 欧美黄色一区 | 精品视频一区二区 | 日韩欧美视频免费在线观看 | 日本精品一区二区 | 免费xxxx大片国产在线 | 看片国产 | 九九久视频 | 日韩精品一区二区三区 | pacopacomama在线| 男女羞羞视频在线免费观看 | 在线午夜 | 亚洲国产精品久久久久 | 69性欧美高清影院 | 国产成人网 | 国产69精品久久99不卡免费版 | 久久99精品久久久久久秒播九色 | 日本三级全黄三级a | 欧美色专区 | 欧美三级网站 | 特级黄一级播放 | 欧美高清视频 | 欧美日韩视频在线 | 成人午夜免费网站 | 国产丝袜一区二区三区免费视频 | 国产激情在线 | 在线观看成人小视频 |