本节将回答这个问题:“varnish”究竟是什么,命名的点点滴滴。html
varnish两个主要的部分是在varnisd项目中的两个进程。第一个进程被叫作“the manager”,主要功能是告诉你,系统管理员,发生了什么。程序员
第二个进程被叫作“the worker”或者是“the child”,这个进程是实际处理你http请求的进程。web
当你启动varnishd,manager进程启动,一旦manager处理完全部的命令行参数,child进程就开始启动了。若是child进程down掉,manager进程会重启child,自动的,无需干预。缓存
这样设计的主要缘由是为了安全考虑,manager为了能监听在80端口,以root运行,可是child进程只须要很小的权限。安全
manager进程是互动的,提供了CLI-命令行接口,能够手动,脚本以及程序调用。CLI提供Varnish处理HTTP请求的几乎所有控制,同时咱们已经不遗余力,以确保你不该该须要从新启动varnish,除非你须要修改最底层的东西。cookie
CLI是远程访问安全的,使用简单灵活的PSK -- Pre Shared Key,因此很容易集成到你的业务或者绑定到你的CMSide
全部的这些都包含在Starting and running Varnish 好比,子进程怎样处理http请求,缓存什么,哪一个http头须要移除等等,都是用一个轻量级的变成语言,叫VCL--Varnish配置语言。manager进程将编译VCL程序同时检查是否出错,可是是child进程来运行VCL程序,在处理请求时。工具
由于VCL编译成C代码,C代码编译成机器指令,所以即使是复杂的VCL程序执行也是毫秒级的,不会对性能产生影响。 若是你不是一个真正的程序员,不要烦恼,VCL是很简单:性能
sub vcl_recv { # Remove the cookie header to enable caching unset req.http.cookie; }
CLI容许你随时编译和加载行的VCL程序,你也能够实时的转换两套程序,不须要重启child进程,同时不会丢失http请求。 VCL代码可使用VMODs扩展模块来扩展,若是你能够甚至是C代码。所以varnish能对你的http请求作什么,真的是没有限制的。网站
VCL - Varnish Configuration Language 描绘了VCL以及它能详细的作什么 varnish使用共享内存分块的方式报告和记录实时状态。对于每一个http请求,大量的详细的记录是追加到log的内存块。其余进程能够查看日志记录,过滤,以Apache/NCSA风格为例。 其余的内存块是用来统计计数的,实时的,精确到毫秒级的监控缓存,资源使用状况以及各项性能指标。 varnish有大量的工具可使用共享内存,varnishlog,varnishstats,varnishncsa等等,你也可使用API库编写你本身的工具,只要你须要。 Reporting and statistics 报告和统计 说明全部的工做原理。 对varnish感兴趣的最可能的缘由,是你想让你的网站工做的更好。加速一个web站点是有不少方面的。一个简单的策略是使用缓存,设计物理分割的多等级的使用ESI的CDN缓存,宕机自动切换。 Varnish and Website Performance varnish和web站点的性能 最后,Murphys Law 应用:Things will go wrong, and more likely than not, they will do so at zero-zero-dark O'clock. Most likely during a hurricane, when your phone battery is flat and your wife had prepared a intimate evening to celebrate your anniversary.体会下,事情总会出问题,也比不过,12点的黑暗,飓风的时候,你的妻子准备了一个舒适的晚餐来庆祝大家的记念日,而你的手机没电了。。。。