由於快取層承載著大量請求, 有效地保護了儲存層, 但是如果快取層由於某些原因不能提供服務(大量的快取資料過期), 於是所有的請求都會達到儲存層, 儲存層的呼叫量會暴增, 造成儲存層也會級聯宕機的情況。
1)保證快取層服務高可用性。 和飛機都有多個引擎一樣, 如果快取層設計成高可用的,將熱點資料均勻分布在不同的伺服器中, 即使個別節點、 個別機器、 甚至是機房宕掉, 依然可以提供服務。
2)依賴隔離元件為後端限流並降級。 無論是快取層還是儲存層都會有出錯的概率, 可以將它們視同為資源。 作為併發量較大的系統, 假如有乙個資源不可用, 可能會造成執行緒全部阻塞在這個資源上, 造成整個系統不可用。快取降級時不訪問資料庫直接訪問記憶體中的部分緩衝資料或者直接返回預設資料。
3)提前演練。 在專案上線前, 演練快取層宕掉後, 應用以及後端的負載情況以及可能出現的問題, 在此基礎上做一些預案設定。
4)設定熱點資料永不過期。以及其他快取資料(非熱點)的過期時間設定為隨機,防止在同一時間段內大量快取資料同時過期。
Redis快取穿透 快取雪崩問題
穿透雪崩主要是因為查詢資料庫造成的,那麼讀寫分離,快取資料查詢失敗不去查資料庫就好了。查的時候有即是有,無即是無,不會再查資料庫,快取的穿透和雪崩問題就不存在了。其次新增資料庫和快取同步功能,保證資料庫和快取資料是一致的即可 需要注意的是這時候資料庫資料是有限和相對穩定的,其實如果是海量資料同時放入...
redis快取雪崩
今天來分享一下redis幾道常見的面試題 回顧一下我們為什麼要用快取 redis 現在有個問題,如果我們的快取掛掉了,這意味著我們的全部請求都跑去資料庫了。在前面學習我們都知道redis不可能把所有的資料都快取起來 記憶體昂貴且有限 所以redis需要對資料設定過期時間,並採用的是惰性刪除 定期刪除...
Redis 快取雪崩
快取層承載著大量請求,有效的保護了儲存層。但是如果快取層由於某些原因整體不能提供服務 大面積宕機或者快取的內容失效等 會導致所有的請求都到達儲存層,儲存層的呼叫量暴增,造成儲存層宕機,系統崩潰。在網上看到了乙個非常有趣的說法 快取雪崩的英文原意是 stampeding herd 奔逃的野牛 指的是快...