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

緩存系統中面臨的雪崩/穿透/一致性問題

新聞 前端
緩存系統一定程度上極大提升系統并發能力,但同樣也增加額外技術考慮因素,下面針對緩存系統設計與使用中面臨的常見問題展開。

 There are only two hard things in Computer Science: cache invalidation and naming things.

計算機科學中有兩件難事:緩存失效和命名

– Phil Karlton

From Martin Fowler : TwoHardThings

緩存系統一定程度上極大提升系統并發能力,但同樣也增加額外技術考慮因素,下面針對緩存系統設計與使用中面臨的常見問題展開。

  • 緩存應用的典型場景
  • 緩存雪崩
  • 緩存穿透
  • 緩存更新與數據一致性

緩存應用的典型場景

請求->緩存->***緩存則返回數據->無緩存則讀取原始數據源

緩存定位 :前置數據加載,避免數據回源,提供高性能、高并發的數據讀取能力;只有未***緩存時才進行數據回源,極大減輕原始數據讀取的壓力

緩存分類 :按緩存系統所處位置不同,分為本地緩存、分布式緩存

  • 本地緩存:內存級緩存、文件級緩存,內存級緩存優勢在于本地內存I/O、高性能(單次內存尋址100ns),缺點在于空間有限,無法多端數據同步,此類方案有PHP的Opcache/Yac, Java中Encache/GuavaCache/SpringCache等;文件級緩存依賴磁盤I/O實現緩存作用,受機械磁盤尋道性能限制(單次磁盤讀取時間10ms左右),或考慮固態硬盤/Raid優化方案,較少使用
  • 分布式緩存:Memcached、Redis等,分布式系統解決緩存容量問題,具備持續擴容能力,但不可避免一次網絡I/O請求

本文主要討論 分布式緩存 系統設計與使用中面臨的問題。

緩存雪崩

定義: 緩存雪崩是指緩存系統失效,導致大量請求同時進行數據回源,導致數據源壓力驟增而崩潰 。兩種情況會導致此問題:1、多個緩存數據同時失效;2、緩存系統崩潰

緩存同時失效

  • 在大量緩存同時失效的情況下,請求回源,導致數據源請求暴增而崩潰,系統全局不可用
  • 緩存時間設置原則:根據 緩存數據訪問規律和緩存數據不一致的敏感性 要求來選擇緩存時間
  • 緩存數據訪問規律:如不同緩存數據訪問無規律或相對離散,則不會存在這些緩存數據同時失效的情況;如 緩存數據為批量寫入 (定時任務預熱),應考慮將 緩存時間離散化 ,避免同時失效的情況下大量回源請求
  • 緩存數據不一致的敏感性:不同應用場景下對緩存數據的一致性要求不同,緩存時間的設置視情況而定
  • 這里也涉及到緩存更新策略問題,錯誤的更新策略可能會先刪除緩存,再設置緩存,此時間差范圍內的請求會進行回源,會導致此問題

如何避免應考慮: 緩存失效時間離散化

緩存系統故障

緩存系統整體故障,則整個緩存系統不可用,大量回源請求,且由于緩存系統故障無法回寫緩存,導致無法快速恢復。

一句老話:為解決一個問題,引入新的解決方案,同時也必然引入新的問題。

這也是緩存系統的引入,在解決高性能、高并發的同時,引入了新的故障點。

考慮此問題,應從事前、事故中、事后不同階段考慮:

  • 事前:增加緩存系統 高可用方案設計 ,避免出現系統性故障
  • 事故中:
    熔斷限流機制
    
  • 事后:緩存 數據持久化 ,在故障后 快速恢復 緩存系統

緩存穿透

定義: 緩存穿透是指訪問不存在數據,從而繞過緩存,直取數據源(大量數據源讀取操作)

解決緩存穿透的思路:

  • 不存在資源訪問時,在緩存系統設置空值來攔截
    • 優點:實現簡單
    • 問題:大量非法請求時,緩存系統被填充大量非法值 
       
  • 根據資源設置攔截機制(布隆過濾器bloomfilter或壓縮filter過濾有效資源,如有效用戶id等;也可以全局保存有效資源摘要,專用過濾、防穿透)
    • 優點:緩存系統空間利用較好
    • 問題:過濾器實現機制和數據一致性要求 
       

緩存更新與數據一致性

緩存系統數據的更新策略是需要專門開題來說的,建議閱讀 左耳朵耗子:緩存更新的套路 系統了解,這里只根據實際經驗給出在不同一致性要求下的建議。

一種常見緩存更新策略(此方案有問題):

  • 讀操作:***緩存則返回,無緩存則取回源數據,寫緩存
  • 寫操作:先刪除緩存,再更新數據源

問題場景:讀寫并發的場景下先刪緩存操作可能導致臟數據入緩存

  • 寫操作:刪除緩存
  • 讀操作:無緩存則取回源數據(舊數據),回寫緩存(此時緩存中為舊數據)
  • 寫操作:更新數據源
  • 此時緩存數據不一致:緩存中為舊數據,數據源為新數據,出現緩存舊數據問題

幾種更新緩存的策略:

  • Cache Aside Pattern:緩存失效時回源取數據,更新緩存;***緩存時,返回緩存數據;先數據源更新后,再失效緩存(由等待下次讀取來回寫緩存)
    • 優勢:無緩存舊數據問題、緩存系統維護簡單、Facebook推薦方案
    • 問題:無法絕對杜絕并發讀寫問題
      • 緩存過期的背景下,讀操作回源取數據(此時為舊數據)
      • 寫操作:更新數據源,失效緩存
      • 讀操作:將回源數據(舊數據)寫緩存,出現緩存數據不一致問題
      • 這種問題出現概率極低,幾點要求:緩存已過期、并發讀寫、讀數據比寫數據快、但讀操作更新緩存比寫操作失效緩存慢(也就是說寫操作的行為需完全發生在讀操作兩步之間),一般而言讀操作(讀庫+更新緩存)時長要小于寫操作(更新數據源+失效緩存),所以認為這種并發問題概率較低
      • 是否可進一步解決此問題:增加鎖機制,解決并發問題
  • Read Through Pattern:更新數據源由緩存系統操作
    讀取數據
    
  • Write Through Pattern:更新數據源由緩存系統操作
    寫數據
    Read Through
    
  • Write Behind Caching Pattern:又稱 Write Back
    • 一句話總結:更新數據時,只更新緩存,不更新數據源(緩存 異步批量 更新數據源)
    • 優勢:
      • 更新緩存為內存操作,讀寫I/O非常高
      • 異步批量更新數據源,合并多個操作
    • 問題:
      • 緩存不滿足強一致性要求
      • 強一致性和高性能的沖突 、 高可用和高性能的沖突 終究會使Trade-Off
      • 實現復雜,需跟蹤哪些Cache更新,成本較高

總體來說,不同方案在不同場景下是有各自優劣的,技術選型、架構設計應根據實際場景取舍,并對選擇方案的利弊有足夠且深入理解。

一般而言,推薦 Cache Aside Pattern 方案,容忍較小概率的不一致(同時也可以增加鎖機制解決此低概率并發問題),簡化緩存系統復雜度。

責任編輯:張燕妮 來源: 小武的博客
相關推薦

2019-03-27 13:56:39

緩存雪崩穿透

2024-04-11 13:45:14

Redis數據庫緩存

2024-11-14 07:10:00

2022-09-06 15:30:20

緩存一致性

2025-06-16 02:11:00

2023-04-13 08:15:47

Redis緩存一致性

2020-09-04 06:32:08

緩存數據庫接口

2012-09-24 09:35:42

分布式系統

2016-11-29 09:00:19

分布式數據一致性CAS

2022-08-11 07:55:05

數據庫Mysql

2021-09-08 11:03:13

緩存數據庫性能

2022-12-14 08:23:30

2024-11-07 22:57:30

2020-05-07 11:58:07

分布式系統架構

2020-09-22 08:07:50

緩存數據一致性

2022-06-21 21:47:13

數據系統

2022-09-16 09:46:42

緩存數據庫

2025-03-24 10:17:01

2020-05-12 10:43:22

Redis緩存數據庫

2020-06-01 22:09:48

緩存緩存同步緩存誤用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: www.99热.com | 欧洲尺码日本国产精品 | 成人免费观看男女羞羞视频 | 欧美一区二区在线免费观看 | 亚洲毛片在线 | 精品久久久久久亚洲综合网站 | 国产福利在线免费观看 | 国产亚韩 | 福利视频一区二区三区 | 日韩久久久久 | 日韩欧美综合在线视频 | 污片在线观看 | 久久久久国产 | 91精品入口蜜桃 | av电影手机在线看 | 国产一区二区三区在线 | 中文字幕视频在线观看 | 91网在线观看| 精品一区二区电影 | 一级特黄在线 | 免费的色网站 | 91精产国品一二三区 | 国产女人与拘做受免费视频 | 免费精品视频在线观看 | 99视频在线免费观看 | 欧美一级片在线看 | 久久久久国产精品免费免费搜索 | 国产一区二区三区在线 | 日本精品视频在线观看 | 国产h视频 | 婷婷色婷婷 | 亚洲国产中文字幕 | 国产成人亚洲精品自产在线 | 亚洲成人免费视频在线观看 | 国产高清在线观看 | 天堂资源 | 免费久久99精品国产婷婷六月 | 精品国产一区二区在线 | 精品久久精品 | 男人的天堂视频网站 | 91精品国产92|