天天看點

高并發緩存架構設計之緩存雪崩解決方案

使用緩存:使用者通路java程式,java程式請求資料庫,為了減少資料庫的壓力,我們在java程式和資料庫之間加入緩存,并且可以進行快速的響應。

緩存雪崩:因為緩存服務挂掉或者熱點緩存失效,進而導緻所有的請求都去查資料庫,導緻資料庫連接配接不夠用或者資料庫處理不過來,進而導緻整個系統不可用。

資料庫伺服器壓力大,依賴資料庫的其他系統也會面臨崩潰的風險。

緩存雪崩的原因:

一、高峰期大面積緩存key失效(所有車次查詢全部依賴資料庫)。

解決:避免緩存設定相近的有效期:即為不同key設定随機有效期,統一規劃有效期,使失效時間均勻分布。減少資料庫壓力:使用互斥鎖機制。

二、局部高峰期,熱點緩存key失效(導緻某一趟車次的海量請求直擊資料庫)。

緩存有效期機制本身的缺陷:緩存持久化,永不過期,背景任務異步更新。

優點:不阻塞線程,使用者體驗好,不會出現雪崩效應。

缺點:可能出現資料不一緻,代碼複雜度增大(每個value都需要維護異步更新代碼),容易堆積垃圾資料。

解決方案一: