官术网_书友最值得收藏!

4.6 服務端緩存

筆者介紹透明多級分流系統的邏輯思路是以流量從客戶端中發出為起始,以流量到達服務器集群中真正處理業務的節點為終結,探索該過程中與業務無關的通用組件。事實上很難清楚界定服務端緩存到底算不算與業務邏輯無關,不過,既然本章以“客戶端緩存”為開篇,那“服務端緩存”作為結束,倒是十分合適的。注意,在這一節里,筆者所說的“緩存”,均特指服務端緩存。

為系統引入緩存之前,第一件事情是確認系統是否真的需要緩存。很多人會有意無意地把硬件中常用于區分不同產品檔次、“多多益善”的緩存(如CPU L1/2/3緩存、磁盤緩存,等等)代入軟件開發中去,實際上這兩者差別很大,在軟件開發中引入緩存的負面作用要明顯大于硬件緩存帶來的負面作用:從開發角度來說,引入緩存會提高系統復雜度,因為你要考慮緩存的失效、更新、一致性等問題(硬件緩存也有這些問題,只是不需要由你去考慮,主流的ISA也都沒有提供任何直接操作緩存的指令);從運維角度來說,緩存會掩蓋一些缺陷,讓問題在更久的時間以后,出現在距離發生現場更遠的位置上;從安全角度來說,緩存可能會泄漏某些保密數據,也是容易受到攻擊的薄弱點。冒著上述種種風險,仍能說服你引入緩存的理由,總結起來無外乎以下兩種。

·為緩解CPU壓力而引入緩存:譬如把方法運行結果存儲起來、把原本要實時計算的內容提前算好、對一些公用的數據進行復用,這可以節省CPU算力,順帶提升響應性能。

·為緩解I/O壓力而引入緩存:譬如把原本對網絡、磁盤等較慢介質的讀寫訪問變為對內存等較快介質的訪問,將原本對單點部件(如數據庫)的讀寫訪問變為對可擴縮部件(如緩存中間件)的訪問,順帶提升響應性能。

請注意,緩存雖然是典型以空間換時間來提升性能的手段,但它的出發點是緩解CPU和I/O資源在峰值流量下的壓力,“順帶”而非“專門”地提升響應性能。這里的言外之意是如果可以通過增強CPU、I/O本身的性能(譬如擴展服務器的數量)來滿足需要的話,那升級硬件往往是更好的解決方案,即使需要一些額外的投入成本,也通常要優于引入緩存后可能帶來的風險。

主站蜘蛛池模板: 临高县| 克东县| 新化县| 邻水| 石柱| 湖口县| 湖口县| 错那县| 马鞍山市| 屏东市| 张家口市| 贵州省| 罗田县| 四子王旗| 宜城市| 尤溪县| 西昌市| 凉城县| 平原县| 镇安县| 奉新县| 兴宁市| 长宁县| 太谷县| 霞浦县| 阿荣旗| 洞头县| 定襄县| 牡丹江市| 祁东县| 仙桃市| 绍兴县| 平遥县| 平泉县| 云林县| 石柱| 舟曲县| 宜良县| 潮安县| 杭州市| 华池县|