首页 > 其他 > 详细

varnish介绍

时间:2017-02-28 14:10:31      阅读:185      评论:0      收藏:0      [点我收藏+]

Varnish介绍

 varnish 是一款开源的代理http加速软件,它从客户端接受请求后,首先检查本地内存缓存中有没有客户端请求的内容,如果有的话直接返回给客户端,否则,把请求交给后端的服务器,后端服务器饭后之后varnish缓存一份到本地,然后再返回给客户端。    另外从缓存中返回给客户端的时间和从后端服务器返回到客户端的时间,是2个数量级的差距。所以,尽量从varnish返回给客户端。

    varnish的进程和一般的软件类似,由master进程和child进程组成。master控制varnish的初始化,生成并管理child进程,然后child生成线程。负责接受请求的线程在接受请求之后分配给相关的线程进行处理。Worker线程读入HTTP请求的URI,查找已有的object,如果命中则直 接返回并回复用户。如果没有命中,则需要将所请求的内容,从后端服务器中取过来,存到缓存中(不是全部缓存,有的内容不缓存),然后再回复给客户端。


varnish的工作原理图:技术分享

函数解释:

(1)vcl_recv函数
用于接收和处理请求,当请求到达并成功接收后被调用,通过判断请求的数据来决定如何处理请求。
此函数一般以如下几个关键字结束:
pass:表示进入pass模式,把请求控制权交给vcl_pass函数。
pipe:表示进入pipe模式,把请求控制权交给vcl_pipe函数。
error code [reason]:表示返回“code”给客户端,并放弃处理该请求,“code”是错误标识,例如200、405等,“reason”是错误提示信息。

(2)vcl_pipe函数
此函数在进入pipe模式时被调用,用于将请求直接传递至后端主机,在请求和返回的内容没有改变的情况下,将不变的内容返回给客户端,直到这个链接关闭。
此函数一般以如下几个关键字结束:
error code [reason]
pipe:表示进入pipe模式,把请求控制权交给vcl_pipe函数。
(3)vcl_hit函数
在执行lookup指令后,如果在缓存中找到请求的内容,将自动调用该函数。
此函数一般以如下几个关键字结束:
deliver:表示将找到的内容发送给客户端,并把控制权交给函数vcl_deliver。
error code [reason]
pass
(4)vcl_miss函数
在执行lookup指令后,如果没有在缓存中找到请求的内容时自动调用该方法,此函数可以用于判断是否需要从后端服务器取内容。
此函数一般以如下几个关键字结束:
fetch:表示从后端获取请求的内容,并把控制权交给vcl_fetch函数。
error code [reason]
pass
(5)vcl_pass函数
此函数在进入pass模式时被调用,用于将请求直接传递至后端主机,后端主机应答数据后送给客户端,但不进行任何缓存,在当前连接下每次都返回最新的内容。
此函数一般以如下几个关键字结束:
error code [reason]
pass
lookup :表示在缓存里查找被请求的对象,并且根据查找的结果把控制权交给函数vcl_hit或者函数vcl_miss。
(6)vcl_fetch函数
在从后端主机更新缓存并且获取内容后调用该方法,接着,通过判断获取的内容来决定是否将内容放入缓存,还是直接返回给客户端。
此函数一般以如下几个关键字结束:
error code [reason]
pass
deliver
(7)vcl_deliver函数
在缓存中找到请求的内容后,发送给客户端前调用此方法。此函数一般以如下几个关键字结束:
error code [reason]
deliver
(8)vcl_timeout 函数
此函数在缓存内容到期前调用。一般以如下几个关键字结束:
discard:表示从缓存中清除该内容。
fetch
(9)vcl_discard函数
在缓存内容到期后或缓存空间不够时,自动调用该方法,一般以如下几个关键字结束:
keep:表示将内容继续保留在缓存中。

这边只是一部分的函数,但是,我们看上面的流程图,应该能够大致了解其的工作流程了。

本文出自 “linux菜鸟” 博客,请务必保留此出处http://ludihua.blog.51cto.com/4601284/1901927

varnish介绍

原文:http://ludihua.blog.51cto.com/4601284/1901927

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!