一个支撑千万级PV的网站是非常考验一个架构是否成熟、健壮(本文不涉及软件架构的层面,有兴趣也可以讨论)。现抛出一个系统层面的架构,不保证是最优的方案,但也许适合你。理由是再优秀的架构都不具备通用性,需要根据每种应用特点针对性来设计。希望起到抛砖引玉的作用,大家多多参与,发表意见。
(点击放大)
架构说明: 1)架构中直接引入软件名称的模块,是个人推荐使用的,如Haproxy、Hadoop等; 2)关于全局负载均衡,看成本投入情况,可以使用商业的产品,如F5-GTM,开源方案便是自搭智能DNS; 3)本地负载均衡方案,可以考虑F5-LTM或成熟的开源解决方案LVS; 4)代理层为什么推荐大家使用Haproxy?Haproxy是一个非常优秀的反向代理软件,十分高效、稳定。国内top 10的互联网公司都有在使用; 5)缓存层可以使用Squid或Varnish,个人更倾向Varnish。配置灵活、运行稳定,提供非常便利的管理接口。为啥在缓存层前面加一层代理?优点非常多,列举如下: 根据应用配置URI路由规则,集中热点来提高后端缓存的命中率;
轻松划分网站频道、版块,更好对应用进步组织、规划;
对URI进行一般性安全过滤,抵御注入***;
弹性调配硬件资源,应对突发事件产生大流量;
可回收宝贵的公网IP资源;