一、Varnish 概述
Varnish 是一款高性能且开源的反向代理服务器和HTTP加速器,它的开发者 Poul-Henning Kamp 是 FreeBSD 核心的开发人员之一。
与传统的 Squid 相比, Varnish 具有性能更高、速度更快、管理更方便等诸多优点,很多大型的运营网站都开始尝试用 Varnish 来替换 Squid。
二、Varnish 的结构与特点
Varnish 是一个轻量级的 Cache 和反向代理软件。
Varnish 的一些特点,如下:
- 基于内存进行缓存,重启后数据将消失。
- 利用虚拟内存方式,I/O性能好。
- 支持设置 0 ~ 60 秒的精确缓存时间。
- VCL 配置管理比较灵活。
- 32 位机器上缓存文件大小为最大 2GB。
- 具有强大管理功能,例如 top、stat、admin、list等。
- 状态机设计巧妙,结构清晰。
- 利用二叉堆管理缓存文件,可达到积极删除目的。
三、Varnish 与 Squid 的对比
Squid 是一个高性能的代理缓存服务器,它和 Varnish 相比较有诸多的异同点。
相同点:
- 都是一个方向代理服务器。
- 都是开源软件。
不同点:
- Varnish 的稳定性很高。两者在完成相同负荷的工作时,Squid 服务器发生故障的几率要高于 Varnish,因为 Squid 需要经常重启。
- Varnish 访问速度更快。Varnish 采用了“Visual Page Cache” 技术,所有缓存数据都直接从内存读取,而 Squid 是从硬盘读取缓存数据,因此 Vairnsh 在访问速度方面会更快。
- Varnish 可以支持更多的并发连接。因为 Varnish 的TCP链接释放要比 Squid 快,所以在高并发连接情况下可以支持更多的 TCP 连接。
- Varnish 可以通过管理端口,使用正则表达式批量清除部分缓存,而 Squid 做不到。
Varnish 的缺点:
- Varnish 在高并发状态下 CPU、I/O 和内存等资源开销都高于 Squid。
- Varnish 进程一旦挂起、崩溃或者重启,缓存数据都会从内存中完全释放,此时所有请求都会被发送到后端服务器,在高并发情况下,这回给后端服务器造成很大压力。