1. 緩存的那些應(yīng)用場(chǎng)景,你都清楚嗎?

        共 2293字,需瀏覽 5分鐘

         ·

        2021-10-16 08:28

        點(diǎn)擊上方“程序員大白”,選擇“星標(biāo)”公眾號(hào)

        重磅干貨,第一時(shí)間送達(dá)

        來源:blog.csdn.net/u013065023/article/

        details/54670694

        本文主要跟大家來探討下緩存的應(yīng)用場(chǎng)景有哪些?緩存給我們帶來了哪些便利?同時(shí)又給我們帶來了哪些問題?還有,簡單介紹一些常用的緩存工具。JUST DO IT! Go!

        緩存的應(yīng)用場(chǎng)景

        CPU緩存

        是位于CPU與內(nèi)存之間的臨時(shí)存儲(chǔ)器,它的容量比內(nèi)存小的多但是交換速度卻比內(nèi)存要快得多。(選用存儲(chǔ)介質(zhì),提高訪問速度:高速緩存>內(nèi)存;減少重復(fù)量)

        瀏覽器緩存

        瀏覽器可以緩存一些靜態(tài)資源,比如圖片、js、css等,這些都是不常變化的內(nèi)容,所以沒有必要每次都去請(qǐng)求。(減少網(wǎng)絡(luò)IO消耗,提高訪問速度)

        CDN緩存

        客戶端會(huì)先檢查瀏覽器的緩存,若緩存過期則會(huì)像CDN發(fā)送請(qǐng)求(Request),CDN檢查緩存數(shù)據(jù)還未過期,那么直接返回響應(yīng)(Response),只需兩步搞定。

        但是,CDN緩存過期,那么需要向應(yīng)用服務(wù)器(Web Server)發(fā)起請(qǐng)求,獲得新的數(shù)據(jù)響應(yīng),這部分新的數(shù)據(jù)按一定的緩存策略會(huì)選擇是否緩存在CDN中。

        從下圖可發(fā)現(xiàn),此時(shí)數(shù)據(jù)需要完成1–>3–>4–>2最終返回到瀏覽器端。此處的CDN,(減少網(wǎng)絡(luò)IO消耗,提高訪問速度)

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

        我們看下圖,在WebServer和DB之間加一層cache,這層cache一般選取的介質(zhì)是內(nèi)存,因?yàn)槲覀兌贾来嫒霐?shù)據(jù)庫的數(shù)據(jù)都具有持久化的特點(diǎn),那么讀寫會(huì)有磁盤IO的操作,內(nèi)存的讀寫速度遠(yuǎn)比磁盤快得多。(選用存儲(chǔ)介質(zhì),提高訪問速度:內(nèi)存>>磁盤;減少磁盤IO的操作,減少重復(fù)查詢,提高吞吐量)

        業(yè)務(wù)層緩存

        除了上面介紹的緩存場(chǎng)景,我們還可能需要更細(xì)粒度的緩存,可以在上圖的某個(gè)切面做更細(xì)致處理,下篇我們將從實(shí)踐方面來探討業(yè)務(wù)上的緩存。

        學(xué)習(xí)資料:Java進(jìn)階視頻資源

        存儲(chǔ)介質(zhì)訪問速度比較 來自Google工程師Jeff Dean的分享,僅供參考:

        緩存的工作原理

        一句話概況:更快讀寫的存儲(chǔ)介質(zhì)+減少IO+減少CPU計(jì)算=性能優(yōu)化。

        通過上述應(yīng)用場(chǎng)景(標(biāo)紅部分),我們可知緩存的基本原理就是通過這幾個(gè)方面來進(jìn)行優(yōu)化的。

        在實(shí)際應(yīng)用中,我們需要對(duì)數(shù)據(jù)進(jìn)行分類,才能更好的使用緩存以及一些策略來輔助。比如哪些為冷熱數(shù)據(jù)?哪些數(shù)據(jù)量很大,讀取會(huì)嚴(yán)重影響IO?哪些數(shù)據(jù)查多改少(日志數(shù)據(jù),爬蟲數(shù)據(jù))?哪些數(shù)據(jù)又是經(jīng)過很復(fù)雜的計(jì)算得到的結(jié)果(這些珍貴的數(shù)據(jù)需要好好保存利用)?……

        緩存帶來的好處

        顯而易見,緩存給我們帶來最直接的體驗(yàn)就是“快”,我們來總結(jié)一下:

        • 通過減少IO(包括磁盤和網(wǎng)絡(luò))來提高吞吐量,減少計(jì)算量(CPU計(jì)算)釋放CPU,這些都是提高系統(tǒng)的響應(yīng)速度。
        • 通過切面的處理方式,可以在各層進(jìn)行插拔,是所有性能優(yōu)化最簡單有效的解決方案。(對(duì)于不熟悉業(yè)務(wù)代碼或算法的優(yōu)化者,顯然加一層緩存的復(fù)雜度和風(fēng)險(xiǎn)更低,而這一層看似簡單的緩存,它給系統(tǒng)帶來的性能優(yōu)化有可能大大超過前者)

        緩存帶來的困擾

        我們不能否認(rèn)緩存給我們帶來諸多便利,同時(shí),我們不能忽略緩存確實(shí)也給我們帶來了不少困擾:

        • 數(shù)據(jù)的一致性、實(shí)時(shí)性受影響。(需要對(duì)數(shù)據(jù)的一致性,時(shí)效性進(jìn)行評(píng)估,進(jìn)而確定是否要緩存或設(shè)定緩存的過期時(shí)間,比如個(gè)性化的數(shù)據(jù)是否值得緩存?)
        • 緩存介質(zhì)帶來的不可靠性。(一般使用內(nèi)存做緩存的話,若機(jī)器故障,如何保證緩存的高可用?可考慮對(duì)緩存進(jìn)行分布式做成高可用,同時(shí),需要接受這種不可靠不安全會(huì)給數(shù)據(jù)帶來的問題,在異常情況下進(jìn)行補(bǔ)償處理,定期持久化等方式)
        • 緩存的數(shù)據(jù)使得更難排查問題。因?yàn)榫彺婷惺请S著訪問隨時(shí)變化的,緩存的行為難以重現(xiàn),使得出現(xiàn)BUG很難排查。
        • 進(jìn)程內(nèi)緩存可能會(huì)增加GC壓力:在具有垃圾收集功能的語言中(如Java),大量長壽命的緩存對(duì)象會(huì)增加垃圾收集的時(shí)間和次數(shù)。

        我前面提到的,使用緩存之前我們需要對(duì)數(shù)據(jù)進(jìn)行分類,對(duì)訪問行為進(jìn)行預(yù)估,思考哪些數(shù)據(jù)需要緩存,緩存時(shí)需要采用什么策略?這樣,我們才不被緩存所困擾,才能規(guī)避這些問題。

        常用的緩存工具

        業(yè)務(wù)上緩存,常用 and 開源的緩存工具有:ehcache、memcache、Redis

        • ehcache 是一個(gè)純Java的進(jìn)程內(nèi)緩存框架,hibernate使用其做二級(jí)緩存。同時(shí),ehcache可以通過多播的方式實(shí)現(xiàn)集群。本人主要用于本地的緩存,數(shù)據(jù)庫上層的緩存。
        • memcache 是一套分布式的高速緩存系統(tǒng),提供key-value這樣簡單的數(shù)據(jù)儲(chǔ)存,可充分利用CPU多核,無持久化功能。本人在做web集群的時(shí)候用過,主要做session共享,頁面對(duì)象緩存。
        • redis 高性能的key-value系統(tǒng),提供豐富的數(shù)據(jù)類型,單核CPU有抗并發(fā)能力,有持久化和主從復(fù)制的功能。本人主要使用redis的redis sentinel,根據(jù)不同業(yè)務(wù)分為多組。


        國產(chǎn)小眾瀏覽器因屏蔽視頻廣告,被索賠100萬(后續(xù))

        年輕人“不講武德”:因看黃片上癮,把網(wǎng)站和786名女主播起訴了

        中國聯(lián)通官網(wǎng)被發(fā)現(xiàn)含木馬腳本,可向用戶推廣色情APP

        張一鳴:每個(gè)逆襲的年輕人,都具備的底層能力


        關(guān)


        ,學(xué),西學(xué)學(xué)運(yùn)護(hù)號(hào),質(zhì),結(jié)識(shí),關(guān)[]學(xué)習(xí)進(jìn)!


        瀏覽 104
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 好大好紧好爽好湿h视频 | 亚洲护士老师的毛茸茸最新章节 | 日本福利在线 | AV色婷 | 日日摸夜夜添夜夜添高潮免费 |