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

目录
相关文章
|
7月前
|
存储 缓存 运维
LAMP架构调优(五)——网页缓存设置
LAMP架构调优(五)——网页缓存设置
47 1
|
2月前
|
存储 缓存 NoSQL
大数据-38 Redis 高并发下的分布式缓存 Redis简介 缓存场景 读写模式 旁路模式 穿透模式 缓存模式 基本概念等
大数据-38 Redis 高并发下的分布式缓存 Redis简介 缓存场景 读写模式 旁路模式 穿透模式 缓存模式 基本概念等
73 4
|
4月前
|
缓存 开发工具
使用varnish缓存多个网站(三)
【8月更文挑战第9天】使用varnish缓存多个网站
69 5
|
4月前
|
存储 缓存 Linux
使用Varnish为网站加速(二)缓存一个网站
【8月更文挑战第9天】使用Varnish为网站加速安装使用缓存一个网站
30 1
|
7月前
|
存储 缓存
CPU缓存简介
CPU缓存简介
105 1
|
7月前
|
缓存 运维 Linux
LAMP+Varnish缓存详解(三)——多网站缓存
LAMP+Varnish缓存详解(三)——多网站缓存
52 2
|
7月前
|
缓存 运维 编译器
LAMP+Varnish缓存详解(二)——单网站缓存
LAMP+Varnish缓存详解(二)——单网站缓存
42 0
|
2月前
|
消息中间件 缓存 NoSQL
Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。
【10月更文挑战第4天】Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。随着数据增长,有时需要将 Redis 数据导出以进行分析、备份或迁移。本文详细介绍几种导出方法:1)使用 Redis 命令与重定向;2)利用 Redis 的 RDB 和 AOF 持久化功能;3)借助第三方工具如 `redis-dump`。每种方法均附有示例代码,帮助你轻松完成数据导出任务。无论数据量大小,总有一款适合你。
78 6
|
1月前
|
缓存 NoSQL 关系型数据库
大厂面试高频:如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题
本文详解缓存雪崩、缓存穿透、缓存并发及缓存预热等问题,提供高可用解决方案,帮助你在大厂面试和实际工作中应对这些常见并发场景。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题
|
1月前
|
存储 缓存 NoSQL
【赵渝强老师】基于Redis的旁路缓存架构
本文介绍了引入缓存后的系统架构,通过缓存可以提升访问性能、降低网络拥堵、减轻服务负载和增强可扩展性。文中提供了相关图片和视频讲解,并讨论了数据库读写分离、分库分表等方法来减轻数据库压力。同时,文章也指出了缓存可能带来的复杂度增加、成本提高和数据一致性问题。
【赵渝强老师】基于Redis的旁路缓存架构