17 高性能緩存架構(gòu)

筆記

  1. 緩存就是為了彌補(bǔ)存儲系統(tǒng)在這些復(fù)雜業(yè)務(wù)場景下的不足状勤,其基本原理是將可能重復(fù)使用的數(shù)據(jù)放到內(nèi)存中吴侦,一次生成挖胃、多次使用杂靶,避免每次使用都去訪問存儲系統(tǒng)。緩存能夠帶來性能的大幅提升酱鸭。

  2. 緩存的架構(gòu)設(shè)計要點:

    1. 緩存穿透
      緩存穿透是指緩存沒有發(fā)揮作用吗垮,業(yè)務(wù)系統(tǒng)雖然去緩存查詢數(shù)據(jù),但緩存中沒有數(shù)據(jù)凹髓,業(yè)務(wù)系統(tǒng)需要再次去存儲系統(tǒng)查詢數(shù)據(jù)烁登。通常情況下有兩種情況:

      • 存儲數(shù)據(jù)不存在
        如果查詢存儲系統(tǒng)的數(shù)據(jù)沒有找到,則直接設(shè)置一個默認(rèn)值(可以是空值蔚舀,也可以是具體的值)存到緩存中饵沧,這樣第二次讀取緩存時就會獲取到默認(rèn)值,而不會繼續(xù)訪問存儲系統(tǒng)赌躺。
      • 緩存數(shù)據(jù)生成耗費大量時間或者資源
        存儲系統(tǒng)中存在數(shù)據(jù)狼牺,但生成緩存數(shù)據(jù)需要耗費較長時間或者耗費大量資源。如果剛好在業(yè)務(wù)訪問的時候緩存失效了礼患,那么也會出現(xiàn)緩存沒有發(fā)揮作用是钥,訪問壓力全部集中在存儲系統(tǒng)上的情況。
    2. 緩存雪崩
      緩存雪崩是指當(dāng)緩存失效(過期)后引起系統(tǒng)性能急劇下降的情況讶泰。緩存雪崩的常見解決方法有兩種:更新鎖機(jī)制和后臺更新機(jī)制咏瑟。

      • 更新鎖機(jī)制 對緩存更新操作進(jìn)行加鎖保護(hù),保證只有一個線程能夠進(jìn)行緩存更新痪署,未能獲取更新鎖的線程要么等待鎖釋放后重新讀取緩存码泞,要么就返回空值或者默認(rèn)值。分布式集群的業(yè)務(wù)系統(tǒng)要實現(xiàn)更新鎖機(jī)制狼犯,需要用到分布式鎖余寥,如 ZooKeeper。
      • 后臺更新機(jī)制 由后臺線程來更新緩存悯森,而不是由業(yè)務(wù)線程來更新緩存宋舷,緩存本身的有效期設(shè)置為永久,后臺線程定時更新緩存瓢姻。
    3. 緩存熱點

      • 緩存熱點的解決方案就是復(fù)制多份緩存副本祝蝠,將請求分散到多個緩存服務(wù)器上,減輕緩存熱點導(dǎo)致的單臺緩存服務(wù)器壓力。
      • 同的緩存副本不要設(shè)置統(tǒng)一的過期時間绎狭,否則就會出現(xiàn)所有緩存副本同時生成同時失效的情況细溅,從而引發(fā)緩存雪崩效應(yīng)。
  3. 由于緩存的各種訪問策略和存儲的訪問策略是相關(guān)的儡嘶,因此上面的各種緩存設(shè)計方案通常情況下都是集成在存儲訪問方案中喇聊,可以采用“程序代碼實現(xiàn)”的中間層方式,也可以采用獨立的中間件來實現(xiàn)蹦狂。

理解與思考

  1. 緩存很有用誓篱。軟件系統(tǒng)中隨處可見各種緩存。硬件凯楔,操作系統(tǒng)窜骄,數(shù)據(jù)庫,web系統(tǒng)中都能看到緩存的應(yīng)用啼辣。

  2. 制定緩存和失效的策略啊研,是個技術(shù)活御滩,也是用好緩存系統(tǒng)的關(guān)鍵鸥拧。稍有不慎就自廢武功。

課后習(xí)題

分享一下你所在的業(yè)務(wù)發(fā)生過哪些因為緩存導(dǎo)致的線上問題削解?采取了什么樣的解決方案富弦?效果如何?
我目前做的系統(tǒng)氛驮,是一個性能報表系統(tǒng)腕柜,并發(fā)用戶數(shù)少,網(wǎng)絡(luò)上處于用戶的內(nèi)網(wǎng)系統(tǒng)矫废,注重數(shù)據(jù)的時效性盏缤,需要及時刷新,所以沒用使用緩存蓖扑。對緩存系統(tǒng)的設(shè)計和使用都比較少唉铜。

實踐

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市律杠,隨后出現(xiàn)的幾起案子潭流,更是在濱河造成了極大的恐慌,老刑警劉巖柜去,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件灰嫉,死亡現(xiàn)場離奇詭異,居然都是意外死亡嗓奢,警方通過查閱死者的電腦和手機(jī)讼撒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人根盒,你說我怎么就攤上這事瞻颂。” “怎么了郑象?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵贡这,是天一觀的道長。 經(jīng)常有香客問我厂榛,道長盖矫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任击奶,我火速辦了婚禮辈双,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘柜砾。我一直安慰自己湃望,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布痰驱。 她就那樣靜靜地躺著证芭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪担映。 梳的紋絲不亂的頭發(fā)上废士,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機(jī)與錄音蝇完,去河邊找鬼官硝。 笑死,一個胖子當(dāng)著我的面吹牛短蜕,可吹牛的內(nèi)容都是我干的氢架。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼朋魔,長吁一口氣:“原來是場噩夢啊……” “哼岖研!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起铺厨,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤缎玫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后解滓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赃磨,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年洼裤,在試婚紗的時候發(fā)現(xiàn)自己被綠了邻辉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖值骇,靈堂內(nèi)的尸體忽然破棺而出莹菱,到底是詐尸還是另有隱情,我是刑警寧澤吱瘩,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布道伟,位于F島的核電站,受9級特大地震影響使碾,放射性物質(zhì)發(fā)生泄漏蜜徽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一票摇、第九天 我趴在偏房一處隱蔽的房頂上張望拘鞋。 院中可真熱鬧,春花似錦矢门、人聲如沸盆色。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽隔躲。三九已至,卻和暖如春峡扩,著一層夾襖步出監(jiān)牢的瞬間蹭越,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工教届, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人驾霜。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓案训,卻偏偏與公主長得像,于是被迫代替她去往敵國和親粪糙。 傳聞我的和親對象是個殘疾皇子强霎,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 單純依靠存儲系統(tǒng)的性能提升不夠的,典型的場景有: 需要經(jīng)過復(fù)雜運(yùn)算后得出的數(shù)據(jù)蓉冈,存儲系統(tǒng)無能為力 例如城舞,一個論壇需...
    hedgehog1112閱讀 684評論 0 5
  • 雖然我們可以通過各種手段來提升存儲系統(tǒng)的性能,但在某些復(fù)雜的業(yè)務(wù)場景下寞酿,單純依靠存儲系統(tǒng)的性能提升不夠的家夺,典型的場...
    d_quan閱讀 72評論 0 1
  • 本文參考《極客時間》- 從0開始學(xué)架構(gòu) 為什么需要緩存 復(fù)雜業(yè)務(wù)場景下,單純依靠存儲系統(tǒng)的性能提升不夠的伐弹。典型場景...
    小螺絲釘cici閱讀 263評論 0 4
  • 性能既是客觀指標(biāo)拉馋,諸如響應(yīng)時間、吞吐量等技術(shù)指標(biāo);又是實際參與者的主觀感受煌茴。 1 性能測試 性能測試是性能優(yōu)化的前...
    deniro閱讀 1,355評論 2 15
  • 在服務(wù)器端程序開發(fā)領(lǐng)域蔓腐,性能問題一直是備受關(guān)注的重點矩乐。業(yè)界有大量的框架、組件回论、類庫都是以性能為賣點而廣為人知绰精。然而...
    dreamer_lk閱讀 1,010評論 0 17