1、Varnish概述
Varnish是一款高性能的开源HTTP加速器,挪威最大的在线报纸Verdens Gang(http://www.vg.no)使用三台Varnish代替了原来的12台squid,性能居然比以前更好。
Varnish的作者Poul-Henning Kamp是FreeBSD的内核开发者之一,他认为现在的计算机比起1975年已经复杂很多;
在1975年时,储存媒介只有两种:内存与硬盘。但现在计算 机系统的内存除了主存外,还包括了cpu内的L1、L2,甚至有L3快取。硬盘上也有自己的快取装置,因此squid cache自行处理物件替换的架构不可能得知这些情况而做到最佳化,但操作系统可以得知这些情况,所以这部份的工作应该交给操作系统处理,这就是 Varnish cache设计架构。
监听端口号: 6081 -- 在生产上应该去监听80或者443;
官方网站:
https://www.varnish-cache.org/
下载:
http://varnish-cache.org/releases/index.html
2、varnish基础概念详解
1、比起squid更加轻量级,大致有以下几个特点:
2、可以
基于内存缓存,也可以在磁盘上缓存
3、如果期望内存大小超过几十个G,比如图片服务器,纯粹使用内存,性能未必好,这时候可以使用磁盘进行缓存,或使用SSD * 2 做RAID1避免磁盘损坏,在实现随机访问上 ssd硬盘要比机械硬盘要好的多,如果必须要缓存在磁盘上还是建议使用ssd磁盘
4、可以利用虚拟内存方式,IO性能会非常好
5、支持设置
0-60秒 精确缓存时间
2.1 支持VCL
其配置是通过vcl编程语言来完成的。 其配置需要先转换成C代码,所以使用vcl所写的配置,要先转换成C语言代码,因此要依赖于GCC 临时的编译vcl配置的,编译完之后才能运行起来
注: Varnish Configuration Language - VCL(varnish配置语言-VCL)。
Varnish使用区域配置语言,这种语言叫做“VCL”(varnish configuration language),在执行vcl时,varnish就把VCL转换成二进制代码。
VCL文件被分为多个子程序,不同的子程序在不同的时间里执行,比如一个子程序在接到请求时执行,另一个子程序在接收到后端服务器传送的文件时执行。
2.2 独特的日志存储及管理机制
日志既然保存在内存中,日志可以供多个应用程序所访问,所以一般查看命中率(通过缓存查询的内容),当前请求有多少get post 方法等等,都需使用专用的工具才可以查看,比如varnishshtopvarnishlog 等命令工具用来查看日志信息
2.3 支持使用varnish状态引擎
通过巧妙的状态引擎的设计完成不同的引擎对
用户的请求和缓存代理机制进行处理,用配置文件为状态引擎提供状态法则(分配规则),