1. 程式人生 > >高可用架構之分散式快取

高可用架構之分散式快取

為什麼需要快取?
加速請求響應時間,響應延遲小
減少對固化儲存的讀壓力

快取適用場合
靜態資源的快取
較少更改資源的快取
讀多寫少場景
不適合場景
頻繁更新
讀少寫多

高可用架構使用的快取型別有哪些?各自作用是什麼?
本地快取
靜態不變的資料
減少網路I/O互動
程序內快取
和程序相關的動態資料
動態變化資料
不適合固化儲存
分散式快取
快取相對靜態的資料
快取資料量大 單機無法存放
提高查詢速度

高可用架構使用分散式快取型別?如何選擇?
Memcached
Redis
自主研發
業務場景
簡單的key-value
-Memcached
複雜的key-value
-計數、連結串列、集合、雜湊等
-Redis
效能要求
Redis單機效能更好
高可用架構快取冗餘如何設計?
快取高可用保證
快取7*24
防止穿透到資料庫,對資料庫衝擊
快取不高可用保證
快取就是快取
一旦快取不可用 查詢資料庫
那麼問題來,資料會不會掛?

高可用架構快取一致性如何保證?
多份資料副本,資料一致性問題存在
資料庫、多份快取
強一致性較難
分散式鎖 分散式事務
追求最終一致性
網際網路的特點
先更新快取再更新資料庫
快取成功 資料庫失敗 資料儲存錯誤
先更新資料庫再更新快取
資料庫成功 快取失敗 快取髒資料
可行方案
更新資料庫 delete 快取
1秒鐘後 再次失效快取項
設定快取項Expired Time
失敗
記錄日誌
指令碼定期修正
讀請求
讀快取 命中直接返回
不命中 讀資料庫 把結果會填快取
高可用架構快取命中率如何保證?
業務不同命中率不同
命中率80%+
相對靜態資料快取
快取時間長些
定期檢視快取命中情況,適當調整快取物件
高可用架構快取設計最佳實踐是什麼?
業務特點 選用多級快取
快取高可用保證
快取宕機 資料庫最大壓力評估