- 鳳凰架構:構建可靠的大型分布式系統
- 周志明
- 838字
- 2021-06-24 11:31:02
4.6 服務端緩存
筆者介紹透明多級分流系統的邏輯思路是以流量從客戶端中發出為起始,以流量到達服務器集群中真正處理業務的節點為終結,探索該過程中與業務無關的通用組件。事實上很難清楚界定服務端緩存到底算不算與業務邏輯無關,不過,既然本章以“客戶端緩存”為開篇,那“服務端緩存”作為結束,倒是十分合適的。注意,在這一節里,筆者所說的“緩存”,均特指服務端緩存。
為系統引入緩存之前,第一件事情是確認系統是否真的需要緩存。很多人會有意無意地把硬件中常用于區分不同產品檔次、“多多益善”的緩存(如CPU L1/2/3緩存、磁盤緩存,等等)代入軟件開發中去,實際上這兩者差別很大,在軟件開發中引入緩存的負面作用要明顯大于硬件緩存帶來的負面作用:從開發角度來說,引入緩存會提高系統復雜度,因為你要考慮緩存的失效、更新、一致性等問題(硬件緩存也有這些問題,只是不需要由你去考慮,主流的ISA也都沒有提供任何直接操作緩存的指令);從運維角度來說,緩存會掩蓋一些缺陷,讓問題在更久的時間以后,出現在距離發生現場更遠的位置上;從安全角度來說,緩存可能會泄漏某些保密數據,也是容易受到攻擊的薄弱點。冒著上述種種風險,仍能說服你引入緩存的理由,總結起來無外乎以下兩種。
·為緩解CPU壓力而引入緩存:譬如把方法運行結果存儲起來、把原本要實時計算的內容提前算好、對一些公用的數據進行復用,這可以節省CPU算力,順帶提升響應性能。
·為緩解I/O壓力而引入緩存:譬如把原本對網絡、磁盤等較慢介質的讀寫訪問變為對內存等較快介質的訪問,將原本對單點部件(如數據庫)的讀寫訪問變為對可擴縮部件(如緩存中間件)的訪問,順帶提升響應性能。
請注意,緩存雖然是典型以空間換時間來提升性能的手段,但它的出發點是緩解CPU和I/O資源在峰值流量下的壓力,“順帶”而非“專門”地提升響應性能。這里的言外之意是如果可以通過增強CPU、I/O本身的性能(譬如擴展服務器的數量)來滿足需要的話,那升級硬件往往是更好的解決方案,即使需要一些額外的投入成本,也通常要優于引入緩存后可能帶來的風險。
- Linux設備驅動開發詳解(第2版)
- Linux運維實戰:CentOS7.6操作系統從入門到精通
- 發布!設計與部署穩定的分布式系統(第2版)
- WordPress Mobile Web Development:Beginner's Guide
- 構建可擴展分布式系統:方法與實踐
- Mobile First Design with HTML5 and CSS3
- 竹林蹊徑:深入淺出windows驅動開發
- 8051軟核處理器設計實戰
- Dreamweaver CS5.5 Mobile and Web Development with HTML5,CSS3,and jQuery
- 深入淺出Node.js
- Linux內核設計的藝術:圖解Linux操作系統架構設計與實現原理
- Kali Linux高級滲透測試
- 鴻蒙操作系統設計原理與架構
- Learning Continuous Integration with Jenkins(Second Edition)
- CSS揭秘