高併發系統設計(三)緩存 未完

廣義上講,凡是位於速度相差較大的兩種硬件之間,用於協調二者數據傳輸速度差別的結構,都可稱之爲緩存
是一種常見的空間換時間的性能優化手段
算法

常見案例

  • Linux MMU 使用LTB來緩存最近虛擬地址和物理地址的映射。
  • 刷視頻預緩存下一個視頻
  • HTTP協議 ETag

緩存與緩衝區

緩存區是用於彌補高速設備和低速設備通訊時的速度差。一塊臨時存儲數據的區域,這些數據後面會一次性傳輸到其餘設備上數據庫

緩存分類

  • 靜態緩存
    HTML,對動態請求的數據無力。
  • 分佈式緩存
    Redis、Memcached
  • 熱點本地緩存
    極端的熱點數據查詢。 HashMap,Guava Cache

緩存的不足

系統複雜度、數據不一致、運維、內存有限,比較適合讀多寫少,數據帶有一點熱點屬性的業務場景後端

緩存的讀寫策略

  • Cache Aside 旁路緩存策略
    • 讀策略
      • 從緩存中讀取數據
      • 命中,直接返回
      • 不命中,從數據庫中查
      • 查後,數據寫入緩存,並返回給用戶
    • 寫策略
      • 更新數據庫中的記錄
      • 刪除緩存
        最經常使用,但當寫入比較頻繁時,緩存中的數據會被頻繁地清理。
  • Read/Write Through 讀穿/寫穿策略

由緩存節點而非用戶來和數據庫打交道,而且寫數據庫是同步的,對性能來講比較大影響緩存

  • Write Back 寫回策略
    在寫入數據時只寫入緩存,並把緩存塊標記爲「髒」,髒塊只有被再次使用時纔會將其中的數據寫回後端存儲中

分佈式緩存高可用方案

  • 客戶端方案
    • 緩存數據如何分片
      • Hash分片算法
        性能優化

      • 一致性Hash分片算法
        運維

    • Memcached的主從機制
    • 多副本
  • 中間代理層方案
    分佈式

  • 服務端方案
    ide

緩存穿透

緩存中沒有查到數據,不得不從後端系統中查詢的狀況。性能

相關文章
相關標籤/搜索