varnish

作者: 进击的小鹿 | 来源:发表于2017-07-19 17:18 被阅读2次

    Varnish是一款高性能且开源的反向代理服务器和 HTTP 加速器,其采用全新的软件体系机构,和现在的硬件体系紧密配合,与传统的 squid 相比,varnish 具有性能更高、速度更快、管理更加方便等诸多优点。
    目前官网发布最新的版本是2017-06-28 - Maintenance release 4.1.7

    Varnish 分为 master 进程和 child 进程;

    Master 进程读入存储配置文件,调用合适的存储类型,然后创建 / 读入相应大小的缓存文件,接着 master 初始化管理该存储空间的结构体,然后 fork 并监控 child 进程;

    Child 进程在主线程的初始化的过程中,将前面打开的存储文件整个 mmap 到内存中,此时创建并初始化空闲结构体,挂到存储管理结构体,以待分配;

    对外管理接口分为3种,分别是命令行接口、Telnet接口和Web接口;

    同时在运行过程中修改的配置,可以由VCL编译器编译成C语言,并组织成共享对象(Shared Object)交由Child进程加载使用;

    child 进程处理

    Child 进程分配若干线程进行工作,主要包括一些管理线程和很多 worker 线程,可分为:
    Accept线程:接受请求,将请求挂在overflow队列上;

    Work线程:有多个,负责从overflow队列上摘除请求,对请求进行处理,直到完成,然后处理下一个请求;

    Epoll线程:一个请求处理称为一个session,在session周期内,处理完请求后,会交给Epoll处理,监听是否还有事件发生;

    Expire线程:对于缓存的object,根据过期时间,组织成二叉堆,该线程周期检查该堆的根,处理过期的文件,对过期的数据进行删除或重取操作;

    参考网址:http://www.cnblogs.com/xiaocen/p/3715266.html
    关于三种服务器的讨论:知乎

    相关文章

      网友评论

          本文标题:varnish

          本文链接:https://www.haomeiwen.com/subject/xoclkxtx.html