squid-apache-varnish-nginx不同

squid是缓存服务器科班出生
varnish是觉得squid性能不行,纯内存缓存服务器方案
nginx cache是属于不务正业,得益于nginx强大的性能
varnish 是纯内存实现说法不准确
squid 越俎代庖自己实现了一套内存页/磁盘页的管理系统,但这个虚拟内存swap其实linux内核已经可以做得很好,squid的多此一举反而影响了性能

而varnish的内存管理完全交给内核,当缓存内容超过内存阈值时,内核会自动将一部分缓存存入swap中让出内存。以挪威一家报社的经验,1台varnish可以抵6台squid的性能。

nginx cache如知友所说更适合缓存纯文本体积较小的内容,不过如果对nginx框架理解够深,在其上搭建一个山寨varnish不是难事。

1. Squid功能全而大,适合于各种静态的文件缓存,国内的top2CDN厂商是基于拿squid做的商业改造,但受限于仅支持单进程(虽然squid3.2也开始支持SMP了:http://wiki.squid-cache.org/Features/SmpScale),因此一般会在前端挂一个HAProxy或nginx做负载均衡跑多个实例。
2.Varnish由于是内存cache,所以对小文件如css,js,小图片啥的支持很棒,sina的就是用的varnish,后端的持久化缓存可能采用的是squid或ats
3.nginx的代理功能只是它的一个模块功能,功能相对前两者目前还完全无法替代,但未来充满期待。
4.还有apache trafficserver,专业的代理,相对squid,这货支持多cpu,国内阿里的,youku,sina等厂商都在用,感兴趣可以去Apache Traffic Server 看看

总是有人在问cache用什么,有varnish,squid,apache,nginx这几种,到底是我们用什么架构cache。
1、从这些功能上。varnish和squid是专业的cache服务,而apache,nginx这些都是第三方模块完成。
2、要做cache服务的话,我们肯定是要选择专业的cache服务,优先选择squid和varnish。
varnish本身的技术上优势要高于squid,它采用了“Visual Page Cache”技术,在内存的利用上,Varnish比Squid具有优势,它避免了Squid频繁在内存、磁盘中交换文件,性能要比Squid高。 varnish是不能cache到本地硬盘上的。
还有强大的通过Varnish管理端口,可以使用正则表达式快速、批量地清除部分缓存
squid的优势在于完整的庞大的cache技术资料,和很多的应用生产环境(这应该与squid早出来有关)。
3、谈谈nginx,nginx是用第三方模块ncache做的缓冲,其性能基本达到varnish,但在架构中nginx一般作为反向(静态文件 现在用nginx的很多,并发能支持到2万+)。在静态架构中,如果前端直接面对的是cdn活着前端了4层负载的话,完全用nginx的cache就够 了。

4、本人觉得如果是在apache服务上提升性能,做一些本地cache是完全可以的,但如果在系统架构中用apache做cache服务,那就有点牛头不对马尾了。


你可能感兴趣的:(linux,服务器,虚拟内存,挪威,管理系统)