緩存架構

架構師之路

緩存的目的是高性能、高併發

進程內緩存

架構師之路

一個帶鎖的Map或內存DB,列入leveldb

  • 進程內通信,效率高,但緩存大小受限
  • 每個服務實例中都緩存一份數據,緩存數據可能不一致

進程內緩存違背了分層架構無狀態原則,一般使用場景爲:數據量較少的只讀數據,允許數據不一致,極高併發下透傳後端壓力大的場景。 大部分情況應該使用緩存中間件,如redis。

緩存服務

石杉架構

redis基於主從讀寫分離實現高併發, 哨兵主備實現高可用

石杉架構

redis兩種備份方式:

  • RDB
  • AOF

石杉架構

淘汰緩存,而不是修改緩存

緩存數據可能是經過基礎數據組合計算而來的,修改基礎數據後,緩存數據可能並不會立馬訪問,也有可能修改多次基礎數據後才訪問緩存數據,所以修改緩存代價較高,應該淘汰緩存,而不是修改緩存。

架構師之路

Cache Aside Pattern

  • 讀時先讀緩存,緩存無在讀數據庫,取出後放入緩存並返回
  • 寫時先更新數據庫,後刪除緩存

Cache Aside Pathen也可能數據不一致,參考
架構師之路

緩存與數據庫不一致

緩存與數據庫不一致是有讀寫分離,主從數據不一致導致的。

架構師之路

主從不一致

架構師之路

  • 忽略
  • 強制讀主
  • 選擇性讀主
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章