Varnish概况

在本章我们将会回答以下问题:到底什么是Varnish?

Varnish最主要的两个部分是varnishd中的两个进程。第一个进程叫做the manager,它的主要工作是与你进行会话,管理员,做你要求的事情。

第二个进程叫做worker进程,或者叫做子进程,这个进程主要是实际处理所有的HTTP请求。

当启动varnishd之后,您启动了主进程,一旦它处理完所有的命令,那么子进程也会随之启动,如果子进程挂了,那么主进程将会很快自动重启子进程。

这种设计主要是为了安全考虑:主进程为了能够监听80端口,会以root权限运行,而它启动的子进程则只需要很小的权限。

主进程是可以进行交互的,他提供了命令行模式(cli),可以手动或通过脚本程序调用。命令行模式提供了Varnish处理Http请求的几乎所有功能,并且我们不需要重启Varnish进程,除非你修改的是底层的东西。

cli也可以很安全的进行远程访问,它使用简单灵活的PSK(Pre Shared Key)来进行权限控制,因此你很容易将Varnish集成到你的业务中或者你的CMS中。

所有的这些会在启动并运行Varnish章节中讲述。

比如:子进程如何处理HTTP请求,什么是缓存,要移除某个头数据等等,这些都可以都是使用一个轻量级的语言VCL——Varnish配置语言。主进程会将VCL进行编译,并检查是否有错误。

子进程会来运行VCL程序,并处理过来的每一个HTTP请求。

因为VCL是编译成C语言代码,C语言代码会编译成机器语言,所以即使是复杂的程序执行也是毫秒级别的,不会对性能产生任何的影响。

如果您不是一个程序员,也不用担心,VCL其实很简单。

sub vcl_recv {
        # Remove the cookie header to enable caching
        unset req.http.cookie;
}

cli接口允许您在任何时候编译并加载最新的VCL配置,并且您可以在加载VCL配置时瞬间进行切换,而不需要重启子进程,也不会丢失任何一个HTTP请求。

VCL可以使用叫做VMODs的模块进行扩展,如果您可以甚至可以使用C代码。因此您相对HTTP请求做什么操作,真的都没有任何的限制。

VCL Varnish配置语言章节会介绍VCL,并介绍它能做什么。

VCL会使用共享内存分块的方式来报告和记录实时的状态。对于每一个HTTP请求,大量详细的信息都会被记录到内存中。其他的进程可以查看、过滤日志记录,有点像Apache/NCSA的日志记录风格。

另外一个内存块主要用来实时进行统计计数,缓存命中、资源使用、各项性能指标都是毫秒级别的。

Varnish有大量的工具可以使用共享内存,varnishlogvarnishstatsvarnishncsa等等,并且有相应的API可供使用,因此如果您需要,您可以编写自己的工具。

上报与统计会及时它如何工作。

对Varnish感兴趣的最大原因应该还是他可以让您的网站工作的更好。有很多方面都可以加速网站,一个简单的侧绿是使用缓存,使用数据分发的CDN服务和宕机切换等等。

Varnish与网站性能会讲述Varnish为您提供的各种可能。

最后,墨菲定律必须在这里提一下:凡是可能出错的事必定会出错。比如台风的时候,您的妻子准备了温馨的晚餐来庆祝您们的周年纪念日,然而您的手机却没电了。

是的,我们都是这样,不是吗?

如果错误发生的话,那么错误定位与修复将会帮到你。

results matching ""

    No results matching ""