LAMP+Varnish缓存详解(一)——Varnish简介

简介: LAMP+Varnish缓存详解(一)——Varnish简介

今天继续给大家介绍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

目录
相关文章
|
2月前
|
存储 缓存
CPU缓存简介
CPU缓存简介
30 1
|
2月前
|
缓存 运维 Linux
LAMP+Varnish缓存详解(三)——多网站缓存
LAMP+Varnish缓存详解(三)——多网站缓存
24 2
|
2月前
|
缓存 运维 编译器
LAMP+Varnish缓存详解(二)——单网站缓存
LAMP+Varnish缓存详解(二)——单网站缓存
23 0
|
2月前
|
存储 缓存 运维
LAMP架构调优(五)——网页缓存设置
LAMP架构调优(五)——网页缓存设置
18 1
|
8月前
|
缓存 Ubuntu Linux
百度搜索:蓝易云【Varnish开源HTTP反向代理缓存服务器、部署安装、测试】
通过按照上述步骤部署和配置Varnish,您可以将其作为反向代理缓存服务器来提高Web应用程序的性能和响应速度。记住,在实际部署中,您可能需要进一步调整Varnish的配置以满足您的具体需求。
60 2
|
8月前
|
缓存 Linux 开发者
百度搜索:蓝易云【Varnish开源HTTP反向代理缓存服务器、部署安装、测试。】
通过以上步骤,你可以成功部署和安装Varnish,并对Web应用程序进行测试。请根据具体需求进行适当的配置和调整,以确保Varnish能够按预期工作并提升Web应用程序的性能。
46 0
|
16天前
|
存储 缓存 NoSQL
redis缓存优化
采用获取一次缓存,如果为空的情况,获取分布式锁,让一个线程去重建缓存,另外的线程未获取到锁的情况,休眠短时间,然后再自旋获取缓存。
22 0
|
22天前
|
缓存 NoSQL Java
在 Spring Boot 应用中使用 Spring Cache 和 Redis 实现数据查询的缓存功能
在 Spring Boot 应用中使用 Spring Cache 和 Redis 实现数据查询的缓存功能
46 0
|
4天前
|
缓存 NoSQL Redis
使用Redis实现缓存穿透的解决方案
使用Redis实现缓存穿透的解决方案
|
14天前
|
缓存 负载均衡 NoSQL
Redis系列学习文章分享---第十四篇(Redis多级缓存--封装Http请求+向tomcat发送http请求+根据商品id对tomcat集群负载均衡)
Redis系列学习文章分享---第十四篇(Redis多级缓存--封装Http请求+向tomcat发送http请求+根据商品id对tomcat集群负载均衡)
29 1