Varnish
Varnish
监听端口号: 6081
官方网站:
https://www.varnish-cache.org/
一、Varnish简述:
1: 缓存加速
一般来说,只是针对于静态文件(html, png, jpg, rar, txt, .....)
动态文件的加速, fastcgi(缓存的一些变量)
2: 缓存主要作用
缓存的主要作用是读, 减少磁盘IO
写也可以缓存的,风险成本会高一些
读的主要原因:
1: 访问过的数据,会被其他客户端,二次或者多次再次访问
2: 一个数据被访问后, 离他较近的客户端会再次访问
3: 缓存的实现方式
既然要缓存,需要被告诉读取,至少比在比在磁盘里面读取要快N倍
数据库的: Memcache, Redis, HANA
介质: SSD, PCI-E
使用一种"目录"的方式,将我要访问的地址,经过hash处理,形成一个KEY,我把它缓存到内粗中, 同时, 我将访问的地址所对应的值,缓存在我的SSD中,起到缓存加速的作用,这就是key-value的换数据
key: 一般对我们访问路径,
value: 访问的值,可以是数据库的值,可以是访问介质上的值
缓存离开不了: 内存, 可能需要高速硬盘
4: 缓存常见的术语
1: 命中,找到了
2: 命中率, 命中/(命中次数+非命中次数)
3: 热区, 经常被访问的数据
4: 对象, 数据库的值,可以是用户信息,可以cookies。。。。。
5: LRU, 清理方式,把不常用的,较老的数据清除
5: web类缓存的软件
1: CDN
2: Squid
3: Varnish
4: 自定义
5: Apache
6: nginx
6: Varnish
接受请求--> 分析这个请求 --> 对URL进行HASH--> 查找缓存
如果命中 --> 直接范围
如果未命中 --> 源 --> 请求数据 --> 返回
动作端口默认6081
7: varnish软件
varnish configure language ==> VCL
varnish:
管理进程
工作进程(child/cache)
https://packagecloud.io/varnishcache/varnish62/install#manual-rpm
8: Varnish的日志
日志保存在内存, 如要查看日志, 需要使用如varnishlog,varnishstat工具去看
9: varnish的状态
recive:接受用户请求, 判断用户请求, 知道下一步怎么走
lookup: 去本地查找缓存,若没有,继续下一步, 若有,则返
pass: 不去本地查找缓存,去fatch取请求数据 (需要检查客户端请求)
pipe: 不对客户端请求组做任何分析,直接和后端服务器建立通道
fetch: 取的状态
deliver: 提供状态
VCL处理流程图
1、安装varnish
[root@localhost~]# yum install autoconf automake libedit-devel libtool ncurses-devel pcre-devel pkgconfig python-docutils python-sphinx graphviz -y
[root@localhost~]# yum install epel-release
[root@localhost~]# yum -y install jemalloc-devel
[root@localhost~]#wget https://varnish-cache.org/_downloads/varnish-6.0.4.tgz
[root@localhost~]# tar xf varnish-6.0.4.tgz
[root@localhost~]# cd varnish-6.0.4/
[root@localhostvarnish-6.0.4]# ./configure --prefix=/usr/local/varnish
[root@localhost~]# make && make install
cd