1、快取雪崩
發生場景:當Redis服務器重啟或者大量快取在同一時期失效時,此時大量的流量會全部沖擊到資料庫上面,資料庫有可能會因為承受不住而宕機
解決辦法:
1)隨機均勻設定失效時間
2)設定過期標志更新快取
3)并發量不是特別多的時候,使用最多的解決方案是加鎖排隊
2、快取穿透
發生場景:是指查詢一個資料庫一定不存在的資料,正常的使用快取流程大致是,資料查詢先進行快取查詢,如果key不存在或者key已經過期,再對資料庫進行查詢,并把查詢到的物件,放進快取,如果資料庫查詢物件為空,則不放進快取,此時,若攻擊者抓住這個漏洞不斷請求資料庫,就會對資料庫造成壓力,甚至壓垮資料庫,
解決辦法:采用快取空值的方式,也就是從資料庫查詢的物件為空,也放入快取,只是設定的快取過期時間較短,比如設定為60秒,
3、快取預熱
是一種機制, 就是系統上線后,提前將相關的快取資料直接加載到快取系統,避免在用戶請求的時候,先查詢資料庫,然后再將資料快取的問題,
4、快取更新
是一種機制,怎么樣保證快取中的key是實時有效的,以及及時的更新資料資源
解決辦法:
1)快取服務器自帶的快取失效策略
2)自定義:定時去清理過期的快取;當用戶請求過來時,再判斷這個請求所用到的快取是否過期,過期的話就去底層系統得到新資料并更新快取,
5、快取降級
發生場景:當訪問量劇增、服務出現問題(如回應時間慢或不回應)或非核心服務影響到核心流程的性能時,仍然需要保證服務還是可用的,即使是有損服務,系統可以根據一些關鍵資料進行自動降級,也可以配置開關實作人工降級,降級的最終目的是保證核心服務可用,即使是有損的,而且有些服務是無法降級的(如加入購物車、結算),
解決辦法:
在進行降級之前要對系統進行梳理,看看系統是不是可以丟卒保帥;從而梳理出哪些必須誓死保護,哪些可降級;比如可以參考日志級別設定預案:
(1)一般:比如有些服務偶爾因為網路抖動或者服務正在上線而超時,可以自動降級;
(2)警告:有些服務在一段時間內成功率有波動(如在95~100%之間),可以自動降級或人工降級,并發送告警;
(3)錯誤:比如可用率低于90%,或者資料庫連接池被打爆了,或者訪問量突然猛增到系統能承受的最大閥值,此時可以根據情況自動降級或者人工降級;
(4)嚴重錯誤:比如因為特殊原因資料錯誤了,此時需要緊急人工降級,
參考:https://www.cnblogs.com/leeSmall/p/8594542.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/52395.html
標籤:大數據
