緩存優化過程當中的一些思考

最近一段時間在作雙十一的優化,對於緩存的使用和改造漸漸有了一些思考,記錄一下緩存

  • 緩存的使用、選擇
    * 讀簡單,寫複雜的業務最好放在寫入端
    * 讀複雜,寫簡單的業務邏輯放在讀取端
    * 根據業務的類型,選擇是使用集中式緩存仍是分佈式的
    * key-value的規則
    * 基礎的cache須要關注的事:替換策略等等。。。
  • 緩存致使的數據不一致,補償措施
    * 對於集中式的緩存作補償是比較容易的
    * 對於分佈式的相對來講比較麻煩,方案待考慮,TMD tair是怎麼搞得,有同步機制補償嗎?感受不太對啊,TODO
  • 緩存併發寫入的問題
    * 緩存也是有狀態的序列化對象,必定要注意併發的問題,md上次統一調度的是否確認審覈就出現了這個狀況,too young too simple併發

  • 大促期間的控制
    * 失效時間
    * 預熱數據量
    * 預熱校驗
    * 預熱流程:好比說預熱會不會致使下游服務擊穿,是否會存在批量DB操做或者引起DB性能問題
    * 預熱的併發數量控制
    * 批量預熱等分佈式

  • cache重建性能

  • 大批量緩存同時失效可能會致使緩存擊穿率升高
    1. 緩存失效時間加一個隨機數,避免同時失效
    2. 考慮是否須要失效後在作一下加載?看狀況決定是否有必要,我感受大促不必
    3. 非關鍵鏈路應用加流控

並且具體的的緩存實現方式也頗有意思,看Guava的cache實現,使用了FutureTask的形式,這個設計四高一優化

相關文章
相關標籤/搜索