一、 Varnish概述
Varnish是一款高效能且開源的反向 Proxy伺服器和HTTP 加速器,它的作者Poul-Henning Kamp是FreeBSD核心的開發人員之一,Varnish採用全新的軟體體系機構,和現在的硬體體系配合緊密。作者認為現在的電腦比起1975年已經複雜許多。在1975年時,儲存媒介只有兩種:記憶體與硬碟。但現在電腦系統的記憶體除了主存外,還包括CPU內的L1、L2,甚至有L3快取。硬碟上也有自己的快取裝置,因此Squid Cache自行處理物件替換的架構不可能得知這些情況而做到最佳化,但作業系統可以得知這些情況,所以這部份的工作應該交給作業系統處理,這就是 Varnish cache設計架構。
挪威最大的線上報紙 Verdens Gang(vg.no)使用3台Varnish代替了原來的12台squid,效能比以前更好,這是Varnish最成功的應用案例,目前,Varnish可以在FreeBSD6.0/7.0、solaris、 Linux2.6核心上運行。本章主要介紹Varnish在Linux下面的應用和案例。
二、 Varnish的結構與特點
Varnish是一個輕量級的Cache和反向 Proxy軟體,先進的設計理念和成熟的設計架構是Varnish的主要特點,現在的Varnish總共代碼量不大,功能上雖然在不斷改進,但是還需要繼續豐富和加強。下面總結了Varnish的一些特點:
(1)是基於記憶體緩衝,重啟後資料將消失。
(2)利用虛擬記憶體方式,io效能好。
(3)支援設定0~60秒內的精確緩衝時間。
(4)VCL組態管理比較靈活。
(5)32位機器上快取檔案大小為最大2G。
(6)具有強大的管理功能,例如top,stat,admin,list等。
(7)狀態機器設計巧妙,結構清晰。
(8)利用二元堆積管理快取檔案,達到積極刪除目的。
三、 Varnish與Squid的對比
說到Varnish,不能不提Squid,Squid是一個高效能的代理快取服務器,它和varnish之間有諸多的異同點,這裡分析如下:
下面是他們之間的相同點:
(1)都是一個反向 Proxy伺服器,
(2)都是開源軟體,
下面是它們的不同點,也是Varnish的優點:
(1)Varnish的穩定性很高,兩者在完成相同負荷的工作時,Squid伺服器發生故障的幾率要高於Varnish,因為使用Squid要經常重啟。
(2)Varnish訪問速度更快,Varnish採用了“Visual Page Cache”技術,所有快取資料都直接從記憶體讀取,而squid是從硬碟讀取,因而Varnish在訪問速度方面會更快。
(3)Varnish可以支援更多的並發串連,因為Varnish的TCP串連釋放要比Squid快。因而在高並發串連情況下可以支援更多TCP串連。
(4)Varnish可以通過管理連接埠,使用Regex批量的清除部分緩衝,而Squid是做不到的。
當然,與傳統的Squid相比,Varnish也是有缺點的,列舉如下:
(1)varnish在高並髮狀態下CPU、IO、記憶體等資源開銷都高於Squid。
(2)varnish進程一旦Hang、Crash或者重啟,快取資料都會從記憶體中完全釋放,此時所有請求都會發送到後端伺服器,在高並發情況下,會給後端伺服器造成很大壓力。