linux命令 Android centos shell Ubuntu linux Python php Firefox 开源 apache mysql wordpress 微软 程序员 java google Windows HTML5 nginx

一例千万级pv高性能高并发网站架构图

一个支撑千万级PV的网站是非常考验一个架构是否成熟、健壮(本文不涉及软件架构的层面,有兴趣也可以讨论)。现抛出一个系统层面的架构,不保证是最优的方案,但也许适合你。理由是再优秀的架构都不具备通用性,需要根据每种应用特点针对性来设计。希望起到抛砖引玉的作用,大家多多参与,发表意见。

一例千万级pv高性能高并发网站架构图

架构说明:

  1. 架构中直接引入软件名称的模块,是个人推荐使用的,如Haproxy、Hadoop等;
  2. 关于全局负载均衡,看成本投入情况,可以使用商业的产品,如F5-GTM,开源方案便是自搭智能DNS;
  3. 本地负载均衡方案,可以考虑F5-LTM或成熟的开源解决方案LVS;
  4. 代理层为什么推荐大家使用Haproxy?Haproxy是一个非常优秀的反向代理软件,十分高效、稳定。国内top 10的互联网公司都有在使用;
  5. 缓存层可以使用squid或Varnish,个人更倾向Varnish。配置灵活、运行稳定,提供非常便利的管理接口。为啥在缓存层前面加一层代理?优点非常多,列举如下:
    A 根据应用配置URI路由规则,集中热点来提高后端缓存的命中率;
    B 轻松划分网站频道、版块,更好对应用进步组织、规划;
    C 对URI进行一般性安全过滤,抵御注入攻击;
    D 弹性调配硬件资源,应对突发事件产生大流量;
    E 可回收宝贵的公网ip资源;
  6. 应用层开源技术方案非常多且成熟,在此不详细描述;
  7. 数据库层主流开源解决方案mysql是首选,主从复制(一主对多从)是目前比较靠谱的模式;
  8. 于Nosql,应用场景不多说,可参考“给部门做的Mongodb技术交流PPT”文章,redis、memcached等作为热点数据存储、数据库缓存都非常理想;
  9. 网DNS扮演的角色非常重要,一定要消灭code中出现的内网IP地址,很大程度减少因IP变更、服务器故障而修改源码的情况,同时也便于维护;
  10. 内网LB适用在内部WEB接口、多台数据库Slave、多台Nosql Slave、公共服务等应用的负载均衡,可以使用LVS、Haproxy来实现,可用性要求不高的应用可行直接使用Localhost DNS轮询;
  11. hadoop适合海量数据的存储与处理,如做网站日志分析、用户数据挖掘等;
  12. 管理集群,平台的核心,运维的阵地;
  13. 以上粗略介绍了架构的几个组成部分,如大家有对哪块有疑问或感兴趣都可以展开来讨论,也可以通过weibo与我交流:http://t.qq.com/yorkoliu

本文作者:刘天斯(腾讯架构师、SA)

延伸阅读

评论

  1. 1、html化;2、图片独立服务器;3、缓存 +内存数据库 这3点都是优化单台服务器
    最重要的是 4、服务器集群(web集群+数据库集群),负载均衡少不了,软负载ngnix ,硬负载F5或dns负载,数据库使用 mongodb集群
    详情见 http://www.8088net.com 高并发开源框架