緩存更新策略:怎樣使用主流緩存更新策略來(lái)減少服務(wù)器性能消耗?
【溫馨提醒】文章內(nèi)容僅供參考,海外服務(wù)器租用\托管方案,請(qǐng)咨詢YINGSOO客服,24小時(shí)免費(fèi)電話400-630-3752
【熱門主機(jī)】韓國(guó)站群服務(wù)器丨美國(guó)站群服務(wù)器丨香港站群服務(wù)器丨韓國(guó)站群服務(wù)器
【熱搜問(wèn)題】站群服務(wù)器選哪個(gè)節(jié)點(diǎn)更合適?性價(jià)比之王非它莫屬!
在互聯(lián)網(wǎng)項(xiàng)目開(kāi)發(fā)中,緩存的應(yīng)用是非常普遍了,緩存可以幫助頁(yè)面提高加載速度,減少服務(wù)器或數(shù)據(jù)源的負(fù)載。
一、為什么需要緩存?
一般在項(xiàng)目中,最消耗性能的地方就是后端服務(wù)的數(shù)據(jù)庫(kù)了。而數(shù)據(jù)庫(kù)的讀寫頻率常常都是不均勻分布的,大多情況是讀多寫少,并且讀操作(select)還會(huì)有一些復(fù)雜的判斷條件,比如like、group、join等等,這些語(yǔ)法是非常消耗性能的,所以會(huì)出現(xiàn)很多的慢查詢,因此數(shù)據(jù)庫(kù)很容易在讀操作的環(huán)節(jié)遇到瓶頸。
那么通過(guò)在數(shù)據(jù)庫(kù)前面,前置一個(gè)緩存服務(wù),就可以有效的吸收不均勻的請(qǐng)求,抵擋流量波峰。
另外,如果應(yīng)用與數(shù)據(jù)源不在同一個(gè)服務(wù)器,中間還會(huì)有很多的網(wǎng)絡(luò)消耗,也會(huì)對(duì)應(yīng)用的響應(yīng)速度有很大影響,如果當(dāng)前應(yīng)用對(duì)數(shù)據(jù)實(shí)時(shí)性的要求不那么強(qiáng)的話,在應(yīng)用側(cè)加上緩存就能很快速地提升效率。
二、使用緩存會(huì)遇到哪些問(wèn)題?
雖然緩存可以提高整體性能,但是它也可能會(huì)帶來(lái)別的問(wèn)題。
例如使用緩存之后,就相當(dāng)于把數(shù)據(jù)存放了2份,一份是在數(shù)據(jù)庫(kù)中,另一份存放在緩存中。當(dāng)有新的數(shù)據(jù)要寫入或者舊數(shù)據(jù)需要更新的時(shí)候,如果我們只更新了其中一份數(shù)據(jù)源,那兩邊的數(shù)據(jù)就不一致了。所以這里就存在一個(gè)緩存數(shù)據(jù)與數(shù)據(jù)庫(kù)數(shù)據(jù)如何進(jìn)行有效且快速的同步才可以保證數(shù)據(jù)最終一致性的問(wèn)題。
另外,加上緩存服務(wù)其實(shí)也引入了系統(tǒng)架構(gòu)的復(fù)雜度,因?yàn)檫€需要額外的關(guān)注緩存自身帶來(lái)的下列問(wèn)題:
1、緩存的過(guò)期時(shí)間問(wèn)題
設(shè)計(jì)緩存的過(guò)期時(shí)間非常需要有技巧,且必須與業(yè)務(wù)實(shí)際情況相結(jié)合。因?yàn)槿绻O(shè)計(jì)的過(guò)期時(shí)間太短了,那會(huì)導(dǎo)致緩存效果不佳,而且還會(huì)造成頻繁的從數(shù)據(jù)庫(kù)中往緩存里寫數(shù)據(jù);如果緩存設(shè)計(jì)的過(guò)期時(shí)間太長(zhǎng)了,又會(huì)導(dǎo)致內(nèi)存的浪費(fèi)。
2、緩存的命中率問(wèn)題
這也是設(shè)計(jì)緩存中需要存放哪些數(shù)據(jù)的很重要一點(diǎn)。如果設(shè)計(jì)的不好,可能會(huì)導(dǎo)致緩存命中率過(guò)低,失去緩存效果。一般對(duì)于熱點(diǎn)數(shù)據(jù)而言,要保證命中率達(dá)到[澳大利亞服務(wù)器租用]70%以上效果最佳。
3、緩存的穿透/雪崩問(wèn)題
穿透/雪崩問(wèn)題是指如果緩存服務(wù)一旦宕機(jī)或全部丟失,那么有可能一瞬間所有的流量都直接打到了后端數(shù)據(jù)庫(kù)上,可能會(huì)造成連鎖反應(yīng),瞬間的請(qǐng)求高峰極有可能導(dǎo)致數(shù)據(jù)庫(kù)無(wú)法承載。
三、緩存的更新策略具體有哪些?
典型的緩存模式,一般有如下幾種:
cache Aside;
Read/write through;
write behind。
每種模式都有不同的特點(diǎn),適用于不同的項(xiàng)目場(chǎng)景,下面來(lái)依次看看:
1、cache Aside模式
這是大家經(jīng)常用到的一種策略模式。這種模式主要流程如下:
應(yīng)用在查詢數(shù)據(jù)的時(shí)候,先從緩存cache中讀取數(shù)據(jù),如果緩存中沒(méi)有,則再?gòu)臄?shù)據(jù)庫(kù)中讀取數(shù)據(jù),得到數(shù)據(jù)庫(kù)的數(shù)據(jù)之后,將這個(gè)數(shù)據(jù)也放到緩存cache中;
如果應(yīng)用要更新某個(gè)數(shù)據(jù),也是先去更新數(shù)據(jù)庫(kù)中的數(shù)據(jù),更新完成之后,則通過(guò)指令讓緩存cache中的數(shù)據(jù)失效。
這里為什么不讓更新操作在寫完數(shù)據(jù)庫(kù)之后,緊接著去把緩存cache中的數(shù)據(jù)也修改了呢?
主要是因?yàn)檫@樣做的話,就有2個(gè)寫操作的事件了,擔(dān)心在并發(fā)的情況下會(huì)導(dǎo)致臟數(shù)據(jù),舉個(gè)例子:
假如同時(shí)有2個(gè)請(qǐng)求(請(qǐng)求A和請(qǐng)求b)并發(fā)的執(zhí)行。請(qǐng)求A是要去讀數(shù)據(jù),請(qǐng)求b是要去更新數(shù)據(jù)。初始狀態(tài)緩存中是沒(méi)有數(shù)據(jù)的,當(dāng)請(qǐng)求A讀到數(shù)據(jù)之后,準(zhǔn)備往回寫的時(shí)候,此刻,請(qǐng)求b正好要更新數(shù)據(jù),更新完了數(shù)據(jù)庫(kù)之后,又去把緩存更新了,那請(qǐng)求A再往緩存中寫的就是舊數(shù)據(jù)了,屬于臟數(shù)據(jù)。
那么cache Aside模式就沒(méi)有臟數(shù)據(jù)問(wèn)題了嗎?不是的,在極端情況下也可能會(huì)產(chǎn)生臟數(shù)據(jù),比如:
假如同時(shí)有2個(gè)請(qǐng)求(請(qǐng)求A和請(qǐng)求b)并發(fā)的執(zhí)行。請(qǐng)求A是要去讀數(shù)據(jù),請(qǐng)求b是要去寫數(shù)據(jù)。假如初始狀態(tài)緩存中沒(méi)有這個(gè)數(shù)據(jù),那請(qǐng)求A發(fā)現(xiàn)緩存中沒(méi)有數(shù)據(jù),就會(huì)去數(shù)據(jù)庫(kù)中讀數(shù)據(jù),讀到了數(shù)據(jù)準(zhǔn)備寫回緩存中,就在這個(gè)時(shí)候,請(qǐng)求b是要去寫數(shù)據(jù)的,請(qǐng)求b在寫完數(shù)據(jù)庫(kù)的數(shù)據(jù)之后,又去設(shè)置了緩存失效。這個(gè)時(shí)候,請(qǐng)求A由于在數(shù)據(jù)庫(kù)中讀到了之前的舊數(shù)據(jù),開(kāi)始往緩存中寫數(shù)據(jù)了,此時(shí)寫進(jìn)入的就也是舊數(shù)據(jù)。那么最終就會(huì)導(dǎo)致,緩存中的數(shù)據(jù)與數(shù)據(jù)庫(kù)的數(shù)據(jù)不一致,造成了臟數(shù)據(jù)。
不過(guò)這種概率比上面一種概率要小很多。所以整體而言cache Aside模式還是一種比較簡(jiǎn)單實(shí)用的方式。
2、Read/write through模式
這個(gè)模式其實(shí)就是將緩存服務(wù)作為主要的存儲(chǔ),應(yīng)用的所有讀寫請(qǐng)求都是直接與緩存服務(wù)打交道,而不管最后端的數(shù)據(jù)庫(kù)了,數(shù)據(jù)庫(kù)的數(shù)據(jù)由緩存服務(wù)來(lái)維護(hù)和更新。不過(guò)緩存中數(shù)據(jù)變更的時(shí)候是同步去更新數(shù)據(jù)庫(kù)的,在應(yīng)用的眼中只有緩存服務(wù)。
流程就相當(dāng)簡(jiǎn)單了:
應(yīng)用要讀數(shù)據(jù)和更新數(shù)據(jù)都直接訪問(wèn)緩存服務(wù);
緩存服務(wù)同步的將數(shù)據(jù)更新到數(shù)據(jù)庫(kù)。
這個(gè)模式出現(xiàn)臟數(shù)據(jù)的概率就比較低,但是就強(qiáng)依賴緩存了,對(duì)緩存服務(wù)的穩(wěn)定性有較大要求。另外,增加新緩存節(jié)點(diǎn)時(shí)還會(huì)有初始狀態(tài)空數(shù)據(jù)問(wèn)題。
3、write behind模式
這個(gè)模式就是Read/write through模式的一個(gè)變種。區(qū)別就是Read/write through模式的緩存寫數(shù)據(jù)庫(kù)的時(shí)候是同步的,而write[服務(wù)器租用美國(guó)高防] behind模式的緩存操作數(shù)據(jù)庫(kù)是異步的。
流程如下:
應(yīng)用要讀數(shù)據(jù)和更新數(shù)據(jù)都直接訪問(wèn)緩存服務(wù);
緩存服務(wù)異步的將數(shù)據(jù)更新到數(shù)據(jù)庫(kù)(通過(guò)異步任務(wù))。
這個(gè)模式的特點(diǎn)就是速度很快,效率會(huì)非常高,但是數(shù)據(jù)的一致性比較差,還可能會(huì)有數(shù)據(jù)丟失的情況,實(shí)現(xiàn)邏輯也較為復(fù)雜。
以上就是目前三種主流的緩存更新策略,另外還有Refrsh-Ahead模式等由于使用的不是很常見(jiàn)就不詳細(xì)介紹了。
緩存是互聯(lián)網(wǎng)項(xiàng)目中非常普遍的一個(gè)提高效率的方案,用法比較多,也比較關(guān)鍵,大家可以一起交流。
本公司九年的idc運(yùn)營(yíng)經(jīng)驗(yàn),托管全球國(guó)內(nèi)外服務(wù)器租用托管、機(jī)柜租用、帶寬租用、虛擬主機(jī)、云主機(jī)、cdn等業(yè)務(wù),同時(shí)提供高防服務(wù)器安全服務(wù),歡迎廣大客戶來(lái)電咨詢。
什么因素會(huì)影響香港服務(wù)器的穩(wěn)定性
[香港主機(jī)哪個(gè)好] 所租用的服務(wù)器的穩(wěn)定性的好壞,會(huì)直接影響到網(wǎng)站的穩(wěn)定性,從而影響到網(wǎng)站的排名。所租用的香港服務(wù)器不穩(wěn)定,會(huì)直接導(dǎo)致網(wǎng)站服務(wù)中斷,進(jìn)而造成網(wǎng)站的排名下降。嚴(yán)重的時(shí)候會(huì)直接導(dǎo)致網(wǎng)站被K站處理。那么香港服務(wù)器的穩(wěn)定主要受哪些因素影響呢?
1、數(shù)據(jù)中心環(huán)境
服務(wù)器是需要存放在數(shù)據(jù)中心的,數(shù)據(jù)中心的環(huán)境會(huì)直接影響到服務(wù)器的穩(wěn)定性的。一般情況下,數(shù)據(jù)中心都是具備完善的制度,以此來(lái)保障服務(wù)器能夠長(zhǎng)時(shí)間的持續(xù)運(yùn)行的。一般都會(huì)配有各類硬件設(shè)備,例如發(fā)電組、恒溫蛇擺、自動(dòng)滅火裝置,來(lái)去避免一些引起服務(wù)器無(wú)法正常運(yùn)行的因素。
2、線路
不同線路,會(huì)使網(wǎng)絡(luò)的穩(wěn)定性受到一定的影響。如果因?yàn)閹挷蛔慊蛘呔€路的問(wèn)題。都是會(huì)直接影響到服務(wù)器的穩(wěn)定運(yùn)行的。由于香港地區(qū)的國(guó)際線路資源還是比較多的,大多是國(guó)際的BGP線路。所以在選擇香港服務(wù)器時(shí),選擇BGP[身臨其境了解跨國(guó)公司頂級(jí)數(shù)據(jù)中心]線路穩(wěn)定性都還是比較好的。
3、網(wǎng)絡(luò)攻擊問(wèn)題
網(wǎng)絡(luò)攻擊也是一個(gè)影響服務(wù)器穩(wěn)定性的一個(gè)因素,配置資源充足的服務(wù)器,在遇到網(wǎng)絡(luò)攻擊時(shí),特別是DDOS攻擊,這一類流量攻擊,就算擁有比較充足的帶寬,服務(wù)器的穩(wěn)定性還是會(huì)受到一定的影響。所以通常面對(duì)比較容易遭受網(wǎng)絡(luò)攻擊類的行業(yè),在選擇服務(wù)器時(shí),可以盡量選擇具備高防御的香港服務(wù)器,這樣的話,即使存在攻擊,也不會(huì)對(duì)自己的業(yè)務(wù)帶來(lái)比較大的影響。
YINGSOO:www.sddonglingsh.com
熱門文章:【vps日本節(jié)點(diǎn)】【國(guó)外高防服務(wù)器推薦選韓國(guó)嗎】【什么是虛擬主機(jī)】【云服務(wù)器怎么樣】【德國(guó)vps】【香港服務(wù)器免備案是合法的嗎】【互聯(lián)網(wǎng)網(wǎng)站】【判斷服務(wù)器攻擊情況】【韓國(guó)快速穩(wěn)定服務(wù)器推薦】【國(guó)抗攻擊服務(wù)器是怎樣的】【游戲直播服務(wù)器】【廣州移動(dòng)】【俄羅斯服務(wù)器】【租用服務(wù)器多少錢】【國(guó)外高配置服務(wù)器如何選】【服務(wù)器集群】【云服務(wù)器是什么意思】【云寬帶】【服務(wù)器租用商】【國(guó)外CDN節(jié)點(diǎn)】【穩(wěn)定香港服務(wù)器租用的一些小問(wèn)題】【云服務(wù)器帶寬如何計(jì)算】【香港vps哪家好】【聚美優(yōu)品】【浙江服務(wù)器租用】【服務(wù)器托管前后應(yīng)該注意哪些問(wèn)題】【企業(yè)BGP服務(wù)器】【香港帶寬】【游戲高防cdn】【國(guó)外高防服務(wù)器哪家的好】
YINGSOO臺(tái)灣試用主機(jī)優(yōu)惠中!介紹新客戶,返現(xiàn)16%!
9年臺(tái)灣試用主機(jī)服務(wù)商,超過(guò)1200家企業(yè)共同選擇,五星機(jī)房品質(zhì),帶控制臺(tái).立即申請(qǐng)臺(tái)灣試用主機(jī)3天免費(fèi)試用,,專業(yè)數(shù)據(jù)災(zāi)備方案,24小時(shí)貼心服務(wù)
http://www.sddonglingsh.com/products/cloud-tw.html
YINGSOO日本租賃主機(jī)3天免費(fèi)試用,海外云主機(jī)品牌
好網(wǎng)絡(luò),不怕曬!日本租賃主機(jī)免費(fèi)試用,獨(dú)享控制面板,海外云服務(wù)品牌2019年日本租賃主機(jī)銷量再度破表,1200家企業(yè)共同選擇,高達(dá)95%的續(xù)約率
http://www.sddonglingsh.com/products/cloud-jp.html
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。