关于缓存工具Varnish的简单实现
上次小普分享了在个人的学习中对于Web Cache的一些基本的原理,大家应该都有印象吧。今天要和大家分享的是关于Web Cache的实际应用,也就是关于缓存工具Varnish的部署和简单的介绍。
Vainish是个什么东西呢?简单来说,Varnish就是客户端和web服务器之间的中间层。你可以理解成下面这样的流程
客户端发送请求
Web服务器上的Varnish组件先接收客户端的请求
Varnish分析请求,转发到后端的web 服务器
后端服务器处理请求,将结果返回给Varnish
Varnish将内容返回给客户端。
讲到这里你就明白了吧,Varnish的核心功能便是可以将后端web服务器返回给客户端的内容缓存起来,如果后续发现有相同的请求,Varnish便可以直接返回客户端这个缓存的结果,极大地降低web的效率,提升响应的速度,由此每秒钟可以接受的客户端将数以倍增,这也可以带来更好的使用体验。
本次小普使用的是Varnish4.1.7版本,是目前仍在维护的较为稳定的版本。到官方站点http://www.varnish-cache.org/releases/index.html下载这个版本即可,接下来就是简单的安装过程了。
- tar xf varnish-4.1.7tar.gz -C /usr/local/
- Cd /usr/local/varnish-4.1.7
- ./configure --prefix=/usr/local/varnish/
- Make&&make install
- 复制配置文件到指定的目录
- 查看这个配置文件的backend的字段,host指的是后端的反向代理的web服务器,这里127.0.0.1表示本机充当后端的web服务器。Port表示转向的端口,这里需要和后端的web服务器的http端口一致,如果已经开启了httpd,就需要修改httpd的端口和这里的转向端口一致。
.host = "127.0.0.1";
.port = "8080";
}
安装完之后,便可以指定启动varnish,可以使用以下的几个参数来启动。下面简单介绍几个比较常见的参数
- -a address[:port]
- -b host[:port]
- -f config
这里就使用较为简单的参数启动varnish,使用-f指定配置好的为vcl配置文件,并且指定varnish监听本机地址192.168.89.38:99来接收客户端的请求。
/usr/local/varnish/sbin/varnishd -f ../varnish/default.vcl -a 192.168.89.38:99
于是本机访问服务器的99端口,便可以实现varnish的实现了

如果你成功地到了这一步,说明已经实现varnish的基本功能了,下面是小普学习过程中整理处理的一些知识点,希望也对你有所帮助。
1、varnish如何存储缓存对象
像nginx一样,每个缓存对象是使用一个单独的文件来存储的,因此会占据很多的文件描述符inode。而varnish是将全部的缓存对象,都缓存在一个文件中。看上去只有一个varnish缓存文件,但内部数varnish自己维护了一个文件系统。
2、对于什么样的情况推荐使用varnish
时间久了,varnish会产生缓存碎片。如果此时申请大的缓存空间,就会有问题。因此基于内存缓存机制的,不建议使用太大的空间。现有的操作系统,在内存中使用内存空间,是把内存划分成page frame的形式来使用的(我们称之为内存框,也称之为页框)。对于x86系统来说固定的大小是4k。大内存页(huge page),这种是针对于非常需要大内存页的应用程序来说的。对于varnish来说,小内存页来管理,是比较合适的。
3、varnish存储缓存对象的几种方式
File:单个文件,不支持持久机制(这种是存放在磁盘中的,因此对磁盘的性能有写要求,可以建议使用ssd)
malloc:内存存储(速度快,容量小)
persistence:基于文件的持久存储(不推荐使用,实验阶段)
本期的干货分享就到这里啦,需要对你有所帮助。小普也在这里预告下一次的干货,将会和大家分享,预告待定。