Varnish简介

       最近一直忙着做项目重构,老系统的架构层级太多(3层nginx+1层squid,还不算中间的lvs等),优化系统架构也是工作之一。之前老系统用的前端页面缓存是squid,这次优化运维同事给出的建议是使用varnish来替代squid,所以先简单的了解一下varnish。

一、varnish简介

       Varnish是一款高性能且开源的反向代理服务器和HTTP 加速器,它的开发者Poul-Henning Kamp是FreeBSD核心的开发人员之一。Varnish采用全新的软件体系机构,和现在的硬件体系配合紧密。在1975年时,储存媒介只有两种:内存与硬盘。而现在计算机系统的内存除了主存外,还包括CPU内的L1、L2,有的还包括L3快取,硬盘上也有自己的快取装置,因此Squid Cache自行处理数据替换的架构不可能得知这些情况而做到最佳化,但操作系统可以得知这些情况,所以这部分工作应该交给操作系统处理,这就是 Varnish Cache设计架构。

挪威最大的在线报纸 Verdens Gang(vg.no)使用3台Varnish代替了原来的12台Squid,性能比以前更好,这是Varnish最成功的应用案例。目前,Varnish可以在FreeBSD6.0/7.0、Solaris和 Linux 2.6内核上运行。

二、varnish结构和特点

Varnish是一个轻量级的Cache和反向代理软件。先进的设计理念和成熟的设计框架是Varnish的主要特点。现在的Varnish总共代码量不大,虽然功能在不断改进,但是还需要继续丰富和加强。下面是Varnish的一些特点。

1、基于内存进行缓存,重启后数据将消失。

2、利用虚拟内存方式,I/O性能好。

3、支持设置0~60秒的精确缓存时间。

4、VCL配置管理比较灵活。

5、32位机器上缓存文件大小为最大2GB。

6、具有强大的管理功能,例如top、stat、admin、list等。

7、状态机设计巧妙,结构清晰。

8、利用二叉堆管理缓存文件,可达到积极删除目的。

三、varnish与squid对比

Squid也是一个高性能的代理缓存服务器,它和Varnish相比较有诸多的异同点

相同点:

1、都是一个反向代理服务器。

2、都是开源软件。

不同点,Varnish的优点:

1、Varnish的稳定性很高。两者在完成相同负荷的工作时,Squid服务器发生故障的几率要高于Varnish,因为Squid需要经常重启。

2、Varnish访问速度更快。Varnish采用了“Visual Page Cache”技术,所有缓存数据都直接从内存读取,而Squid是从硬盘读取缓存数据,因此Varnish在访问速度方面会更快。

3、Varnish可以支持更多的并发连接。因为Varnish的TCP连接释放要比Squid快,所以在高并发连接情况下可以支持更多的TCP连接。

4、Varnish可以通过管理端口,使用正则表达式批量清除部分缓存,而Squid做不到。

当然与Squid相比,Varnish也有缺点。

1、Varnish在高并发状态下CPU、I/O和内存等资源开销都高于Squid。

2、Varnish进程一旦挂起、崩溃或者重启,缓存数据都会从内存中完全释放,此时所有请求都会被发送到后端服务器,在高并发情况下,这会给后端服务器造成很大压力。

 

你可能感兴趣的:(Varnish简介)