存档

‘Cache与存储技术’ 分类的存档

很多团队都在学习、研究 Quora 。前段时间看到这篇 Quora’s Technology Examined ,阐述了 Quora 的技术架构,有一些值得关注的信息,记录并分享一下。
使用云计算服务
Quora 大量使用 Amazon EC2 与 S3 服务;操作系统部署的是 Ubuntu Linux,易于部署和管理;静态内容用 Cloudfront.服务分发,图片先传到 EC2 服务器,使用 Pyhon S3 API 处理后后传到 S3。

标签:

[文章作者:张宴 本文版本:v1.2 最后修改:2008.01.02 转载请注明出处:http://blog.s135.com]
我曾经写过一篇文章──《初步试用Squid的替代产品──Varnish Cache网站加速器》,但当时仅仅是用着玩,没做深入研究。
今天写的这篇关于Varnish的文章,已经是一篇可以完全替代Squid做网站缓存加速器的详细解决方案了。网上关于Varnish的资料很少,中文资料更是微乎其微,希望本文能够吸引更多的人研究、使用Varnish。
在我看来,使用Varnish代替Squid的理由有三点:
1、Varnish采用了”Visual Page Cache”技术,在内存的利用上,Varnish比Squid具有优势,它避免了Squid频繁在内存、磁盘中交换文件,性能要比Squid高。
2、Varnish的稳定性还不错,我管理的一台图片服务器运行Varnish已经有一个月,没有发生过故障,而进行相同工作的Squid服务器就倒过几次。
3、通过Varnish管理端口,可以使用正则表达式快速、批量地清除部分缓存,这一点是Squid不能具备的。

三 31st, 2011 | Filed under Cache与存储技术, 其他, 系统架构及硬件

最近初步接触linux下的这2个反向缓存软件,都实验了一下,貌似squid还是比较顺利的,varnish则碰到了一些问题
从varnish的文档看,性能比squid强很多,而且不是一点点,下面国外某在线媒体的12台squid换成3台varnish前后访问响应延时比较,据说有人也测试过的确如此,

三 31st, 2011 | Filed under Cache与存储技术, 其他, 系统架构及硬件
标签: ,

设计方面:aiCache基于epoll机制,是种无堵塞、零开销、复用IO架构设计,本身没有任何IO瓶颈。它的单进程多线加速设计使一个aiCache实例可以同时 加速多个cpu。 Varnish的加速使用了数千个进程,消耗大量的cpu,而且一个Varnish实例只能加速一个cpu。
动态缓存方面:用Varnish做动态缓存需要写大量的脚本,而aiCache是现成的工具,简单易用。 缓存控制方面,Varnish可以通过purge指令来控制缓存。aiCache可以通过cookie, header, ua、缓存签名添加/减少等来控制缓存,而且有 数种方法实现同步更新。如,通过cookie驱动控制、URL触发缓存更新控制、响应驱动缓存终止(header驱动缓存终止)等功能,让aiCache同步更新一个整体页面或一个网页元素(object)。内容刷新也支持web界面生成的“expire”命令,也可以通过CLI强制终止。另外,aiCache还有缓存参数破坏和查询路径管理等功能,处理更为复杂的网页缓存。
aiCache每秒能处理26万个请求,且能管理巨量的并发连接。
aiCache插件是用C写的独立的小程序。插件支持是指当有请求进入aiCache时,您可以按照自己的逻辑执行,去处理这些请求。您可对所有的请求、某些站点或匹配某模式的请求执行您的逻辑。如,利用aiCache插件,执行访问令牌验证逻辑。Varnish没有插件支持功能。
负载均衡:Varnish只有轮循(Round-Robin), aiCache有三种负载均衡模式:轮循,优先,和权重分配。
CLI: varnish的CLI功能很简单。aiCache有强大的CLI功能。
日志和统计 Varnish日志和统计功能非常弱。aiCache有灵活、强大的日志功能,而且有丰富的实时统计功能。
URL匹配动作:aiCache可对一个URL执行近20个匹配动作

三 31st, 2011 | Filed under Cache与存储技术, 其他, 系统架构及硬件
标签: ,

varnish和squid相比最大的优势就是简单快速,简单是安装和配置都简单,快速是运行速度比squid更快,当然,快的前提是varnish比squid占用更多的内存,估计当年设计squid的时候内存还是很贵的东西,所以更多的侧重硬盘,使用内存多,当然还有一个很显而易见的弱点是机器冷启动时候恢复缓存的时间相比squid要长。
wget http://downloads.sourceforge.net/project/varnish/varnish/2.0.6/varnish-2.0.6.tar.gz?use_mirror=ncu
tar zxvf varnish-2.0.6.tar.gz
cd varnish-2.0.6
./configure  –prefix=/srv/varnish
make
make install
启动命令:
/srv/varnish/sbin/varnishd -a :8088 -b localhost:8080
由于我指定了安装目录,所以加上了路径,-a参数表示varnish的监听端口,正常情况下应该监听是80端口,也就是web服务端口,我测试机上被使用掉了,所以用了8088端口, -b 是表示后端(backend)的地址,如果backend在这里指定,那么只能指定一个后端,如果使用的配置文件可以指定多个backend,我的配置文件位置位于/srv/varnish/etc/varnish。
在web服务器的目录中创建一个index.html文件,然后通过varnish进行代理访问.
根据请求头,我们看到的确是通过vanish来代理访问后端的,第一次访问age 为0 ,第二次访问age为71,说明这个文件已经在varnish中缓存了,此时可以通过/srv/varnish/bin/varnishstat 来查看一些参数,其中Hitrate 一行应该为1,因为命中了一次。
varnish 配置文件还是很有搞头的一个东西,有点类似与Nginx的语法,虽然不是很像,比如对正则的支持,可以绑定和去除head、Cookie等等功能,有时间的话,翻译一下varnish的introduction

三 31st, 2011 | Filed under Cache与存储技术, 其他, 系统架构及硬件
标签: