常见缓存架构原理
互聯網公司在緩存架構上是區分很大的,往往是根據企業的業務量來進行選擇的,可以看如下圖
在傳統的小型互聯網公司,采用網頁靜態化技術,freemarker來加快用戶的體驗速度,從來來提升響應,但是如果出現了緩存血崩,緩存擊穿那么對數據庫將會造成很大的壓力,可能導致整個架構無法使用
一 緩存擊穿
緩存穿透是指查詢一個一定不存在的數據,由于緩存是不命中時需要從數據庫查詢,查不到數據則不寫入緩存,這將導致這個不存在的數據每次請求都要到數據庫去查詢,造成緩存穿透,即使使用的es數據庫,那么當大量數據進來之后還是對內容數據庫壓力造成很多問題
解決方案:
1.布隆過濾
對所有可能查詢的參數以hash形式存儲,在控制層先進行校驗,不符合則丟棄。還有最常見的則是采用布隆過濾器,將所有可能存在的數據哈希到一個足夠大的bitmap中,一個一定不存在的數據會被這個bitmap攔截掉,從而避免了對底層存儲系統的查詢壓力。
補充:
Bloom filter
適用范圍:可以用來實現數據字典,進行數據的判重,或者集合求交集
基本原理及要點:對于原理來說很簡單,位數組+k個獨立hash函數。將hash函數對應的值的位數組置1,查找時如果發現所有ha
總結
- 上一篇: Python案例:使用XPath的爬虫
- 下一篇: OpenResty搭建高性能服务端