關於緩存的基礎概念

  緩存是爲了調節速度不一致的兩個或多個不同的物質的速度,在中間對速度較快的一方起到一個加速訪問速度較慢的一方的作用,比如 CPU 的一級、二級緩存是保存了 CPU 最近經常訪問的數據,內存是保存 CPU 經常訪問硬盤的數據,而且硬盤也有大小不一的緩存,甚至是物理服務器的 raid 卡有也緩存,都是爲了起到加速 CPU 訪問硬盤數據的目的,因爲 CPU 的速度太快了, CPU 需要的數據硬盤往往不能在短時間內滿足 CPU 的需求,因此 PCU 緩存、內存、 Raid 卡以及硬盤緩存就在一定程度上滿足了 CPU 的數據需求,即 CPU 從緩存讀取數據可以大幅提高 CPU 的工作效率。

緩存分類

系統緩存:buffer/cache

buffer

  緩衝也叫寫緩衝,一般用於寫操作,可以將數據先寫入內存在寫入磁盤, buffer 一般用於寫緩衝,用於解決不同介質的速度不一致的緩衝,先將數據臨時寫入到裏自己最近的地方,以提高寫入速度, CPU 會把數據先寫到內存的磁盤緩衝區,然後就認爲數據已經寫入完成看,然後由內核在後續的時間在寫入磁盤,所以服務器突然斷電會丟失內存中的部分數據。

cache

  緩存也叫讀緩存,一般用於讀操作, CPU 讀文件從內存讀,如果內存沒有就先從硬盤讀到內存再讀到 CPU,將需要頻繁讀取的數據放在裏自己最近的緩存區域,下次讀取的時候即可快速讀取。

cache特性

  1. 自動過期:給緩存的數據加上有效時間,超出時間後自動過期刪除
  2. 過期時間: 強制過期,源網站更新圖片後 CDN 是不會更新的,需要強制是圖片緩存過期
  3. 命中率: 即緩存的讀取命中率

CDN緩存

  內容分發網絡(Content Delivery Network),通過將服務內容分發至全網加速節點,利用全球調度系統使用戶能夠就近獲取,有效降低訪問延遲,提升服務可用性, CDN 第一降低機房的使用帶寬,因爲很多資源通過 CDN 就直接返回用戶了,第二解決不同運營商之間的互聯,因爲可以讓聯通的網絡訪問聯通讓電信的網絡訪問電信,起到加速用戶訪問的目的, 第三:解決用戶訪問的地域問題,就近返回用戶資源。

CDN服務商

百度 CDN: https://cloud.baidu.com/product/cdn.html
阿里 CDN: https://www.aliyun.com/product/cdn?spm=5176.8269123.416540.50.728y8n
騰訊 CDN: https://www.qcloud.com/product/cdn

用戶請求CDN流程

  提前對靜態內容進行預緩存,避免大量的請求回源,導致主站網絡帶寬被打滿而導致數據無法更新,另外 CDN 可以將數據根據訪問的熱度不同而進行不同級別的緩存,例如訪問量最高的資源訪問 CD 邊緣節點的內存,其次的放在 SSD 或者 SATA,再其次的放在雲存儲,這樣兼顧了速度與成本。

關於緩存的基礎概念

CDN優勢

  1. 提前對靜態內容進行預緩存,避免大量的請求回源,導致主站網絡帶寬被打滿而導致數據無法更新,另外 CDN 可以將數據根據訪問的熱度不同而進行不同級別的緩存,例如訪問量最高的資源訪問 CD 邊緣節點的內存,其次的放在 SSD 或者 SATA,再其次的放在雲存儲,這樣兼顧了速度與成本。緩存-緩存到最快的地方如內存,緩存的數據準確命中率高,訪問速度就快
  2. 調度準確:將用戶調度到最近的邊緣節點
  3. 性能優化:CDN 專門用於緩存響應速度快
  4. 安全相關:抵禦***
  5. 節省帶寬:由於用戶請求由邊緣節點響應,因此大幅降低到源站帶寬。

應用層緩存

  Nginx、 PHP 等 web 服務可以設置應用緩存以加速響應用戶請求, 另外有些解釋性語言比如 PHP/Python不能直接運行,需要先編譯成字節碼,但字節碼需要解釋器解釋爲機器碼之後才能執行,因此字節碼也是一種緩存,有時候會出現程序代碼上線後字節碼沒有更新的現象。

其他層面緩存

  CPU 緩存(L1 的數據緩存和 L1 的指令緩存)、二級緩存、三級緩存
關於緩存的基礎概念

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章