亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2018-09-10 06:17:18馬漢
        計算機(jī)與網(wǎng)絡(luò) 2018年22期
        關(guān)鍵詞:命中率數(shù)據(jù)源數(shù)據(jù)庫

        馬漢

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

        1.為什么需要緩存

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

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

        2.那使用緩存會遇到哪些問題呢

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

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

        緩存的過期時間問題:

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

        緩存的命中率問題:

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

        緩存的穿透/雪崩問題:

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

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

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

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

        Cache Aside模式

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

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

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

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

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

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

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

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

        Read/Write Through模式

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

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

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

        Write Behind模式

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

        流程如下:

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

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

        猜你喜歡
        命中率數(shù)據(jù)源數(shù)據(jù)庫
        夜夜“奮戰(zhàn)”會提高“命中率”嗎
        2015男籃亞錦賽四強(qiáng)隊三分球進(jìn)攻特點的比較研究
        長江叢刊(2018年31期)2018-12-05 06:34:20
        Web 大數(shù)據(jù)系統(tǒng)數(shù)據(jù)源選擇*
        投籃的力量休斯敦火箭
        NBA特刊(2017年8期)2017-06-05 15:00:13
        基于不同網(wǎng)絡(luò)數(shù)據(jù)源的期刊評價研究
        數(shù)據(jù)庫
        財經(jīng)(2017年2期)2017-03-10 14:35:35
        數(shù)據(jù)庫
        財經(jīng)(2016年15期)2016-06-03 07:38:02
        數(shù)據(jù)庫
        財經(jīng)(2016年3期)2016-03-07 07:44:46
        數(shù)據(jù)庫
        財經(jīng)(2016年6期)2016-02-24 07:41:51
        基于真值發(fā)現(xiàn)的沖突數(shù)據(jù)源質(zhì)量評價算法
        国产V日韩V亚洲欧美久久| 青青草原亚洲| 久久精品噜噜噜成人| 欧美一级欧美一级在线播放| 中文字幕亚洲综合久久| 成人性生交大片免费看l| 国产a级三级三级三级| 洗澡被公强奷30分钟视频| 亚洲另类激情综合偷自拍图| 国产在线观看免费不卡视频| 国产免费av手机在线观看片| 日夜啪啪一区二区三区| 草莓视频一区二区精品| 女同av免费在线播放| 精品人妻久久一区二区三区| 亚洲啪av永久无码精品放毛片| 亚洲h视频| 久久亚洲精品国产精品婷婷| 日本亚洲视频一区二区三区| 亚洲一卡2卡3卡4卡5卡精品| 亚洲免费不卡| 久久婷婷夜色精品国产| 偷拍偷窥女厕一区二区视频| 97在线观看| 2021国产精品久久| 亚洲天堂av高清在线| 少妇高潮太爽了在线视频| 日韩人妻无码一区二区三区久久99| 一区欧美在线动漫| 精品精品国产三级av在线| 久久久无码精品亚洲日韩蜜臀浪潮| 两个黑人大战嫩白金发美女| 亚洲高清在线观看免费视频| 青青草视频在线观看色| 国产操逼视频| 国产精品视频一区日韩丝袜| 中文字幕亚洲高清精品一区在线| 国产成人精品无码一区二区三区 | 久久成人黄色免费网站| 国产精品专区第一页天堂2019| 狠狠噜天天噜日日噜视频麻豆|