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ù)庫
主站蜘蛛池模板: 四虎在线高清无码| 欧美特黄一级大黄录像| 特级做a爰片毛片免费69| 国产丝袜啪啪| 久久免费精品琪琪| 国产成人喷潮在线观看| 伊人无码视屏| 欧美日韩午夜| 久久伊人操| 亚洲清纯自偷自拍另类专区| 精品久久香蕉国产线看观看gif| 国产99视频精品免费视频7| 国产成人高清亚洲一区久久| 国产91av在线| 成人免费一级片| 国产微拍精品| 伊在人亚洲香蕉精品播放| 日韩成人午夜| 日本午夜影院| 97se亚洲综合不卡| 国产a在视频线精品视频下载| 亚洲一区波多野结衣二区三区| 免费人成又黄又爽的视频网站| 色悠久久久| 日韩精品一区二区三区免费在线观看| 国产91色在线| 手机在线国产精品| 天天综合色网| 视频二区国产精品职场同事| 日本91视频| 日本三级精品| 亚洲香蕉伊综合在人在线| 91丨九色丨首页在线播放| 国产欧美日韩专区发布| 日韩精品一区二区三区swag| 亚洲欧美另类色图| 日本影院一区| 自慰高潮喷白浆在线观看| 国产精品成人不卡在线观看| 国产成人永久免费视频| 亚洲成人黄色在线观看| 亚洲国产精品日韩av专区| 国产精品浪潮Av| 欧美激情综合| 女人18毛片水真多国产| 色综合久久无码网| 精品视频一区二区观看| 伊人激情综合网| 九九热精品视频在线| 国产噜噜在线视频观看| 免费A∨中文乱码专区| 亚洲小视频网站| 99久久精品无码专区免费| 亚洲无码视频图片| 国产屁屁影院| 久久青青草原亚洲av无码| 视频二区国产精品职场同事| 国产一级α片| 成人在线综合| 97久久免费视频| 尤物特级无码毛片免费| 国产十八禁在线观看免费| 99re热精品视频中文字幕不卡| 国产自产视频一区二区三区| 中文无码精品a∨在线观看| 91成人在线免费视频| 久久五月天国产自| 小13箩利洗澡无码视频免费网站| 亚洲精品在线影院| 久久夜夜视频| 中文字幕欧美日韩高清| 一本二本三本不卡无码| 91免费观看视频| 欧美国产日产一区二区| 99久久国产自偷自偷免费一区| 国产精品专区第1页| 91免费片| 人人妻人人澡人人爽欧美一区| 在线色国产| 一区二区三区四区日韩| 欧美不卡视频在线| 久久性妇女精品免费|