- 深入分布式緩存:從原理到實踐
- 于君澤
- 777字
- 2019-01-03 15:38:02
1.1 什么是緩存?
緩存:存儲在計算機上的一個原始數據復制集,以便于訪問。
——維基百科
緩存是系統快速響應中的一種關鍵技術,是一組被保存起來以備將來使用的東西,介于應用開發和系統開發之間,是產品經理們經常顧及不到的地方,也是技術架構設計中的非功能性約束。
因為“緩存為王”,很多技術都打著緩存的旗號,所以談起緩存往往似是而非。
例如,CPU的緩存,是指位于CPU與內存之間的臨時存儲器,容量比內存小得多但交換速度卻比內存要快得多。由于CPU的運算速度要比內存讀寫速度快很多,CPU總有等待數據的時候,而高速緩存則解決了CPU運算速度與內存讀寫速度不匹配的矛盾。緩存中的數據是內存中的一部分,且這部分是短時間內CPU即將訪問的,當CPU調用數據時,先從緩存中調用,從而加快讀取速度。而且,CPU是有多級緩存的,有時候也稱為幾級流水。
再例如,Linux操作系統中的文件緩存如圖1-1所示。

圖1-1 Linux文件系統中的緩存
我們平時在編程的時候,接觸到的都是虛擬地址而不是真實的物理地址,這是虛擬內存的主要功能之一。假如請求一個頁的地址,需要將頁的虛擬地址轉化為頁的物理地址。頁表(page table)和內存管理單元(MMU)就負責將頁的虛擬地址映射到物理地址。頁表負責記錄哪些是物理頁,哪些是虛擬頁,以及這些頁的頁表條目(PTE)。而MMU是一個物理硬件,MMU負責進行虛擬地址到物理地址的翻譯,翻譯過程中需要從頁表獲取頁的PTE, MMU也會使用翻譯后備緩存器(TLB)的緩存頁號。可見,在操作系統層面都有緩存。
因此,緩存一詞與語境有著緊密的關系,緩存在不同場景有著不同的意義,采用的技術手段也是不同的。不涉及操作系統和硬件的緩存,根據在軟件系統中所處位置的不同,緩存大體可以分為三類:
? 客戶端緩存;
? 服務端緩存;
? 網絡中的緩存。
根據規模和部署方式緩存也可以分為:
? 單體緩存;
? 緩存集群;
? 分布式緩存。
可見,在軟件系統中緩存幾乎無處不在,這或許就是緩存為王的一個原因吧。
- The Supervised Learning Workshop
- 精通Nginx(第2版)
- Getting Started with ResearchKit
- Learning Docker
- NumPy Essentials
- Mastering C# Concurrency
- Java Web基礎與實例教程
- Python數據分析(第2版)
- Java加密與解密的藝術
- 微信小程序開發解析
- Learning Continuous Integration with TeamCity
- Python Interviews
- 編程改變生活:用Python提升你的能力(進階篇·微課視頻版)
- Qlik Sense? Cookbook
- Oracle數據庫編程經典300例