您好,登錄后才能下訂單哦!
本篇內容主要講解“Java緩存架構設計常見問題有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Java緩存架構設計常見問題有哪些”吧!
1 分層緩存架構設計
2 緩存帶來的復雜度問題
常見的問題主要包括
數據一致性
緩存穿透
緩存雪崩
緩存高可用
緩存熱點 下面逐一介紹分析這些問題以及相應的解決方案。
數據一致性
因為緩存屬于持久化數據的一個副本,因此不可避免的會出現數據不一致問題。導致臟讀或讀不到數據的情況。數據不一致,一般是因為網絡不穩定或節點故障導致
問題出現的常見3個場景以及解決方案:
緩存穿透
緩存一般是Key,value方式存在,當某一個Key不存在時會查詢數據庫,假如這個Key,一直不存在,則會頻繁的請求數據庫,對數據庫造成訪問壓力。
主要解決方案:
對結果為空的數據也進行緩存,當此key有數據后,清理緩存
一定不存在的key,采用布隆過濾器,建立一個大的Bitmap中,查詢時通過該bitmap過濾
緩存雪崩
緩存高可用
緩存是否高可用,需要根據實際的場景而定,并不是所有業務都要求緩存高可用,需要結合具體業務,具體情況進行方案設計,例如臨界點是是否對后端的數據庫造成影響。
主要解決方案:
分布式:實現數據的海量緩存
復制:實現緩存數據節點的高可用
緩存熱點
一些特別熱點的數據,高并發訪問同一份緩存數據,導致緩存服務器壓力過大。
解決:復制多份緩存副本,把請求分散到多個緩存服務器上,減輕緩存熱點導致的單臺緩存服務器壓力
3 業界案例
案例主要參考新浪微博陳波的技術分享
技術挑戰
Feed緩存架構圖
架構特點
新浪微博把SSD應用在分布式緩存場景中,將傳統的Redis/MC + Mysql方式,擴展為 Redis/MC + SSD Cache + Mysql方式,SSD Cache作為L2緩存使用,第一降低了MC/Redis成本過高,容量小的問題,也解決了穿透DB帶來的數據庫訪問壓力
迎工作一到五年的Java工程師朋友們加入Java架構開發:860113481
群內提供免費的Java架構學習資料(里面有高可用、高并發、高性能及分布式、Jvm性能調優、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!
主要在數據架構、性能、儲存成本、服務化等不同方面進行了優化增強
到此,相信大家對“Java緩存架構設計常見問題有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。