Varnish缓存服务器原理
来源:互联网 发布:windows 监控软件 编辑:程序博客网 时间:2024/04/29 15:15
http://mp.weixin.qq.com/s?__biz=MzA4Nzc4MjI4MQ==&mid=400762358&idx=1&sn=791c1edf90af48565696c52e34dae04f#rd
Varnish 是什么
Varnish是高性能开源的反向代理服务器和HTTP缓存服务器
Varnish的功能与Squid服务器相似,都可以用来做HTTP缓存
Squid是从硬盘读取缓存的数据,而Varnish把数据存放在内存中,直接从读取内存,避免了频繁在内存、磁盘中交换文件,所以Varnish要相对更高效,但也有缺点,内存中的缓存在服务器重启后会丢失
Varnish 如何工作
初始化过程
Varnish 的master进程负责启动工作,master进程读取配置文件,根据指定的空间大小(例如管理员分配了2G内存)来创建存储空间,创建并管理child进程
child进程来处理后续任务,它会分配一些线程来执行不同的工作,例如
接受http请求
为缓存对象分配存储空间
清除过期缓存对象
释放空间 碎片整理
http请求处理过程
有一个专门负责接收http请求的线程,一直监听请求端口,当有请求过来时,负责唤起一个工作线程来处理请求
工作线程会分析http请求的uri,知道了这个请求想要什么,就到缓存中查找是否有这个对象
如果有,就把缓存对象直接返回给用户
如果没有,会把请求转给后端服务器处理,并等待结果,工作线程从后端得到结果内容后,先把内容作为一个缓存对象保存到缓存空间(以备下次请求这个对象时快速响应),然后再把内容返回给用户
分配缓存过程
有一个对象需要缓存时,根据这个对象的大小,到空闲缓存区中查找大小最适合的空闲块,找到后就把这个对象放进去
如果这个对象没有填满这个空闲块,就把剩余的空间做为一个新的空闲块
如果空闲缓存区中没地方了,就要先删除一部分缓存来腾出地方,删除是根据最近最少使用原则
释放缓存过程
有一个线程来负责缓存的释放工作,他定期检查缓存中所有对象的生存周期,如果某个对象在指定的时间段内没有被访问,就把这个对象删除,释放其占用的缓存空间
释放空间后,检查一下临近的内存空间是否是空闲的,如果是,就整合为一个更大的空闲块,实现空间碎片的整理
- Varnish缓存服务器原理
- Varnish 缓存服务器
- 缓存服务器之varnish
- Varnish+Nginx搭建缓存服务器
- Varnish安装搭建配置缓存服务器
- Web缓存服务器:使用Varnish代替Squid
- Varnish 安装搭建配置缓存服务器
- Varnish缓存
- 清理多个varnish服务器缓存的脚本
- varnish代理缓存服务器的安装与使用
- Varnish+Nginx实现单双Web服务器缓存
- cdn加速之varnish反向代理缓存加速服务器
- Varnish purges 缓存清除
- Web缓存(Varnish方案)
- Web缓存(Varnish方案)
- Web缓存 --- Varnish方案
- varnish缓存配置详解
- varnish原理及配置
- leetcode -- Product of Array Except Self -- 重点。常考
- Hive
- 项目总结新技术在项目中的应用风险和机遇
- java Static 小解
- thinkphp使用阿里大鱼短信接口
- Varnish缓存服务器原理
- hdoj Lattice triangle 4483 (欧拉函数&&容斥)
- Android优化(一)——布局优化
- LeetCode Add Two Numbers
- 快学Scala读书笔记之Chapter15(注解)、Chapter17(类型参数)
- AOJ 0033 Ball
- UVALive 6847Zeroes(规律)
- MSSQL2008数据同步浅析一(基础篇)
- NAT类型和检测方法