<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          緩存的那些應用場景,你都清楚嗎?

          共 2293字,需瀏覽 5分鐘

           ·

          2021-10-16 08:28

          點擊上方“程序員大白”,選擇“星標”公眾號

          重磅干貨,第一時間送達

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

          details/54670694

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

          緩存的應用場景

          CPU緩存

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

          瀏覽器緩存

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

          CDN緩存

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

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

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

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

          我們看下圖,在WebServer和DB之間加一層cache,這層cache一般選取的介質是內存,因為我們都知道存入數(shù)據(jù)庫的數(shù)據(jù)都具有持久化的特點,那么讀寫會有磁盤IO的操作,內存的讀寫速度遠比磁盤快得多。(選用存儲介質,提高訪問速度:內存>>磁盤;減少磁盤IO的操作,減少重復查詢,提高吞吐量)

          業(yè)務層緩存

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

          學習資料:Java進階視頻資源

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

          緩存的工作原理

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

          通過上述應用場景(標紅部分),我們可知緩存的基本原理就是通過這幾個方面來進行優(yōu)化的。

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

          緩存帶來的好處

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

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

          緩存帶來的困擾

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

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

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

          常用的緩存工具

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

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


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

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

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

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




          ,西[]!


          瀏覽 104
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲VA| 高清国产无码在线观看 | 中文字幕无码Av在线 | 日韩欧美中文字幕在线视频 | 鸡吧影视免费看 |