总结:varnish缓存总结

概念
  • 程序的运行具有局部性特征:
    • 时间局部性:一个数据被访问过之后,可能很快会被再次访问到;
    • 空间局部性:一个数据被访问时,其周边的数据也有可能被访问到

局部性;

  • 时效性:

    • 缓存空间耗尽:LRU,最近最少使用;

    • 过期:缓存清理

      缓存命中率:hit/(hit+miss)(0,1)
      页面命中率:基于页面数量进行衡量
      字节命中率:基于页面的体积进行衡量
      
  • 缓存与否:

    • 私有数据:private,private cache;
    • 公共数据:public, public or private cache;
  • 缓存有效性判断机制:

    • 过期时间:Expires
      HTTP/1.0
      Expires:过期
      HTTP/1.1
      Cache-Control: maxage=
      Cache-Control: s-maxage=
    • 条件式请求:
      Last-Modified/If-Modified-Since:基于文件的修改时间戳来判别;
      Etag/If-None-Match:基于文件的校验码来判别;
  • 缓存层级:

    • 私有缓存:用户代理附带的本地缓存机制;
    • 公共缓存:反向代理服务器的缓存功能;
  • 请求报文用于通知缓存服务如何使用缓存响应请求:
    cache-request-directive =
    “no-cache”,
    | “no-store”
    | “max-age” “=” delta-seconds
    | “max-stale” [ “=” delta-seconds ]
    | “min-fresh” “=” delta-seconds
    | “no-transform”
    | “only-if-cached”
    | cache-extension

  • 响应报文用于通知缓存服务器如何存储上级服务器响应的内容:
    cache-response-directive =
    “public”
    | “private” [ “=” <"> 1#field-name <"> ]
    | “no-cache” [ “=” <"> 1#field-name <"> ],可缓存,但响应给客户端之前需要revalidation,即必须发出条件式请求进行缓存有效性验正;
    | “no-store” ,不允许存储响应内容于缓存中;
    | “no-transform”
    | “must-revalidate”
    | “proxy-revalidate”
    | “max-age” “=” delta-seconds
    | “s-maxage” “=” delta-seconds
    | cache-extension

安装varnish
Manager进程
	Cacher进程,包含多种类型的线程:
			accept, worker, expiry, ... 
	shared memory log:
			统计数据:计数器;
			日志区域:日志记录;
				varnishlog, varnishncsa, varnishstat... 
			
配置接口:VCL
	Varnish Configuration Language, 
		vcl complier --> c complier --> shared object 

varnish的缓存存储机制( Storage Types):
		-s [name=]type[,options]
		
		· malloc[,size]
			内存存储,[,size]用于定义空间大小;重启后所有缓存项失效;
		· file[,path[,size[,granularity]]]
			磁盘文件存储,黑盒;重启后所有缓存项失效;
		· persistent,path,size
			文件存储,黑盒;重启后所有缓存项有效;实验;
工作中一般使用磁盘储存(PCIE接口SSD)缓存
			
varnish程序的选项:
		程序选项:/etc/varnish/varnish.params文件
			-a address[:port][,address[:port][...],默认为6081端口; 
			-T address[:port],默认为6082端口;
			-s [name=]type[,options],定义缓存存储机制;
			-u user
			-g group
			-f config:VCL配置文件;
			-F:运行于前台;
[root@CentOS7 ~]# yum install varnish -y
[root@CentOS7 ~]# rpm -ql varnish
/etc/varnish/default.vcl      配置各Child/Cache线程的缓存策略
/etc/varnish/varnish.params   配置varnish服务进程的工作特性
/usr/bin/varnishlog           日志格式
/usr/bin/varnishncsa          日志格式(任选其一即可)
/usr/sbin/varnishd            主程序
/usr/bin/varnishadm             CLI interface
/usr/bin/varnishhist            Shared Memory Log交互工具
/usr/bin/varnishlog
/usr/bin/varnishncsa
/usr/bin/varnishstat
/usr/bin/varnishtop		
/usr/bin/varnishtest                          测试工具程序:
/usr/sbin/varnish_reload_vcl                  VCL配置文件重载程序:
/usr/lib/systemd/system/varnish.service       varnish服务
/usr/lib/systemd/system/varnishlog.service    日志持久的服务
/usr/lib/systemd/system/varnishncsa.service	


配置
[root@varnish ~]# vim /etc/varnish/varnish.params
VARNISH_LISTEN_PORT=80                   web端口为80
VARNISH_STORAGE="file,/data/varnish/cache,1G"   缓存位置及大小
[root@varnish ~]# mkdir -p /data/varnish/cache
[root@varnish ~]# chown -R varnish.varnish /data/varnish/cache/
[root@varnish ~]# ss -ntl

实验:配置后端服务器响应
配置文件相关:
			vcl.list 
			vcl.load:装载,加载并编译;
			vcl.use:激活;
			vcl.discard:删除;
			vcl.show [-v] <configname>:查看指定的配置文件的详细信息;
			
		运行时参数:
			param.show -l:显示列表;
			param.show <PARAM>
			param.set <PARAM> <VALUE>
			
		缓存存储:
			storage.list
			
		后端服务器:
			backend.list 
[root@varnish ~]# vim /etc/varnish/default.vcl
backend default {
   
    .host = "192.168.8.27";                                                                          
    .port = "80";
}

[root@varnish ~]# varnish_reload_vcl    加载
实验:实现命中率提示
vim /etc/varnish/default.vcl
sub vcl_deliver {
   
        if (obj.hits>0) {
   
        set resp.http.X-Cache="Hit Via " + server.ip;
        } else {
   
        set resp.http.X-Cache="Miss Via " + server.ip;
				}
[root@varnish ~]# varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082
Type 'help' for command list.
Type 'quit' to close CLI session.
·······
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值