架构组件比较

作为一个架构师,就必须要考虑如何选型,我们从性能、功能、配置上来进行比较筛选。

软件名称 性能 功能 过滤规则配置
Squid 不能多核是硬伤;
磁盘缓存容量有优势;
性能中等
多;
支持ACL角色控制;
支持ICP缓存协议
支持外部文件读取及热加载;
支持热启动
Varnish 多核支持;
内存缓存;
性能强
够用;
支持集群,但不支持ICP集群;
支持后端存活检查
不支持外部文件读取;
需要转义;
支持热启动
Nginx 多核支持;
支持代理插件;
性能较强
多;
支持集群,但不支持ICP集群;
支持后端存活检查;
通过插件可以充当多角色服务器
不支持外部文件读取;
需要转义;
支持热启动
Apache TS 多核支持;
磁盘/内存缓存;
性能强
够用;
支持后端存活检查;
支持ICP协议,Cluster不稳定;
支持插件开发;
支持外部规则文件读取及热加载;
支持热启动
HAProxy 多核支持;
无缓存;
支持HTTP头部解析;
性能强
少,只专注HTTP头部解析和转发功能;
支持ACL角色控制;
支持后端存活检查
支持外部规则文件读取及热加载;
支持热启动;
支持会话粘滞和长连接

现在,我们对这三层功能结构充分了解,在测试调优及生产线的实践检验中,我们发现:

  • HTTP防御性能:HAProxy在应对大流量CC攻击时,做正则匹配及头部过滤时,CPU消耗只占10%~20%。其它软件均狂占CPU资源约90%以上,容易成瓶颈导致整个系统无响应。 
  • 反向代理性能:单纯转发效率以内存缓存型的Varnish性能最强,ATS和Nginx次之,考虑大容量缓存因素,ATS也是个不错的选择。Nginx是专门针对C10K的产物,性能不错,配合自己编写插件,业务可塑性很强。 
  • 过滤规则的可配置性:HAProxy,ATS,Squid均支持规则文件读取、ACL定制和热加载、热启动。Nginx则不支持外部文件正则匹配,略差一点,但可塑性强。

负载均衡——高可用性:LVS

LVS是个重量级、高效稳定的四层转发,虽然不能作七层HTTP协议的识别,但完全可以架设在七层之前,与上述的各种软件搭配使用。

所以,LVS的使用并不会影响网络结构,后续仍然可以想上就上,前提是要兼顾到LVS的单点故障,这个我们可以通过Keepalived/Heartbeat来实现可用性和可靠性的保证。


你可能感兴趣的:(Software,&,Architecture,架构)