Varnish是一款高性能且開源的反向代理服務(wù)器和HTTP加速器,與傳統(tǒng)的緩存服務(wù)器相比,Varnish具有性能更高、速度更快、管理更加方便等諸多優(yōu)點(diǎn),很多大型的網(wǎng)站都開始嘗試使用Varnish來(lái)替換Squid,這些都促進(jìn)Varnish迅速發(fā)展起來(lái)。
Squid是從硬盤讀取緩存的數(shù)據(jù),而Varnish把數(shù)據(jù)存放在內(nèi)存中,直接從讀取內(nèi)存,避免了頻繁在內(nèi)存、磁盤中交換文件,所以Varnish要相對(duì)更高效,但也有缺點(diǎn),內(nèi)存中的緩存在服務(wù)器重啟后會(huì)丟失。
Varnish實(shí)驗(yàn)環(huán)境
主機(jī)環(huán)境:rhel6.5 iptables andselinux are disabled
實(shí)驗(yàn)主機(jī):172.25.40.1 server1.example.com varnish
172.25.40.2 server2.example.com apache
172.25.40.3 server3.example.com apache
VCL處理流程:
處理過(guò)程大致分為如下幾個(gè)步驟:
(1)Receive狀態(tài),也就是請(qǐng)求處理的入口狀態(tài),根據(jù)VCL規(guī)則判斷該請(qǐng)求應(yīng)該是Pass或
Pipe,或者進(jìn)入Lookup(本地查詢)。
(2)Lookup狀態(tài),進(jìn)入此狀態(tài)后,會(huì)在hash表中查找數(shù)據(jù),若找到,則進(jìn)入Hit狀態(tài),否則進(jìn)
入miss狀態(tài)。
(3)Pass狀態(tài),在此狀態(tài)下,會(huì)進(jìn)入后端請(qǐng)求,即進(jìn)入fetch狀態(tài)。
(4)Fetch狀態(tài),在Fetch狀態(tài)下,對(duì)請(qǐng)求進(jìn)行后端的獲取,發(fā)送請(qǐng)求,獲得數(shù)據(jù),并進(jìn)行本地
的存儲(chǔ)。
(5)Deliver狀態(tài),將獲取到的數(shù)據(jù)發(fā)送給客戶端,然后完成本次請(qǐng)求。