国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

緩存設(shè)計(jì):做好緩存設(shè)計(jì)的關(guān)鍵是什么?

存儲 數(shù)據(jù)管理
伴隨分布式以及云計(jì)算技術(shù)的不斷發(fā)展,數(shù)據(jù)存儲技術(shù)已然發(fā)生了天翻地覆般的變化。而且,不同的存儲技術(shù)在價格和性能方面均存在極大的差異。

緩存乃是一個用于臨時存儲數(shù)據(jù)的所在。當(dāng)用戶進(jìn)行數(shù)據(jù)查詢時,第一步便是在緩存中探尋,倘若找到了,便直接加以運(yùn)用;要是未找到,就需前往數(shù)據(jù)的初始位置尋覓。因而,緩存實(shí)質(zhì)上屬于一種以空間換取時間的技術(shù)手段,借由數(shù)據(jù)在空間層面的重復(fù),來加快數(shù)據(jù)的訪問速度。

不過,伴隨分布式以及云計(jì)算技術(shù)的不斷發(fā)展,數(shù)據(jù)存儲技術(shù)已然發(fā)生了天翻地覆般的變化。而且,不同的存儲技術(shù)在價格和性能方面均存在極大的差異。所以,在針對性能展開軟件設(shè)計(jì)的時候,如果我們未能做好多層級的緩存設(shè)計(jì),不但有可能造成金錢的浪費(fèi),而且所獲取的性能收益或許也難以達(dá)到理想狀態(tài)。

緩存設(shè)計(jì)的通關(guān)之路

那么首先,我打算從兩個問題入手,引領(lǐng)您了解緩存設(shè)計(jì)應(yīng)在何時開展,以及通過對不同數(shù)據(jù)類型特性的對比分析,和您共同探討怎樣才能做好緩存設(shè)計(jì)。

好,第一個問題:在互聯(lián)網(wǎng)應(yīng)用服務(wù)中,運(yùn)用緩存技術(shù)的目的難道僅僅是為了提升訪問速度嗎?實(shí)際上,我覺得并非所有的緩存都只是為了提速,因?yàn)樵诜植际较到y(tǒng)里,緩存機(jī)制實(shí)則是系統(tǒng)級性能設(shè)計(jì)的一項(xiàng)重要權(quán)衡手段。例如,當(dāng)某個數(shù)據(jù)庫的負(fù)載較高,接近系統(tǒng)瓶頸時,我們能夠運(yùn)用緩存技術(shù),將負(fù)荷分?jǐn)傊疗渌麛?shù)據(jù)庫中,在此,使用緩存的目的,主要是實(shí)現(xiàn)負(fù)載均衡,而非提升訪問速度。

第二個問題:一個大型系統(tǒng)中的數(shù)據(jù)種類繁多,那么是否需要為每種數(shù)據(jù)都規(guī)劃緩存機(jī)制呢?其實(shí)完全沒必要。在實(shí)際的業(yè)務(wù)場景中,系統(tǒng)所包含的業(yè)務(wù)數(shù)據(jù)極多,您不可能針對每種數(shù)據(jù)都去設(shè)計(jì)和實(shí)現(xiàn)緩存機(jī)制,一方面是投入的軟件成本過高,另一方面也很可能無法帶來較高的性能收益。所以,在開展緩存設(shè)計(jì)之前,您首先需要辨別出哪些數(shù)據(jù)訪問對性能的影響較大。那么我們應(yīng)當(dāng)如何去辨別哪些數(shù)據(jù)需要緩存機(jī)制呢?

不過接下來,在識別出需要運(yùn)用緩存機(jī)制的數(shù)據(jù)之后,您或許會發(fā)現(xiàn),這些數(shù)據(jù)種類之間的特性差異極大,如果采用同一種緩存設(shè)計(jì),實(shí)際上很難讓軟件性能達(dá)到最佳狀態(tài)。所以在此,我為您總結(jié)了三種需要緩存機(jī)制的數(shù)據(jù)種類,分別是不變性數(shù)據(jù)、弱一致性數(shù)據(jù)、強(qiáng)一致性數(shù)據(jù)。了解這三種緩存數(shù)據(jù)種類的差異,以及對應(yīng)的設(shè)計(jì)緩存機(jī)制的方法,您就掌握了緩存設(shè)計(jì)的核心要義。

好,下面我們就來具體了解下吧。

首先是不變性數(shù)據(jù)。不變性數(shù)據(jù)意味著數(shù)據(jù)永遠(yuǎn)不會發(fā)生變化,或者在相當(dāng)長的一段時間內(nèi)不會發(fā)生變化,所以我們也能夠認(rèn)定這部分?jǐn)?shù)據(jù)是不變的。此類數(shù)據(jù)屬于可以優(yōu)先考慮運(yùn)用緩存技術(shù)的一種數(shù)據(jù)類型,在實(shí)際的業(yè)務(wù)場景中數(shù)量眾多。例如,Web 服務(wù)里的靜態(tài)網(wǎng)頁、靜態(tài)資源,或者數(shù)據(jù)庫表中列數(shù)據(jù)與 key 的映射關(guān)系、業(yè)務(wù)的啟動配置等等,這些都能夠被視為不變性數(shù)據(jù)。

而且,不變性數(shù)據(jù)還意味著實(shí)現(xiàn)分布式一致性會極為容易,我們能夠?yàn)檫@些數(shù)據(jù)任選數(shù)據(jù)存儲方式,也能夠任選存儲節(jié)點(diǎn)位置。故而,我們實(shí)現(xiàn)緩存機(jī)制的方式能夠十分靈活,也會相對簡單。比如在 Java 語言中,您可以直接使用內(nèi)存 Caffeine,或者內(nèi)置的結(jié)構(gòu)體當(dāng)作緩存均可。

另外這里需要您注意,當(dāng)您針對不變性數(shù)據(jù)進(jìn)行緩存設(shè)計(jì)時,其中的緩存失效機(jī)制可以采用永遠(yuǎn)不失效,或者基于時間的失效方式。而在采用基于時間的失效方式時,您還需要依據(jù)具體的業(yè)務(wù)需求,在緩存容量和訪問速度之間做好設(shè)計(jì)實(shí)現(xiàn)方面的權(quán)衡。

弱一致性數(shù)據(jù)

第二種是弱一致性數(shù)據(jù)。它表示數(shù)據(jù)經(jīng)常會發(fā)生變化,然而業(yè)務(wù)對于數(shù)據(jù)的一致性要求并不高,也就是說,不同用戶在同一時間點(diǎn)看到并非完全一致的數(shù)據(jù),都是能夠被接受的。鑒于這類數(shù)據(jù)對一致性的要求相對較低,所以在設(shè)計(jì)緩存機(jī)制時,您只需達(dá)成最終一致性即可。這類數(shù)據(jù)在實(shí)際業(yè)務(wù)里也較為常見,例如業(yè)務(wù)的歷史分析數(shù)據(jù)、一些搜索查找返回的數(shù)據(jù)等,即便最近的部分?jǐn)?shù)據(jù)未被記錄進(jìn)去,影響也不大。

另外,快速辨別這類數(shù)據(jù)還有一個辦法,那便是使用從數(shù)據(jù)庫 Replica(復(fù)制)節(jié)點(diǎn)中讀取的數(shù)據(jù),其中大部分都屬于這種類型的數(shù)據(jù)(很多數(shù)據(jù)庫 Replica 節(jié)點(diǎn)的數(shù)據(jù)由于數(shù)據(jù)同步存在時延,是不滿足強(qiáng)一致性要求的)。針對弱一致性的數(shù)據(jù),我們通常采用的緩存失效機(jī)制是基于時間的失效方式,同時由于弱一致性的特點(diǎn),您能夠較為靈活地選擇數(shù)據(jù)存儲技術(shù),比如內(nèi)存 Cache,或者是分布式數(shù)據(jù)庫 Cache。您甚至能夠基于負(fù)載均衡的調(diào)度,來設(shè)計(jì)多層級緩存機(jī)制。

強(qiáng)一致性數(shù)據(jù)

第三種緩存數(shù)據(jù)類型是強(qiáng)一致性數(shù)據(jù)。其指的是數(shù)據(jù)會頻繁發(fā)生變化,并且業(yè)務(wù)對數(shù)據(jù)庫的一致性要求極高,也就是說當(dāng)數(shù)據(jù)產(chǎn)生變更后,其他用戶在系統(tǒng)內(nèi)的任何地方,都應(yīng)當(dāng)看到的是更新后的數(shù)據(jù)。

那么,對于這種類型的數(shù)據(jù),我通常不建議您使用緩存機(jī)制,因?yàn)檫@類數(shù)據(jù)運(yùn)用緩存會較為復(fù)雜,并且極易引入新的問題。例如,用戶能夠直接提交和修改的各類數(shù)據(jù)內(nèi)容,如果未同步修改緩存中的數(shù)據(jù),就會引發(fā)數(shù)據(jù)不一致性的問題,導(dǎo)致較為嚴(yán)重的業(yè)務(wù)故障。

不過在某些特殊的業(yè)務(wù)場景中,比如,在個別數(shù)據(jù)訪問頻率極高的情況下,我們依舊需要通過設(shè)計(jì)緩存機(jī)制,來進(jìn)一步提高性能。

因此針對這類強(qiáng)一致性數(shù)據(jù),在設(shè)計(jì)緩存機(jī)制時,您需要尤其留意兩點(diǎn):

這種數(shù)據(jù)的緩存必須采用修改同步的實(shí)現(xiàn)方式。也就是說,所有的數(shù)據(jù)修改都必須保證能夠同步修改緩存與數(shù)據(jù)庫中的數(shù)據(jù)。

精確識別特定業(yè)務(wù)流程中,能夠使用緩存獲取數(shù)據(jù)的時長。因?yàn)橛行┚彺鏀?shù)據(jù)(比如一次 REST 請求中,多個流程都需要使用的數(shù)據(jù))只能夠在單次業(yè)務(wù)流程中使用,不能跨業(yè)務(wù)流程使用。

好了,以上便是三種典型的數(shù)據(jù)種類的緩存設(shè)計(jì)思路了。

這里您需要注意的是,使用緩存必定是以性能優(yōu)化為目的,因此,您還需要運(yùn)用評估模型來分析緩存是否達(dá)成了性能優(yōu)化的目標(biāo)。

那么具體是何種評估模型呢?我們來看一下這個性能評估模型的公式:AMAT = Thit + MR * MP。其中:AMAT(Average Memory Access Time),代表的是平均內(nèi)存訪問時間;Thit,指的是命中緩存之后的數(shù)據(jù)訪問時間;MR,是訪問緩存的失效率;MP,是指緩存失效后,系統(tǒng)訪問緩存的時間與訪問原始數(shù)據(jù)請求的時間之和。

另外這里您可能會留意到,AMAT 與原始數(shù)據(jù)訪問之間的差值,代表的就是使用緩存所帶來的訪問速度的提升。而在一些緩存使用不當(dāng)?shù)膱鼍跋拢黾拥木彺鏅C(jī)制很可能會造成數(shù)據(jù)訪問速度下降的情況。所以接下來,我就通過真實(shí)的緩存設(shè)計(jì)案例,來引領(lǐng)您理解如何正確地使用緩存,以此助力您更有效地提升系統(tǒng)性能。

緩存設(shè)計(jì)的典型使用場景

好,在開始介紹之前呢,我還想為您說明一下,在真實(shí)的業(yè)務(wù)里,緩存設(shè)計(jì)的場景實(shí)際上有很多,在這里我的目的主要是讓您明晰緩存設(shè)計(jì)的方法。

因此,我會從兩個較為典型的案例場景著手,引領(lǐng)您理解緩存的運(yùn)用。

如何做好靜態(tài)頁面的緩存設(shè)計(jì)?

在 Web 應(yīng)用服務(wù)中,一個重要的應(yīng)用場景便是靜態(tài)頁面的緩存使用。這里所說的靜態(tài)頁面,指的是在一個網(wǎng)站內(nèi),所有用戶看到的都是相同的頁面,除非重新部署,否則通常不會發(fā)生變更,比如大部分公司官網(wǎng)的首頁封面等等。通常情況下,靜態(tài)頁面的訪問并發(fā)量是比較大的,如果您不運(yùn)用緩存技術(shù),不但會導(dǎo)致用戶響應(yīng)時延較長,而且會給后端服務(wù)帶來極大的負(fù)載壓力。

那么針對靜態(tài)頁面,我們在使用緩存技術(shù)時,可以通過將靜態(tài)緩存放置在距離用戶較近的位置,來降低頁面數(shù)據(jù)在網(wǎng)絡(luò)上的傳輸時延。

現(xiàn)在,我們來看一個針對靜態(tài)頁面使用緩存設(shè)計(jì)的示意圖:

圖片圖片

如圖上所示,針對靜態(tài)網(wǎng)頁,首先您就能夠在軟件后端服務(wù)的實(shí)例中運(yùn)用緩存技術(shù),以此避免每次都要重新生成頁面信息。然后,由于靜態(tài)網(wǎng)頁屬于不變性數(shù)據(jù),所以您可以使用內(nèi)存或文件級緩存。

另外,針對訪問量極大的靜態(tài)頁面,為了更進(jìn)一步減輕對后端服務(wù)的壓力,您還能夠?qū)㈧o態(tài)頁面置于網(wǎng)關(guān)處,接著利用 OpenResty 等第三方框架增添緩存機(jī)制,以保存靜態(tài)頁面。

除此之外,在網(wǎng)頁中眾多的靜態(tài)頁面或靜態(tài)資源文件,還需要使用瀏覽器的緩存,來進(jìn)一步提高性能。注意,這里我并非是建議您針對所有的靜態(tài)頁面,都需要設(shè)計(jì)三層的緩存機(jī)制,而是您要知曉,在軟件設(shè)計(jì)階段,通常就需要考慮如何進(jìn)行靜態(tài)頁面的緩存設(shè)計(jì)了

后端服務(wù)如何設(shè)計(jì)數(shù)據(jù)庫的多級緩存機(jī)制?

還有一個典型的緩存場景是針對數(shù)據(jù)庫的緩存。現(xiàn)在的數(shù)據(jù)庫通常都是分布式存儲的,而且規(guī)模都比較大,在針對大規(guī)模數(shù)據(jù)進(jìn)行查詢與分析計(jì)算時,都需要花費(fèi)一定的時間周期。因此,我們可以先識別出這些計(jì)算結(jié)果中可以使用緩存機(jī)制的數(shù)據(jù),然后就可以使用緩存來提升訪問速度了。下面是一張針對數(shù)據(jù)庫緩存機(jī)制的原理圖:

圖片圖片

從圖上能夠看到,內(nèi)存級 Cache、分布式 Cache 均可充當(dāng)數(shù)據(jù)計(jì)算分析結(jié)果的緩存。而且,不同級別的緩存訪問速度存在差異,內(nèi)存級的 Cache 訪問速度能夠達(dá)到微秒級別,甚至更優(yōu);分布式 Cache 訪問速度通常小于毫秒級別;而對于原生數(shù)據(jù)庫的查詢與分析,通常大于毫秒級別。

因此,在具體規(guī)劃緩存機(jī)制的時候,您就需要依照前面我所介紹的緩存使用原理,辨別出數(shù)據(jù)類型,進(jìn)而選擇并設(shè)計(jì)緩存實(shí)現(xiàn)機(jī)制。

另外,在通過緩存機(jī)制實(shí)現(xiàn)訪問速度優(yōu)化的過程中,我們主要關(guān)注的是不同層級緩存所帶來的訪問速度提升,并且在此處,不同層級緩存也能夠存在于一個數(shù)據(jù)庫中。

比如,在我參與設(shè)計(jì)的一個性能優(yōu)化項(xiàng)目里,其 Cache 策略便是,使用 MongoDB 中的另外一個 Collection(集合),作為緩存查詢分析,以此來優(yōu)化性能。所以,您在進(jìn)行緩存設(shè)計(jì)時,關(guān)注點(diǎn)應(yīng)當(dāng)置于不同的數(shù)據(jù)種類,以及不同層級緩存的性能評估模型上,而非僅僅關(guān)注數(shù)據(jù)庫。只有如此,您才能夠設(shè)計(jì)出更出色、更優(yōu)良的性能緩存方案。

責(zé)任編輯:武曉燕 來源: 二進(jìn)制跳動
相關(guān)推薦

2021-10-09 10:39:18

工業(yè)安全惡意軟件漏洞

2022-03-28 14:23:46

元宇宙區(qū)塊鏈技術(shù)

2012-09-11 09:30:19

虛擬化

2022-05-23 10:11:36

HTTP緩存

2015-03-26 10:40:59

2013-01-14 15:08:35

2020-02-17 13:33:43

區(qū)塊鏈預(yù)測加密化幣

2013-03-28 13:08:15

Web緩存

2019-12-11 10:07:02

緩存架構(gòu)數(shù)據(jù)庫

2013-05-23 09:37:04

公共云公共云部署整合公共云

2012-04-16 15:14:47

web設(shè)計(jì)

2022-04-07 17:13:09

緩存算法服務(wù)端

2023-11-03 12:52:00

緩存系統(tǒng)設(shè)計(jì)

2016-12-05 08:46:07

緩存架構(gòu)設(shè)計(jì)

2022-10-08 00:04:00

緩存架構(gòu)限流

2022-07-10 07:48:26

緩存軟件設(shè)計(jì)

2009-02-10 08:57:01

分布式緩存.Net開發(fā)

2023-09-17 23:16:46

緩存數(shù)據(jù)庫

2025-06-25 08:20:00

緩存Java并發(fā)編程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

久久精品久久久久久| 国产精品极品美女粉嫩高清在线| 成年网站免费| 久久国产精品色| 国产精品成熟老女人| 成人在线不卡| 亚洲第一精品夜夜躁人人躁| 日本福利在线观看| 一区二区三区中文字幕| 国产裸体舞一区二区三区| 美国十次了思思久久精品导航 | 欧美性猛交p30| 亚洲视频香蕉人妖| 青青草av网站| 成人精品国产免费网站| 精品一区二区成人免费视频| 日韩精品乱码免费| 国产精品12| 欧美在线黄色| 亚洲自拍偷拍区| 日韩在线视屏| 国产一区深夜福利| 99久久九九| 91在线播放视频| 国语对白精品一区二区| 动漫精品视频| 99精品99| 香蕉视频在线网址| 99精品视频一区二区| 男女激情无遮挡| 99视频在线精品| 无码精品a∨在线观看中文| 久久久久久久久伊人| 麻豆三级在线观看| 亚洲国产精品一区二区久久恐怖片| julia中文字幕久久亚洲蜜臀| 五月激情丁香一区二区三区| 国产精品免费播放| 51久久夜色精品国产麻豆| free性欧美hd另类精品| 日韩精品欧美激情| 国产一区二区三区免费观看在线 | eeuss国产一区二区三区| 久无码久无码av无码| 91热门视频在线观看| 欧美性猛交xxx乱久交| 亚洲美女屁股眼交3| 午夜影院在线免费观看| 欧美人妖巨大在线| 波多野结衣久久| 久久国产精品久久国产精品| 性人久久久久| 久久久久无码国产精品一区| 国产在线播放一区三区四| 日韩毛片在线免费看| 亚洲成人免费观看| 欧美另类极品| 在线性视频日韩欧美| 久久夜色精品国产噜噜av小说| 91精品久久久久久久久中文字幕 | 粉嫩av一区二区三区粉嫩| 另类小说色综合| 欧美自拍偷拍一区| 少妇一区视频| 蜜桃视频在线观看一区二区| 亚洲精品视频一区| 日韩美女在线观看| 国产·精品毛片| 国产精品日韩三级| 一区二区三区在线观看视频| v片在线观看| 久久久久免费视频| 国产一区白浆| 污版视频在线观看| 日韩午夜激情免费电影| 亚洲一区二区电影| 手机成人在线| 亚洲成av人影院在线观看网| 成人自拍av| 成人免费自拍视频| 91香蕉视频mp4| 宅男在线观看免费高清网站| 国产成人精品国内自产拍免费看| 国产一区在线视频| 猫咪在线永久网站| 欧美理论电影在线观看| 亚洲精品国产成人影院| 成年人视频网站免费| 欧美在线视频不卡| 亚洲精品成a人ⅴ香蕉片| 久久亚洲午夜电影| 91网址在线看| 美女被人操视频在线观看| 精品成人一区二区| 希岛爱理av免费一区二区| 久久久久久草| 欧美日韩国产精品| 成人国产精品一区二区网站| 成人18视频| 国产色产综合色产在线视频| 国产原厂视频在线观看| 欧美激情2020午夜免费观看| 九九视频精品免费| 992tv在线观看| 久久精品久久久久电影| 亚洲精品婷婷| 国外av网站| 中日韩美女免费视频网址在线观看| 成人精品久久| 99福利在线观看| 精品欧美久久久| 亚洲最新av| 午夜激情av在线| 日韩精品免费在线观看| 国产精品久久久久蜜臀 | 麻豆视频免费在线观看| 2020久久国产精品| 国产欧美日韩| xvideos国产精品| 水蜜桃久久夜色精品一区的特点| 粉嫩av四季av绯色av第一区| 337p粉嫩大胆噜噜噜噜噜91av| 日韩国产一区二区| 欧美日韩喷水| 美腿丝袜亚洲三区| 欧美成人一品| 欧美两根一起进3p做受视频| 91精品国产一区二区三区 | 国产欧美日韩亚洲精品| 成人美女视频在线看| 91网页在线观看| 国产91精品在线播放| 99久久精品免费看国产免费软件| chinese偷拍一区二区三区| 国产精品影片在线观看| 中国av一区二区三区| 久久久久毛片| 黑人巨茎大战欧美白妇| 欧美大片在线观看一区二区| 欧美日韩一卡| 青青草在线播放| 91精品黄色| 欧美日韩一区二区在线| 精品在线观看入口| 色偷偷亚洲第一综合| 欧美大胆在线视频| www.66久久| 日本综合字幕| 亚洲成人第一| 精品国产自在久精品国产| 欧美日韩国产在线观看网站| 五月天亚洲激情| 97久久国产精品| 丰满岳乱妇一区二区三区| 青娱乐极品盛宴一区二区| av日韩在线看| 一本色道久久88亚洲综合88| 国产精品一区二区视频| 欧美大片免费| 老太脱裤让老头玩ⅹxxxx| 日韩专区中文字幕| 久久久国产精品麻豆| 亚洲第一福利社区| 麻豆影视在线观看| 91麻豆国产精品| 欧美日韩一区二区在线观看视频| 日韩在线不卡| 国产h在线观看| 久久亚洲一区二区| 亚洲精品小视频在线观看| 久久99精品久久只有精品| 日本不卡1234视频| 免费一级特黄毛片| 欧美乱人伦中文字幕在线| 国产欧美日韩精品一区| 亚洲视频一起| 精品av中文字幕在线毛片| 久久精品一区二区三区不卡免费视频| 91精品国产麻豆| 韩国一区二区视频| 成人精品毛片| 国产高清av在线| 久久久久久久久久久久久国产精品| 久久久久久18| 日韩欧美成人精品| 日本免费在线视频不卡一不卡二| 97久久香蕉国产线看观看| 免费黄色特级片| 国产精品国产精品| 亚洲国产精品美女| 91麻豆国产精品久久| 久久精品国产68国产精品亚洲| 日本电影在线观看网站| 日韩电影在线播放| 丰满少妇久久久| 国产精品久久久对白| 欧美日韩国产高清一区二区三区| 欧美jizz18hd性欧美| 亚洲欧洲国产日韩精品| 亚洲人成电影网站|