架构师日记——Varnish的Grace模式和Saint模式
来源:互联网 发布:webstorm运行js代码 编辑:程序博客网 时间:2024/05/29 16:21
GRACE模式
当几个客户端请求同一个页面的时候,varnish只发送一个请求的后端服务器,然后让那个其他几个请求挂起等待返回结果,返回结果后,复制请求结果发送给客户端。
如果你的服务器每秒有数千万的点击率,那么这个队列是庞大的,没有用户喜欢等待服务器响应,为了解决这个问题,可以指示varnish去保持缓存的对象超过他们的TTL(就是该过期的,先别删除),而且去提供旧内容给正在等待的请求。
为了提供旧的内容,首先我们必须有内容去提供。使用以下VCL,以使varnish保持所有对象超出了他们的TTL30分钟。
sub vcl_fetch{ set bersp.grace = 30m;//grace缓存30分钟 if ($req.request == "GET" && req.uri ~ "\.(jpg|png|ico)$"){ set bersp.ttl = 1d;//ttl缓存1天,一天之后再使用grace }}
这样,varnish还不会提供旧对象。为了启用varnish去提供旧对象,我们必须在请求上开启它。下面表示,我们接收15s的旧对象:
sub val_recv{ set req.grace = 15s;}
可以配合健康情况动态调节旧内容的时间,如果不健康则提供旧一点的旧内容
if(! req.backend.healthy){ set req.grace = 5m;}else{ set req.grace =15s;}
Saint模式
神圣模式可以让你抛弃一个后端服务器的某个页面,并尝试从其他服务器获取,或提供缓存中的旧内容。让我们看看如何在VCL中开启:
sub vcl_fetch{ if(bersp.status = 500){ set bersp.saintmode = 10s; return(restart); } set bersp.grace = 5m;}
设置bersp.saintmode为10秒时,varnish会不请求该服务器10秒。或多或少可以算是一个黑名单。restart被执行时,如果我们有其他后端可以提供该内容,varnish会请求它们。当没有其他后端可用,varnish就会提供缓存中的旧内容
阅读全文
0 0
- 架构师日记——Varnish的Grace模式和Saint模式
- varnish关于Grace mode和Saint mode这两中模式配置
- 架构师日记——Varnish简介和安装
- 架构师日记——Varnish的VCL子程序
- 架构师日记——Varnish的性能调优
- 架构师日记——规划Varnish的缓存大小和提高命中率
- 架构师日记——使用CLI管理Varnish
- Varnish的优雅模式和神圣模式
- 设计模式和架构模式的区别
- “开发模式”,“架构模式”和“设计模式”的区别
- 架构师日记——VCL介绍和使用
- 架构师日记——Memcached简介和工作原理
- 架构师日记——MongoDB简介和安装使用
- 模式和架构读书笔记
- 少谈些模式和架构
- 架构风格和模式
- php 架构和模式
- 架构模式和风格
- 动态代理
- hdu 2083 简易版之最短距离
- win10 下使用安装 Ubuntu 的 Hyper-V 配置 Ceph
- CSS中link与@import的区别
- hdu 2085 核反应堆
- 架构师日记——Varnish的Grace模式和Saint模式
- hdu 2086 A1 = ?
- 头指针链表
- 40-总结-【cartographer源码分析】系列的第四部分【io源码分析】
- H5炫酷特效系列2——canvas特效-炫酷的心
- 负载均衡中如何保持session同步
- hdu 2087 剪花布条
- 面试经历
- 2017.07.29工作日记