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

LAMP+Varnish缓存详解(一)——Varnish简介相关推荐

  1. varnish配置详解

       varnish配置详解 能用到缓存的服务器的原因是,应用到了程序的局部性. 空间局部性:一个程序最近访问了一个空间,那么他周边的空间也将被访问. 时间的局部性:一条指令一段时间内被执行,之后的一 ...

  2. Mybatis二级缓存详解

    Mybatis二级缓存 Mybatis相关全览 一.简介 二.一级缓存 1.入口 2.演示 案例一: 案例二: 3.总结 三.二级缓存 1.入口 2.如何开启二级缓存 cache-ref配置 cach ...

  3. [面试专题]Web缓存详解

    Web缓存详解 标签(空格分隔): 缓存 缓存之于性能优化 请求更快:通过将内容缓存在本地浏览器或距离最近的缓存服务器(如CDN),在不影响网站交互的前提下可以大大加快网站加载速度. 降低服务器压力: ...

  4. MyBatis 一级缓存二级缓存详解

    相关内容: 架构师系列内容:架构师学习笔记(持续更新) MyBatis 缓存详解 cache 缓存 缓存是一般的ORM 框架都会提供的功能,目的就是提升查询的效率和减少数据库的压力.跟Hibernat ...

  5. Hibernate二级缓存详解(转)

    Hibernate二级缓存详解(转) 本文转载 http://www.blogjava.net/supercrsky/articles/238580.html 与Session相对的是,Session ...

  6. vue里页面的缓存详解

    关于vue里页面的缓存详解 实用的例子ABC 往下查看 keep-alive是vue内置的一个组件,可以使被它包含的组件处于保留状态,或避免被重新渲染. 用法: 在keep-alive标签内部添加 i ...

  7. Spring循环依赖和三级缓存详解

    Spring循环依赖和三级缓存详解 Spring在启动过程中,使用到了三个map,称为三级缓存 我们可以这样理解,假设,我们只有一个缓存容器,并且缓存是直接开放给用户可以调用的,如果将未完成赋值的Be ...

  8. cpu二级缓存和一级缓存详解及区别(图解)

    cpu二级缓存和一级缓存详解及区别(图解) 2012-09-02 12:27:55|  分类: 硬件技术 |字号 订阅 处理器缓存的传输速率确实很高,然而还不足以取代内存的地位,这主要是由于缓存只是内 ...

  9. Memcached对象缓存详解

    一.NoSQL概述 NoSQL数据存储不需要固定的表结构,通常也不存在连接操作.在大数据存取上具备关系型数据库无法比拟的性能优势.随着互联网web2.0网站的兴起,NoSQL数据库现在成了一个极其热门 ...

  10. MyBatis 缓存详解-开启二级缓存的方法

    第一步:在mybatis-config.xml 中配置了(可以不配置,默认是true): <setting name="cacheEnabled" value="t ...

最新文章

  1. 强制类型转换规则 java_Java学习——第002天学习笔记整理
  2. 瞎忙不如不忙——读高德拉特《目标》有感
  3. Python用@property使类方法像属性一样访问
  4. SQLite3的提交事务代码
  5. 个人图书藏书管理系统-菜单截图
  6. Debugging--the practice of programming
  7. TwinCAT3入门教程3——PLC程序变量定义和硬件IO关联
  8. perl脚本基础总结(转)
  9. FFMPEG使用摄像头录像并编码
  10. Windows Server 2016 路由和远程访问
  11. 知识图谱嵌入(KGE)主流模型简介
  12. u盘中毒数据还能恢复吗?
  13. java如何处理锯齿_java – 平滑锯齿的路径
  14. 90后都开始养生了,你怎么能少了这本宝典丨钛空舱
  15. 【经济学视频课程】科斯定理的本质…
  16. java ftp 下载 0k_Ftp下载文件大小为0 KB
  17. 基于Xilinx LUT6设计高效紧凑的2:1 Bus Mux
  18. 个人博客开发之blog-api项目统一结果集api封装
  19. 2023网盘扩容技术
  20. android 自动加微信,Android实现微信自动向附近的人打招呼(AccessibilityService)

热门文章

  1. PyTorch学习—15.PyTorch中TensorBoard的使用
  2. 遗传优化算法优化LSTM结构-准确率
  3. SpringCloud 配置服务器
  4. 《海量数据库解决方案》之位图索引的结构和特征
  5. 反思设计——从大师身上反思
  6. 演说之禅:演说中的图效优势
  7. SaasSaaS架构设计之构建Multi-Tenant应用
  8. 重新leetcode第2天——递归讲解合集
  9. Django2.0异常:'Specifying a namespace in include() without providing an app_name '
  10. mysql 查看表属性约束_mysql表属性、索引、约束