999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

緩存服務(wù)的更新策略有哪些

2018-09-10 06:17:18馬漢
關(guān)鍵詞:數(shù)據(jù)庫服務(wù)設(shè)計(jì)

馬漢

在互聯(lián)網(wǎng)項(xiàng)目開發(fā)中,緩存的應(yīng)用是非常普遍的,緩存可以幫助頁面提高加載速度,減少服務(wù)器或數(shù)據(jù)源的負(fù)載。

1.為什么需要緩存

一般在項(xiàng)目中,最消耗性能的地方就是后端服務(wù)的數(shù)據(jù)庫。而數(shù)據(jù)庫的讀寫頻率常常都是不均勻分布的,大多情況是讀多寫少,并且讀操作還會(huì)有一些復(fù)雜的判斷條件,比如like,group,join等。這些語法是非常消耗性能的,所有會(huì)出現(xiàn)很多的慢查詢,因此數(shù)據(jù)庫很容易在讀操作的環(huán)節(jié)遇到瓶頸。通過在數(shù)據(jù)庫前面,前置一個(gè)緩存服務(wù),就可以有效的吸收不均勻的請求,抵擋流量波峰。

另外,如果應(yīng)用與數(shù)據(jù)源不在同一個(gè)服務(wù)器的情況下,中間還會(huì)有很多的網(wǎng)絡(luò)消耗,也會(huì)對應(yīng)用的響應(yīng)速度有很大影響,如果當(dāng)前應(yīng)用對數(shù)據(jù)實(shí)時(shí)性的要求不那么強(qiáng)的話,在應(yīng)用側(cè)加上緩存就能很快速地提升效率。

2.那使用緩存會(huì)遇到哪些問題呢

雖然緩存可以提高整體性能,但是它也可能會(huì)帶來別的問題。例如使用緩存之后,就相當(dāng)于把數(shù)據(jù)存放了2份,一份是在數(shù)據(jù)庫中,另一份存放在緩存中。當(dāng)有新的數(shù)據(jù)要寫入或者舊數(shù)據(jù)需要更新的時(shí)候,如果我們只更新了其中一份數(shù)據(jù)源,那兩邊的數(shù)據(jù)就不一致了,所以這里就存在一個(gè)緩存數(shù)據(jù)與數(shù)據(jù)庫數(shù)據(jù)如何進(jìn)行有效且快速的同步問題,才可以保證數(shù)據(jù)的最終一致性。

另外,加上緩存服務(wù)其實(shí)也引入了系統(tǒng)架構(gòu)的復(fù)雜度,因?yàn)檫€需要額外的關(guān)注緩存自身帶來的下列問題:

緩存的過期時(shí)間問題:

設(shè)計(jì)緩存的過期時(shí)間需要非常的有技巧,且必須與業(yè)務(wù)實(shí)際情況相結(jié)合。因?yàn)槿绻O(shè)計(jì)的過期時(shí)間太短了,會(huì)導(dǎo)致緩存效果不佳,且還會(huì)造成頻繁的從數(shù)據(jù)庫中往緩存里寫數(shù)據(jù),如果緩存設(shè)計(jì)的過期時(shí)間太長了,又會(huì)導(dǎo)致內(nèi)存的浪費(fèi)。

緩存的命中率問題:

這是設(shè)計(jì)緩存中需要存放哪些數(shù)據(jù)的很重要一點(diǎn),如果設(shè)計(jì)的不好,可能會(huì)導(dǎo)致緩存命中率過低,失去緩存效果。一般對于熱點(diǎn)數(shù)據(jù)而言,要保證命中率達(dá)到70 %以上效果最佳。

緩存的穿透/雪崩問題:

是指如果緩存服務(wù)一旦宕機(jī)或全部丟失,那么有可能一瞬間所有的流量都直接打到了后端數(shù)據(jù)庫上,可能會(huì)造成連鎖反應(yīng),瞬間的請求高峰極有可能導(dǎo)致數(shù)據(jù)庫無法承載。

3.緩存的更新策略具體有哪些

典型的緩存模式,一般有如下幾種:

Cache Aside,Read/Write Through和Write Behind每種模式都有不同的特點(diǎn),適應(yīng)不同的項(xiàng)目場景。

Cache Aside模式

這是經(jīng)常用到的一種策略模式,主要流程如下:

應(yīng)用在查詢數(shù)據(jù)的時(shí)候,先從緩存Cache中讀取數(shù)據(jù),如果緩存中沒有,則再從數(shù)據(jù)庫中讀取數(shù)據(jù),得到數(shù)據(jù)庫的數(shù)據(jù)之后,將這個(gè)數(shù)據(jù)也放到緩存Cache中。

如果應(yīng)用要更新某個(gè)數(shù)據(jù),也是先去更新數(shù)據(jù)庫中的數(shù)據(jù),更新完成之后,則通過指令讓緩存Cache中的數(shù)據(jù)失效。

這里為什么不讓更新操作在寫完數(shù)據(jù)庫之后,緊接著去把緩存Cache中的數(shù)據(jù)也修改了呢?主要是因?yàn)檫@樣做的話,就有2個(gè)寫操作的事件,在并發(fā)的情況下會(huì)導(dǎo)致臟數(shù)據(jù),舉個(gè)例子:

假如同時(shí)有2個(gè)請求,請求A和請求B,并發(fā)執(zhí)行。請求A是要去讀數(shù)據(jù),請求B是要去更新數(shù)據(jù)。初始狀態(tài)緩存中是沒有數(shù)據(jù)的,當(dāng)請求A讀到數(shù)據(jù)之后,準(zhǔn)備往回寫的時(shí)候,此刻,請求B正好要更新數(shù)據(jù),更新完了數(shù)據(jù)庫之后,又去把緩存更新了,那請求A往緩存中寫的就是舊數(shù)據(jù),屬于臟數(shù)據(jù)。

那么Cache Aside模式就沒有臟數(shù)據(jù)問題了嗎?不是的,在極端情況下也可能會(huì)產(chǎn)生臟數(shù)據(jù),比如:

假如同時(shí)有2個(gè)請求,請求A和請求B,并發(fā)執(zhí)行。請求A是要去讀數(shù)據(jù),請求B是要去寫數(shù)據(jù)。假如初始狀態(tài)緩存中沒有這個(gè)數(shù)據(jù),那請求A發(fā)現(xiàn)緩存中沒有數(shù)據(jù),就會(huì)去數(shù)據(jù)庫中讀數(shù)據(jù),讀到了數(shù)據(jù)準(zhǔn)備寫回緩存中,就在這個(gè)時(shí)候,請求B是要去寫數(shù)據(jù)的,請求B在寫完數(shù)據(jù)庫的數(shù)據(jù)之后,又去設(shè)置了緩存失效。這個(gè)時(shí)候,請求A由于在數(shù)據(jù)庫中讀到了之前的舊數(shù)據(jù),開始往緩存中寫數(shù)據(jù),此時(shí)寫進(jìn)入的就也是舊數(shù)據(jù)。那么最終就會(huì)導(dǎo)致,緩存中的數(shù)據(jù)與數(shù)據(jù)庫的數(shù)據(jù)不一致,造成了臟數(shù)據(jù)。

不過這種概率比上面一種概率要小很多,所以整體而言Cache Aside模式還是一種比較簡單實(shí)用的方式。

Read/Write Through模式

這個(gè)模式其實(shí)就是將緩存服務(wù)作為主要的存儲(chǔ),應(yīng)用的所有讀寫請求都是直接與緩存服務(wù)打交道,而不管最后端的數(shù)據(jù)庫,數(shù)據(jù)庫的數(shù)據(jù)由緩存服務(wù)來維護(hù)和更新。不過緩存中數(shù)據(jù)變更的時(shí)候是同步去更新數(shù)據(jù)庫的,在應(yīng)用的眼中只有緩存服務(wù)。

流程就相當(dāng)簡單了:

應(yīng)用要讀數(shù)據(jù)和更新數(shù)據(jù)都直接訪問緩存服務(wù),緩存服務(wù)同步的將數(shù)據(jù)更新到數(shù)據(jù)庫。這個(gè)模式出現(xiàn)臟數(shù)據(jù)的概率比較低,但是就強(qiáng)依賴緩存,對緩存服務(wù)的穩(wěn)定性有較大要求,另外增加新緩存節(jié)點(diǎn)時(shí)還會(huì)有初始狀態(tài)空數(shù)據(jù)問題。

Write Behind模式

這個(gè)模式就是Read/Write Through模式的一個(gè)變種。區(qū)別就是 Read/Write Through模式的緩存寫數(shù)據(jù)庫的時(shí)候是同步的,而Write Behind模式的緩存操作數(shù)據(jù)庫是異步的。

流程如下:

應(yīng)用要讀數(shù)據(jù)和更新數(shù)據(jù)都直接訪問緩存服務(wù),緩存服務(wù)異步的將數(shù)據(jù)更新到數(shù)據(jù)庫(通過異步任務(wù))。這個(gè)模式的特點(diǎn)就是速度很快,效率會(huì)非常高,但是數(shù)據(jù)的一致性比較差,還可能會(huì)有數(shù)據(jù)的丟失情況,實(shí)現(xiàn)邏輯也較為復(fù)雜。

以上就是目前三種主流的緩存更新策略,另外還有Refrsh-Ahead模式等由于不是很常見就不詳細(xì)介紹了。

猜你喜歡
數(shù)據(jù)庫服務(wù)設(shè)計(jì)
服務(wù)在身邊 健康每一天
服務(wù)在身邊 健康每一天
服務(wù)在身邊 健康每一天
瞞天過海——仿生設(shè)計(jì)萌到家
招行30年:從“滿意服務(wù)”到“感動(dòng)服務(wù)”
商周刊(2017年9期)2017-08-22 02:57:56
設(shè)計(jì)秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設(shè)計(jì)叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
主站蜘蛛池模板: 91精品啪在线观看国产91| 久草美女视频| 亚洲天堂日本| 欧美成人午夜在线全部免费| 久久无码高潮喷水| 亚洲不卡av中文在线| 亚洲色无码专线精品观看| 国产国产人成免费视频77777| 久久黄色一级视频| 成人午夜福利视频| 国产成人高清精品免费软件| 国产精品尤物在线| 在线一级毛片| 国产日韩精品一区在线不卡| 在线观看欧美国产| 91久草视频| 国产成人91精品免费网址在线| 国产成人精品视频一区视频二区| www.91在线播放| 亚洲欧美另类色图| 多人乱p欧美在线观看| 国产日本欧美在线观看| 日韩在线视频网| 精品国产成人三级在线观看| 国产在线观看99| 国产成人高清精品免费| 中文字幕免费在线视频| 欧洲精品视频在线观看| 国产精品视频观看裸模| 99人体免费视频| 在线色国产| 成人在线天堂| 国产免费高清无需播放器| 久久久久人妻一区精品色奶水| 亚洲精品成人片在线播放| 日韩午夜片| 成人噜噜噜视频在线观看| 日韩av无码DVD| 天天综合亚洲| 国产91精品久久| 欧美日本不卡| 国产h视频在线观看视频| 激情午夜婷婷| 国产手机在线ΑⅤ片无码观看| 九九热视频在线免费观看| 丁香综合在线| 久久久久久久蜜桃| 亚洲福利一区二区三区| 国产一区二区免费播放| 欧美一级在线看| 欧美日韩成人在线观看| 国产欧美视频在线观看| 伊人久久精品亚洲午夜| 午夜国产在线观看| 色综合中文字幕| 国产精品亚洲一区二区三区z| 亚洲成人精品久久| 高清精品美女在线播放| 日韩精品高清自在线| 亚洲一区二区日韩欧美gif| 亚洲国产精品成人久久综合影院| 国产成人精品免费av| 久久国产精品77777| 天堂亚洲网| 久久亚洲日本不卡一区二区| jizz在线观看| 日本免费精品| 亚洲无码精彩视频在线观看| 99ri精品视频在线观看播放| 在线a网站| 亚洲天堂久久| 高清欧美性猛交XXXX黑人猛交| 久久久久亚洲AV成人网站软件| 亚洲欧美人成人让影院| 999国内精品视频免费| 在线看国产精品| 91视频精品| 亚洲区第一页| 亚洲中久无码永久在线观看软件| 日韩成人在线视频| 国产日韩欧美视频| 亚洲最猛黑人xxxx黑人猛交|