varnish缓存初探(1)—基础知识

简介: varnish缓存学习的第一步

开章

Varnish与Squid的对比Varnish 是Squid的升级版,主要应用于HTTP反向代理和HTTP缓存来提供加速功能。Varnish的意义可以和CDN相结合。

Varnish的优势
①Varnish访问速度更快,因为采用了“Visual Page Cache”技术,所有缓存数据都直接从内存读取,而Squid是从硬盘读取,因而Varnish在访问速度方面会更快。
②Varnish可以支持更多的并发连接,因为Varnish的TCP连接释放要比Squid快,因而在高并发连接情况下可以支持更多TCP连接。
③Varnish可以通过管理端口,使用正则表达式自定义批量的清除部分缓存,而Squid是做不到的;
④Squid属于是单进程使用单核CPU,但Varnish是通过fork形式打开多进程来做处理,所以可以合理的使用所有核来处理相应的请求。

Varnish的劣势
①Varnish进程一旦Hang、Crash或者重启,缓存数据都会从内存中完全释放,此时所有请求都会发送到后端服务器,在高并发情况下,会给后端服务器造成很大压力。
②在varnish使用中如果单个URL的请求通过HA/F5等负载均衡,则每次请求落在不同的varnish服务器中,造成请求都会被穿透到后端;而且同样的请求在多台服务器上缓存,也会造成Varnish的缓存的资源浪费,造成性能下降。Varnish劣势的解决方案(并未测试过)
针对劣势一:在访问量很大的情况下推荐使用Varnish的内存缓存方式启动,而且后面需要跟多台squid服务器。主要为了防止前面的Varnish服 务或者服务器被重启的情况下,大量请求穿透Varnish,这样Squid可以就担当第二层CACHE,而且也弥补了Varnish缓存在内存中重启都会释 放的问题。
针对劣势二:可以在负载均衡上做URL哈希,让单个URL请求固定请求到一台Varnish服务器上。

varnish的四种缓存机制
1.malloc
调用malloc,为缓存分配内存空间,此种方式不可避免地会产生碎片文件,额外占用内存,重启后所有缓存项失效。
2.file
Varnish创建一个文件用来存储缓存数据,然后将此文件映射到内存空间中,但是该文件并不会持久保存数据,重启后所有缓存项失效。
3.persistent
持久文件存储,黑盒;重启后所有缓存项有效;但是处于实验阶段,问题较多。
4.MSE
Massive Storage Engine,在plus版可用,意味着收费。该模式设计的容量巨大可达100TB,磁盘性能要优于file模式。
总结:内存空间足够时,选择malloc模式,当内存空间不足以存储所有缓存数据时,应选择file 或 mse 存储。所以一般配置成file存储,当然付费的话使用mse更佳。

Varnish处理缓存流程
当Varnish处理一个请求时,首先要解析这个请求。从HTTP 首部中分析出请求的方法类型,判断是否为有效的请求方法等等,当基础解析完成之后,依据第一个策略进行检查进而做出判断。VCL就是根据由各个策略组成的规则来进行各种动作。Varnish流程可以分为前端和后端2部分

52920d6c25f7908d1122d57bca855dc2c8f2185a
前端状态可分为四个阶段:
第一阶段:
vcl_recv接受客户端请求,进行判断
第二阶段:
vcl_hash进行hash计算,不进行判读处理,计算之后送往各个第三阶段状态引擎中
第三阶段:
vcl_hit缓存命中,到此处理
vcl_pass缓存跳过
vcl_miss缓存未命中
vcl_purge清理缓存
vcl_pipe #对于无法识别的HTTP首部请求直接送入管道,交由后端处理不再处理
第四阶段:
vcl_deliver大部分响应客户端的请求由此发送回去
vcl_synth接受来自vcl_purge的任务,对于指定的缓存,进行删除处理
后端状态分为两阶段:
第一阶段:
vcl_backend_fetch接受来自前端状态vcl_pass或vcl_miss 的任务,向后端主机请求
第二阶段:
vcl_backend_response接受到后端返回正常状态报文,进行是否缓存检查,需要缓存的响应将其缓存,不需要则不缓存,最后送到vcl_deliver
vcl_backend_error后端主机错误,返回错误响应
除此之外还有两个特殊状态引擎:
vcl_init在处理任何请求之前要执行的vcl代码:主要用于初始化VMODs
vcl_fini所有的请求都已经结束,在vcl配置被丢弃时调用;主要用于清理VMODs

相关文章
|
4月前
|
缓存 开发工具
使用varnish缓存多个网站(三)
【8月更文挑战第9天】使用varnish缓存多个网站
68 5
|
4月前
|
存储 缓存 Linux
使用Varnish为网站加速(二)缓存一个网站
【8月更文挑战第9天】使用Varnish为网站加速安装使用缓存一个网站
29 1
|
7月前
|
缓存 运维 Linux
LAMP+Varnish缓存详解(三)——多网站缓存
LAMP+Varnish缓存详解(三)——多网站缓存
52 2
|
7月前
|
缓存 运维 编译器
LAMP+Varnish缓存详解(二)——单网站缓存
LAMP+Varnish缓存详解(二)——单网站缓存
41 0
|
7月前
|
存储 缓存 运维
LAMP+Varnish缓存详解(一)——Varnish简介
LAMP+Varnish缓存详解(一)——Varnish简介
73 0
|
缓存 Ubuntu Linux
百度搜索:蓝易云【Varnish开源HTTP反向代理缓存服务器、部署安装、测试】
通过按照上述步骤部署和配置Varnish,您可以将其作为反向代理缓存服务器来提高Web应用程序的性能和响应速度。记住,在实际部署中,您可能需要进一步调整Varnish的配置以满足您的具体需求。
97 2
|
缓存 Linux 开发者
百度搜索:蓝易云【Varnish开源HTTP反向代理缓存服务器、部署安装、测试。】
通过以上步骤,你可以成功部署和安装Varnish,并对Web应用程序进行测试。请根据具体需求进行适当的配置和调整,以确保Varnish能够按预期工作并提升Web应用程序的性能。
73 0
|
存储 缓存 Java
缓存varnish的管理及配置详解
一 工作原理 在当前主流的Web服务架构体系中,Cache担任着越来越重要的作用。常见的基于浏览器的C/S架构,Web Cache更是节约服务器资源的关键。而最近几年由FreeBSD创始人之一Kamp开发的varnish更是一个不可多得的Web Cache Server。
1778 0
|
存储 缓存 监控
RH358优化Web服务器流量--使用Varnish缓存静态网页
RH358优化Web服务器流量--使用Varnish缓存静态网页
336 0
RH358优化Web服务器流量--使用Varnish缓存静态网页
|
缓存 存储
web缓存与varnish
web缓存与varnish
1199 0