【一例千万级pv高性能高并发网站架构图 八 20】转载自: http://www.4u4v.net/yi-li-qian-wan-ji-pv-gao-xing-neng-gao-bing-fa-wang-zhan-jia-gou-tu.html
一个支撑千万级PV的网站是非常考验一个架构是否成熟、健壮(本文不涉及软件架构的层面,有兴趣也可以讨论)。现抛出一个系统层面的架构,不保证是 最优的方案,但也许适合你。理由是再优秀的架构都不具备通用性,需要根据每种应用特点针对性来设计。希望起到抛砖引玉的作用,大家多多参与,发表意见。
文章图片
架构说明:
- 架构中直接引入软件名称的模块,是个人推荐使用的,如Haproxy、Hadoop等;
- 关于全局负载均衡,看成本投入情况,可以使用商业的产品,如F5-GTM,开源方案便是自搭智能DNS;
- 本地负载均衡方案,可以考虑F5-LTM或成熟的开源解决方案LVS;
- 代理层为什么推荐大家使用Haproxy?Haproxy是一个非常优秀的反向代理软件,十分高效、稳定。国内top 10的互联网公司都有在使用;
- 缓存层可以使用Squid或Varnish,个人更倾向Varnish。配置灵活、运行稳定,提供非常便利的管理接口。为啥在缓存层前面加一层代理?优点非常多,列举如下:
A 根据应用配置URI路由规则,集中热点来提高后端缓存的命中率;
B 轻松划分网站频道、版块,更好对应用进步组织、规划;
C 对URI进行一般性安全过滤,抵御注入攻击;
D 弹性调配硬件资源,应对突发事件产生大流量;
E 可回收宝贵的公网IP资源; - 应用层开源技术方案非常多且成熟,在此不详细描述;
- 数据库层主流开源解决方案Mysql是首选,主从复制(一主对多从)是目前比较靠谱的模式;
- 于Nosql,应用场景不多说,可参考“给部门做的Mongodb技术交流PPT”文章,redis、memcached等作为热点数据存储、数据库缓存都非常理想;
- 网DNS扮演的角色非常重要,一定要消灭code中出现的内网IP地址,很大程度减少因IP变更、服务器故障而修改源码的情况,同时也便于维护;
- 内网LB适用在内部WEB接口、多台数据库Slave、多台Nosql Slave、公共服务等应用的负载均衡,可以使用LVS、Haproxy来实现,可用性要求不高的应用可行直接使用Localhost DNS轮询;
- hadoop适合海量数据的存储与处理,如做网站日志分析、用户数据挖掘等;
- 管理集群,平台的核心,运维的阵地;
- 以上粗略介绍了架构的几个组成部分,如大家有对哪块有疑问或感兴趣都可以展开来讨论,也可以通过weibo与我交流~
推荐阅读
- 架构|架构师之路(二)程序员眼里的架构师
- 程序员|DevEcoStudio的及其传感器的使用,闭关在家37天“吃透”这份345页PDF
- java|阿里工作8年,肝到P8就剩这份学习笔记了,已助朋友拿到10个Offer