java緩存技術(shù)有哪些 用了緩存了,數(shù)據(jù)庫就沒問題了嗎?
用了緩存了,數(shù)據(jù)庫就沒問題了嗎?當(dāng)然不是。如果數(shù)據(jù)庫有問題,我們應(yīng)該根據(jù)系統(tǒng)對(duì)數(shù)據(jù)庫的讀寫壓力來決定。通常當(dāng)用戶達(dá)到一定水平后,我們會(huì)根據(jù)系統(tǒng)的業(yè)務(wù)特點(diǎn)進(jìn)行相應(yīng)的技術(shù)架構(gòu)調(diào)整和服務(wù)器擴(kuò)展。讓我簡單介紹
用了緩存了,數(shù)據(jù)庫就沒問題了嗎?
當(dāng)然不是。
如果數(shù)據(jù)庫有問題,我們應(yīng)該根據(jù)系統(tǒng)對(duì)數(shù)據(jù)庫的讀寫壓力來決定。
通常當(dāng)用戶達(dá)到一定水平后,我們會(huì)根據(jù)系統(tǒng)的業(yè)務(wù)特點(diǎn)進(jìn)行相應(yīng)的技術(shù)架構(gòu)調(diào)整和服務(wù)器擴(kuò)展。讓我簡單介紹一下常見的中小互聯(lián)網(wǎng)公司的數(shù)據(jù)擴(kuò)展過程。其過程大致如下:
單實(shí)例數(shù)據(jù)庫--->讀寫分離--->緩存服務(wù)--->多實(shí)例數(shù)據(jù)庫--->多實(shí)例緩存--->冷熱分離--->數(shù)據(jù)平臺(tái)沉淀--->分布式搜索引擎
當(dāng)然,這個(gè)過程不是很嚴(yán)謹(jǐn),但也很復(fù)雜非常粗糙。不同的業(yè)務(wù)系統(tǒng)需要不同的拆分和數(shù)據(jù)擴(kuò)展方法。有些人甚至喜歡使用服務(wù)器本身的內(nèi)存來緩存一些數(shù)據(jù)。這里只是一個(gè)簡單的解釋,當(dāng)系統(tǒng)給數(shù)據(jù)庫帶來壓力時(shí),我們應(yīng)該繼續(xù)做技術(shù)跟進(jìn)。當(dāng)然,隨著業(yè)務(wù)系統(tǒng)的發(fā)展,技術(shù)架構(gòu)往往是解耦的。技術(shù)架構(gòu)和業(yè)務(wù)架構(gòu)相輔相成。
這里是一個(gè)簡單的帖子,提供了一個(gè)常見的基本互聯(lián)網(wǎng)架構(gòu)圖:
如果您對(duì)系統(tǒng)架構(gòu)設(shè)計(jì)感興趣,請(qǐng)注意或查看我以前的答案。有信息共享。謝謝
cache breakdown
cache breakdown表示緩存中沒有用戶請(qǐng)求的數(shù)據(jù),但數(shù)據(jù)庫中有用戶請(qǐng)求的數(shù)據(jù)。此時(shí),如果并發(fā)用戶多,無法通過緩存獲取數(shù)據(jù),只能從數(shù)據(jù)庫中獲取數(shù)據(jù),數(shù)據(jù)庫壓力瞬間增大,系統(tǒng)訪問速度慢。
Cache avalanche
Cache avalanche是指大量的緩存數(shù)據(jù)同時(shí)過期,當(dāng)有大量的訪問時(shí),會(huì)導(dǎo)致數(shù)據(jù)庫壓力的增加和停機(jī)時(shí)間的增加。
cache avalanche和cache breakdown的區(qū)別是cache avalanche是指大量數(shù)據(jù)的過期,cache breakdown是指單個(gè)cache的過期
根本原因是系統(tǒng)在設(shè)計(jì)時(shí)沒有設(shè)計(jì)合理的cache系統(tǒng)
對(duì)于熱數(shù)據(jù),可以考慮將其設(shè)置為永不過期,并手動(dòng)處理熱數(shù)據(jù)
對(duì)于緩存數(shù)據(jù),設(shè)置過期時(shí)間是為了避免同時(shí)出現(xiàn)大量緩存數(shù)據(jù)失敗
我們可以考慮分布式配置緩存