91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解決服務器端緩存失效的問題

發布時間:2021-09-24 17:43:15 來源:億速云 閱讀:167 作者:iii 欄目:建站服務器

這篇文章主要講解了“如何解決服務器端緩存失效的問題”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“如何解決服務器端緩存失效的問題”吧!

緩存失效情況舉例
看下這個段偽代碼:

代碼如下:


local value = get_from_cache(key)
if not value then
   value = query_db(sql)
   set_to_cache(value, timeout = 100)
end
return value


看上去沒有問題,在單元測試情況下,也不會有異常。
但是,進行壓力測試的時候,你會發現,每隔100秒,數據庫的查詢就會出現一次峰值。如果你的cache失效時間設置的比較長,那么這個問題被發現的機率就會降低。
為什么會出現峰值呢?想象一下,在cache失效的瞬間,如果并發請求有1000條同時到了 query_db(sql) 這個函數會怎樣?沒錯,會有1000個請求打向數據庫。這就是緩存失效瞬間引起的風暴。它有一個英文名,叫 "dog-pile effect"。
怎么解決?自然的想法是發現緩存失效后,加一把鎖來控制數據庫的請求。具體的細節,春哥在lua-resty-lock的文檔里面做了詳細的說明,我就不重復了,請看這里。多說一句,lua-resty-lock庫本身已經替你完成了wait for lock的過程,看代碼的時候需要注意下這個細節。

傳統緩存失效應對策略
為了提高業務訪問速度,提升業務讀并發,很多用戶都會在業務架構中引入緩存層。業務所有讀請求全部路由到緩存層,通過緩存的內存讀取機制大大提升業務讀取性能。緩存中的數據不能持久化 ,一旦緩存異常退出,那么內存中的數據就會丟失,所以為了保證數據完整,業務的更新數據會落地到持久化存儲中,例如DB。目前云用戶的業務架構一般如下圖:
如何解決服務器端緩存失效的問題

在上圖中,大家可以看到,用戶的更新數據直接持久化到DB, 業務讀請求直接請求緩存數據,所以業務需要解決緩存失效問題,即解決因為數據變更導致緩存中的數據失效的問題。 目前業務解決緩存失效問題的解決方法一般是業務實現DB、緩存雙寫。通過業務雙寫解決緩存失效,存在如下的問題:
代碼侵入性比較強,需要雙寫兩份存儲,任何對DB的數據變更,都需要同時更新緩存,代碼層面后期可維護程度不高
用戶請求線程里同步調用緩存,對緩存存在強以來,遇到緩存超時等異常時,沒有辦法做到有效的重試,遇到異常給用戶返回系統錯誤、操作失敗等信息,嚴重影響用戶體驗
用戶請求線程里同步完成DB、緩存雙寫,變更請求鏈路長,訪問延遲大,影響用戶體驗
RDS數據訂閱消費,輕松解決緩存失效
在阿里巴巴內部同樣也遇到了緩存失效的問題,隨著業務架構得不斷調整優化,我們已經沉淀出一套高可靠、極優雅得緩存失效架構。即通過數據傳輸提供的數據訂閱功能,異步獲取DB(例如公共云上的RDS)的增量數據,根據增量數據進行緩存失效。具體的架構類似下圖:
如何解決服務器端緩存失效的問題

在這個架構里面,緩存更新流程如下:
1.業務完成DB更新后即返回請求
2.數據訂閱通過日志解析方式實時解析并訂閱DB的增量更新數據,當發現DB有數據更新時,將增量數據推送給下游消費者
3.下游消費業務一旦接收到增量更新數據,即調用消費線程進行緩存更新
至此完成整個緩存更新過程。
從上面的緩存失效流程,可以看出這種緩存失效機制:
1.更新路徑短,延遲低: 緩存失效為異步流程,業務更新DB完成后直接返回,不需要關心緩存失效流程,整個更新路徑短,更新延遲低
2.應用簡單可靠:應用無需實現復雜雙寫邏輯,只需啟動異步線程監聽增量數據,更新緩存數據即可
3.應用更新無性能消耗:因為數據訂閱是通過解析DB的增量日志來獲取增量數據,獲取數據的過程對業務、DB性能無損

感謝各位的閱讀,以上就是“如何解決服務器端緩存失效的問題”的內容了,經過本文的學習后,相信大家對如何解決服務器端緩存失效的問題這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

伊金霍洛旗| 屏山县| 永寿县| 潢川县| 施秉县| 宝鸡市| 密山市| 连南| 罗江县| 江阴市| 四会市| 台东市| 宣武区| 渝中区| 桃江县| 宽城| 泸溪县| 昌江| 伊金霍洛旗| 浠水县| 江津市| 重庆市| 花垣县| 同仁县| 万荣县| 青川县| 上犹县| 保山市| 岳普湖县| 山阳县| 黔南| 阳朔县| 龙南县| 墨玉县| 磴口县| 克拉玛依市| 青神县| 科技| 衡阳县| 红桥区| 盐源县|