一、 Varnish
Web应用加速器,同时作为http反向缓存代理
- Varnish可以使用内存也可以使用硬盘进行数据缓存
- 支持虚拟内存的使用
- 有精确的时间管理机制
- 状态引擎架构:通过特定的配置语言设计不同的语句
- 以二叉堆格式管理缓存数据
- Varnish访问速度快,因为采用了“Visual Page Cache”技术,在读取数据时直接从内存中读取
- Varnish支持更多的并发连接,因为varnish的TCP连接比squid快
- Varnish通过管理端口,使用正则表达式批量的清除部分缓存
- 进程一旦crash或重启,缓存的数据将从内存中完全释放
在多台varnish实现负载均衡时,每次请求都会落到不同的varnish服务器中,造成url请求可能会穿透到后端
1)劣势解决方案
A、在varnish的后端添加squid/nignx代理,这样防止了当varnish缓存被清空时,瞬间大量的请求发往web服务器
B、在负载均衡上做url哈西,让单个url请求固定请求到一台varnish服务器上
1) Management进程(管理进程)
对child进程进行管理,同时对vcl配置进行编译
2) Child进程(子进程)
生成线程池,负责处理用户请求
后端配置:指定后端服务器
ACL配置:为varnish添加访问控制列表,用于规则设置
Probes配置:实现后端服务器的健康检查
Directors配置:为varnish添加集群
核心子进程:为后端服务器、缓存、访问控制、错误处理等功能添
二、CDN
CDN 又叫 内容分发网络,就是可以让每个地区的人访问一个就近的网络节点,这个节点就叫做 CDN 节点。
1.如果该CDN节点上没有你想要的数据,那么该节点就会从 CDN源站 上获取数据,然后在该节点上保存数据缓存。
2.如果该地区有多个 CDN 节点,那么 就会按照负载来判断该访问哪个 CDN 节点。