Varnish是主要在FreeBSD上开发的缓存代理服务器,从 How our website works: dogfood 可以看到,开发者最关注的是FreeBSD平台。或许和 pfSense 类似,充分发挥了BSD系统的稳定性和网络协议高性能,FreeBSD是这些杀手级应用的良好平台。
- 作用
Web应用加速器,同时作为http反向缓存代理
-
特点
- Varnish可以使用内存也可以使用硬盘进行数据缓存
- 支持虚拟内存的使用
- 有精确的时间管理机制
- 状态引擎架构:通过特定的配置语言设计不同的语句
- 以二叉堆格式管理缓存数据
-
Varnish的优势
- Varnish访问速度快,因为采用了“Visual Page Cache”技术,在读取数据时直接从内存中读取
- Varnish支持更多的并发连接,因为varnish的TCP连接比squid快
- Varnish通过管理端口,使用正则表达式批量的清除部分缓存
-
Varnish的劣势
- 进程一旦crash或重启,缓存的数据将从内存中完全释放
- 在多台varnish实现负载均衡时,每次请求都会落到不同的varnish服务器中,造成url请求可能会穿透到后端
劣势解决方案
- 在varnish的后端添加squid/nignx代理,这样防止了当varnish缓存被清空时,瞬间大量的请求发往web服务器
- 在负载均衡上做url哈希,让单个url请求固定请求到一台varnish服务器上
Varnish适合做WEB服务器的反向缓存代理,但是不适合做小型办公室的透明上网代理服务器。