《高性能Linux服务器构建实战》——2.1节初识Varnish
2.1 初識(shí)Varnish
2.1.1 Varnish概述
Varnish是一款高性能且開(kāi)源的反向代理服務(wù)器和HTTP 加速器,它的開(kāi)發(fā)者Poul-Henning Kamp是FreeBSD核心的開(kāi)發(fā)人員之一。Varnish采用全新的軟件體系機(jī)構(gòu),和現(xiàn)在的硬件體系配合緊密。在1975年時(shí),儲(chǔ)存媒介只有兩種:內(nèi)存與硬盤(pán)。而現(xiàn)在計(jì)算機(jī)系統(tǒng)的內(nèi)存除了主存外,還包括CPU內(nèi)的L1、L2,有的還包括L3快取,硬盤(pán)上也有自己的快取裝置,因此Squid Cache自行處理數(shù)據(jù)替換的架構(gòu)不可能得知這些情況而做到最佳化,但操作系統(tǒng)可以得知這些情況,所以這部分工作應(yīng)該交給操作系統(tǒng)處理,這就是 Varnish Cache設(shè)計(jì)架構(gòu)。
挪威最大的在線報(bào)紙 Verdens Gang(vg.no)使用3臺(tái)Varnish代替了原來(lái)的12臺(tái)Squid,性能比以前更好,這是Varnish最成功的應(yīng)用案例。目前,Varnish可以在FreeBSD6.0/7.0、Solaris和 Linux 2.6內(nèi)核上運(yùn)行。本章主要介紹Varnish在Linux上的應(yīng)用。
2.1.2 Varnish的結(jié)構(gòu)與特點(diǎn)
Varnish是一個(gè)輕量級(jí)的Cache和反向代理軟件。先進(jìn)的設(shè)計(jì)理念和成熟的設(shè)計(jì)框架是Varnish的主要特點(diǎn)。現(xiàn)在的Varnish總共代碼量不大,雖然功能在不斷改進(jìn),但是還需要繼續(xù)豐富和加強(qiáng)。下面是Varnish的一些特點(diǎn)。
基于內(nèi)存進(jìn)行緩存,重啟后數(shù)據(jù)將消失。
利用虛擬內(nèi)存方式,I/O性能好。
支持設(shè)置0~60秒的精確緩存時(shí)間。
VCL配置管理比較靈活。
32位機(jī)器上緩存文件大小為最大2GB。
具有強(qiáng)大的管理功能,例如top、stat、admin、list等。
狀態(tài)機(jī)設(shè)計(jì)巧妙,結(jié)構(gòu)清晰。
利用二叉堆管理緩存文件,可達(dá)到積極刪除目的。
2.1.3 Varnish與Squid的對(duì)比
說(shuō)到Varnish,就不能不提Squid。Squid是一個(gè)高性能的代理緩存服務(wù)器,它和Varnish相比較有諸多的異同點(diǎn),下面進(jìn)行分析。
下面是Varnish與Squid之間的相同點(diǎn)。
都是一個(gè)反向代理服務(wù)器。
都是開(kāi)源軟件。
下面是它們的不同點(diǎn),也是Varnish的優(yōu)點(diǎn)。
Varnish的穩(wěn)定性很高。兩者在完成相同負(fù)荷的工作時(shí),Squid服務(wù)器發(fā)生故障的幾率要高于Varnish,因?yàn)镾quid需要經(jīng)常重啟。
Varnish訪問(wèn)速度更快。Varnish采用了“Visual Page Cache”技術(shù),所有緩存數(shù)據(jù)都直接從內(nèi)存讀取,而Squid是從硬盤(pán)讀取緩存數(shù)據(jù),因此Varnish在訪問(wèn)速度方面會(huì)更快。
Varnish可以支持更多的并發(fā)連接。因?yàn)閂arnish的TCP連接釋放要比Squid快,所以在高并發(fā)連接情況下可以支持更多的TCP連接。
Varnish可以通過(guò)管理端口,使用正則表達(dá)式批量清除部分緩存,而Squid做不到。
當(dāng)然,與傳統(tǒng)的Squid相比,Varnish也有缺點(diǎn)。
Varnish在高并發(fā)狀態(tài)下CPU、I/O和內(nèi)存等資源開(kāi)銷都高于Squid。
Varnish進(jìn)程一旦掛起、崩潰或者重啟,緩存數(shù)據(jù)都會(huì)從內(nèi)存中完全釋放,此時(shí)所有請(qǐng)求都會(huì)被發(fā)送到后端服務(wù)器,在高并發(fā)情況下,這會(huì)給后端服務(wù)器造成很大壓力。
總結(jié)
以上是生活随笔為你收集整理的《高性能Linux服务器构建实战》——2.1节初识Varnish的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: MongoDB干货篇之查询数据
- 下一篇: 寄快递要在面单上写身份证号?市民担心个人