帶你認識分佈式緩存



當你知道的越多, 你不知道的也越多.

什麼是緩存?

在維基百科中這樣解釋: 緩存是存儲在計算機上的一個原始數據複製集, 以便於訪問.

其實緩存隨處可見, 比如CPU緩存, 瀏覽器緩存等等, 不管存在何處, 其目的都是唯一的提高訪問的性能. 在本篇文章中我們的重點將放在分佈式緩存中, 並且會介紹在分佈式緩存中使用到的一些緩存技術, 大致可以分爲兩類: 平臺級緩存以及應用級緩存

在這裏插入圖片描述
上面的一張圖便是一個很經典的多級緩存案例, 在圖中nginx服務的緩存以及tomcat的緩存都可以理解爲是本地緩存或者說叫平臺級緩存, 而 redis便是應用級的緩存.

緩存的訪問順序依次是, 用戶首先通過負載均衡服務將請求分發到對應的Nginx應用中, 並且首先從nginx應用緩存中尋找請求的內容, 如果找到便返回響應, 如果找不到繼續再由nginx將請求轉發到tomcat集羣中的一臺tomcat服務上, 再從tomcat本地緩存中獲取請求內容,如果找到便返回響應, 如果找不到, 繼續從Redis緩存中查找請求內容, 如果依舊找不到, 纔會去數據庫中查找, 當從數據庫中查詢到數據之後, 返回響應, 隨後更新緩存中的數據.

從用戶訪問的順序來區分的話, 上述圖分爲三級緩存, 爲什麼要採取多級緩存? 使用緩存的目的是爲了提高性能, 但是在使用緩存的時候又有這一系列的問題, 如果你併發比較高, 很容易發生緩存擊穿, 緩存穿透, 緩存雪崩等等問題, 一旦緩存出現問題, 會導致緩存不可用, 所有請求會直接落到數據庫上, 發生不可預估的問題. 所以多級緩存主要是爲了提高緩存的可用性.

下面我們簡單總結一下緩存都有哪些:

  • 平臺式:
    • Ehcache
    • Guava Cache
  • 集中式
    • Memecached
    • Redis
    • Tair
    • EVCache
    • Aerospike

這麼多緩存的實現原理、實現機制以及應用場景也是不太相同的, 但是有一點可以肯定的就是, 不管什麼緩存, 它保存的數據是具有一定的時效性的, 緩存裏面的數據會不斷的被更新替換刪除. 那緩存更新刪除的策略又有哪幾種呢? 一下便是常用的幾種:

  • FIFO: 根據數據的寫入時間, 數據先進先出
  • LUF: 最少被使用, 最少使用的數據會被清空
  • LRU: 最近最少使用, 根據時間戳以及使用清空進行清空
  • Lazy Expiration: 惰性刪除, 緩存被命中之後, 去判斷是否要清空

下面我們在分別介紹一下上述幾種緩存



Ehcache

在這裏插入圖片描述

Guava Cache

在這裏插入圖片描述

Memecached

在這裏插入圖片描述

Tair

在這裏插入圖片描述

EVCache

在這裏插入圖片描述

Aerospike

在這裏插入圖片描述

Redis

這一部分涉及較多內容,大家可以訪問這裏查看: Redis彙總

以上便是對幾種緩存的介紹, 因爲很多優秀的網友總結的比較詳細, 所以我沒有再重複的總結

參考文獻

https://www.jianshu.com/p/8d843d7a6a27
https://www.jdon.com/47913
https://www.jianshu.com/p/ccb17daed766
https://blog.csdn.net/zhaohong_bo/article/details/91801997
https://www.jianshu.com/p/154c82073b07
https://segmentfault.com/a/1190000011105644
《深入分佈式緩存 從原理到實踐》 —於君澤、曹洪偉等著名

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章