從通信原理角度看待緩存機制
分層視角:緩存如何在通信棧中運作
1. 應用層緩存
場景:HTTP 緩存 (瀏覽器/CDN/反向代理)
原理:瀏覽器根據(jù) Cache-Control (如 max-age=3600) 將靜態(tài)資源(JS/CSS/圖片)存儲在本地;CDN 節(jié)點緩存熱資源,用戶請求命中邊緣節(jié)點而非源站。
通信優(yōu)化:減少 80%+ 的重復 HTTP 請求(YSlow 數(shù)據(jù));降低 RTT(Round-Trip Time)延遲,從 200ms(跨省)→ 10ms(本地節(jié)點)
2. 傳輸層緩存
場景:TCP 快速重傳/滑動窗口
原理:維護發(fā)送緩沖區(qū),存儲已發(fā)送未確認的數(shù)據(jù)包;存儲亂序到達的數(shù)據(jù)包,等待重組(如 TCP Reassembly)。
通信優(yōu)化:避免重復傳輸丟失包(通過 ACK + 冗余確認觸發(fā)快速重傳);滑動窗口機制允許持續(xù)發(fā)送多包,無需等待單包確認。
3. 網絡層緩存
場景:路由器轉發(fā)緩存(FIB/RIB)
原理:存儲頻繁使用的路由條目(如最長前綴匹配表);本地網絡 IP-MAC 地址映射(如 192.168.1.1 → 00:11:22:33:44:55)。
通信優(yōu)化:減少路由查找時間(硬件轉發(fā)表 TCAM 加速);避免重復 ARP 廣播請求。
4. 數(shù)據(jù)鏈路層緩存
場景:交換機 MAC 地址表
原理:交換機學習源 MAC 地址與端口的映射,緩存到 CAM 表。
通信優(yōu)化:目標 MAC 已知時無需廣播(單播轉發(fā)),降低沖突域壓力。
緩存帶來的通信挑戰(zhàn)
1. 一致性問題
場景:用戶 A 更新數(shù)據(jù),用戶 B 從緩存讀取舊值。
解決方案:緩存鍵含數(shù)據(jù)版本號(如 data_v2);Raft/Paxos 協(xié)調多節(jié)點緩存失效。
2. 緩存穿透/擊穿/雪崩
穿透-查詢不存在的數(shù)據(jù)(繞過緩存)-布隆過濾器攔截非法 Key
擊穿-熱點Key失效瞬間高并發(fā)擊垮后端互斥鎖重建緩存
雪崩-大量緩存同時過期-隨機化 TTL + 熔斷降級
3. 安全風險
側信道攻擊:通過緩存訪問時間差推斷敏感信息(如網站用戶存在性檢測)。
防御:常量時間訪問設計 + 緩存分區(qū)隔離。
緩存設計的通信學原則
局部性原理:最近訪問的數(shù)據(jù)很可能再次訪問(LRU 算法);相鄰地址數(shù)據(jù)可能被連續(xù)訪問(預取機制);Belady's OPT(淘汰最遠未來使用的數(shù)據(jù));LRU(最近最少使用)、LFU(最不常用)或其變種(如 ARC)。