今天继续给大家介绍Linux运维的相关知识,本文主要内容是LAMP架构配合Varnish缓存的基础知识。
一、Varnish简介
Varnish是一款高性能的HTTP加速器,可以实现与squid类似的功能,对服务器文件进行缓存,从而加快网站的响应速度。曾经,挪威最大的在线报纸Verdens Gang,使用了3台Varnish代替了原有的12台Squid,但是性能却比以前要好,这充分说明了Varnish的效用。
相比起Squid,Varnish有以下优势:
1、代码冗余度低
2、可以基于内存来进行缓存,也可以基于磁盘进行缓存
3、支持基于虚拟内存进行缓存
4、可以设置0-60秒精确缓存时间
Varnish之所以支持磁盘缓存,是因为对于某些大文件的缓存时,磁盘缓存更加适合业务场景。
Varnish官网为:https://www.varnish-cache.org/,如下所示:
由于Varnish是一款免费开源版本,因此我们可以从其官网左下角的Download处下载其安装包。
二、Varnish特点
Varnish具有以下特点:
1、支持VCL
VCL即Varnish Configuration Language,Varnish配置语言,Varnish的配置是通过VCL语言来进行的,Varnish在运行时会自动将该VCL的配置转换成C语言代码,因此,Varnish的运行需要有gcc的环境依赖。
2、独特的日志存储及管理机制
Varnish的日志可以供多个应用程序访问,对命中率、当前的请求方法等的查看需要有专用的工具,比如varnishshotpvarnishlog等工具。
3、支持使用Varnish状态引擎
Varnish通过巧妙的状态引擎的设计完成不同的引擎对用户的请求和缓存代理机制进行处理,用配置文件为状态引擎提供状态法则,完成缓存处理、代理处理等等功能。
三、Varnish缓存数据机制
我们在搭建好LAMP,并配合Varnish实现缓存的架构后,客户端对服务器的访问如下图所示:
四、Varnish 处理流程
对于Varnish,对客户端的请求处理流程如下图所示:
在上图中,可以看出,Varnish对客户端请求大致分为以下步骤:
1、Receive状态。即请求处理的入口状态,Varnish根据VCL的规则判断请求应该进入Pass、Pipe或者是Lookup状态。
2、Lookup状态。即在缓存中查找用户请求的对象,如果缓存中没有请求的对象,那么在后续将会把请求的对象获取后存入缓存。Varnish在进入此状态后,会在本地的Hash表中查找数据,如果找到数据,则进入到Hit状态;如果没有找到数据,则进入到Miss状态。
3、Pass状态。在此状态下,Varnish不对客户端的请求进行响应,而是直接进入后端真实服务器,进入Fetch状态。
4、Fetch状态。在此状态下,Varnish将客户端请求发送到后端真实服务器,获取数据,并缓存到本地。
5、Deliver状态。提供状态,即Varnish处理流程的最后一个状态,将通过各种方式获取的状态回传给客户端。
6、Miss状态。即Varnish没有找到客户端的请求数据,需要进入后端真实服务器进行请求对象的查找。
7、Hit状态。即Varnish找到了客户端请求的数据,并将查找到的数据反馈给客户端。
8、Pipe状态。在此状态下,Varnish不对客户端的请求做任何操作,而是在客户端与后端真实服务器之间建立专用“管道”,并将数据在二者之间直接传送。
因此,综上所述,用户使用Varnish架构时,可以通过四种方式获取数据:
1、Receive——Pipe
即Varnish使用管道,在客户端与后端真实服务器之间传输数据。
2、Receive——Pass——Fetch
即Varnish不对客户端请求进行查找,直接进入后端服务器获取数据。
3、Receive——Lookup——Miss——Fetch
Varnish对客户端的请求对象进行查找,但是查找失败,还是需要进入后端真实服务器寻找数据。
4、Receive——Lookup——Hit
Varnish对客户端的请求对象进行查找,查找成功,并将查找到的数据返回客户端。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_40228200/article/details/122704874