

varnish、nginx,并没有专门的存储引擎,有人针对nginx做过一些存储引擎,但并未开源出来;varnish可以认为是内存缓存;nginx则可以认为是个七层LB,再加上可以嵌入各种脚本语言,实现WAF规则和七层的定制开发策略非常容器,作为web cache server还要差不少。 squid的和ATS则是比较传统的web cache server,有自己的存储引擎。 多说几句,如何构建一个高性能的缓存服务器,几个关键的技术因素:
计算:需要考虑异步高并发,多核优化,cpu cache友好,需要构造一些精巧的技术结构,比如阿里swift就用到了后缀树;
网络:zero copy发包(理论上说DPDK也可以用,sendfile;tcp内核协议栈策略定制;套接字的多路复用、port reuse等;
存储:linux磁盘文件系统是通用的存储系统,天生对于海量小文件的IO不够友好;因此对于基于磁盘的缓存服务器来说,必须自己实现一个高性能的存储引擎,需要针对小数块的随机IO优化(主要随机读),另外分级存储,cache置换等也需要考虑。缓存服务器的存储引擎的技术复杂度不太高,没有关键字排序、ACID等要求,不说RDBMS的存储引擎,比基于LSMtree(例如leveldb)的KV存储引擎也要简单些。 - <
.........................................................
|