反向代理緩存的詳細介紹
傳統代理: 用戶隱藏在代理服務器之后。代理服務器工作在應用層,它只轉發它支持的協議的數據。
反向代理(Reverse Proxy): 這種機制是Web服務器隱藏在代理服務器之后,實現這種機制的服務器稱作反向代理服務器(Reverse Proxy Server)。此時,Web服務器成為后端服務器,反向代理服務器稱為前端服務器。
引入反向代理服務器的目的之一就是基于緩存的加速。我們可以將內容緩存在反向代理服務器上,所有緩存機制的實現仍然采用HTTP/1.1協議。
反向代理服務器不使用緩存:
可將Nginx做為Apache的反向代理服務器,反向代理服務器不使用緩存時,吞吐率會下降,因為原本直達Web的請求,現在繞路轉達,處理時間必然會增加。
可將Web服務器和應用服務器分離,前者處理一些靜態內容,并作為反向代理,后者處理動態內容。
反向代理服務器(RPS)使用緩存:
Varnish作為RPS,能夠提供較好的緩存功能。如果緩存內容發揮作用,在Http響應頭中服務器顯示的是后端服務器,但Via標記會指示數據的來源。
RPS可通過修改流經它的Http頭信息來決定哪些內容可以緩存,哪些內容不可以緩存。瀏覽器和Web服務器通過Http將自己的需求告訴RPS,RPS進行協調緩存。
Varnish通過配置文件來修改緩存規則,使用VCL語言。它也提供強制清除緩存的功能。Varnish提供一個監控程序Varnishstat用來監控緩存命中率。
緩存命中率和后端吞吐率的理想技術模型:
實際吞吐率: 指反向代理服務器處理用戶請求時的實際吞吐率。
后端吞吐率: 指后端Web服務器處理來自反向代理服務器的請求時的吞吐率。
活躍內容數: 在平均緩存有效周期內,反向代理服務器想后端服務器請求內容的次數。
緩存丟失率=(活躍內容數/(實際吞吐率×平均緩存有效期))×100%
緩存命中率= 1-緩存丟失率
后端吞吐率= 活躍內容數/平均緩存有效期
緩存命中率= (1-(后端吞吐率/實際吞吐率))×100%
后端吞吐率 = (1 – 緩存命中率)×實際吞吐率
結論:
1. 活躍內容數和平均緩存有效期一定的情況下,緩存命中率與實際吞吐率成正比。
2. 實際吞吐率和平均緩存有效期一定的情況下,緩存命中率與活躍內容數成反比。
3. 活躍內容數和實際吞吐率一定的情況下,緩存命中率與平均緩存有效期成正比。
新聞熱點
疑難解答