• 1. 从零到十亿——大型网站架构变迁技术中心·架构部 刘晓飞 2011-09-05
  • 2. 什么是架构?架构——人们对一个结构内的元素及元素间关系的一种主观映射的产物。[词典] 架构——架构是在组件,彼此间和与环境间的关系,引导设计发展原则中体现的系统的基本结构。[IEEE 1471] 架构——系统(模块)与系统(模块)之间的关系的抽象。[自定义]
  • 3. 设计架构的意义?好的架构设计可以让系统的承载率更高。 好的架构设计可以让系统更高效。 好的架构设计可以让系统更稳定。 好的架构设计可以让系统更容易扩展。 好的架构设计可以让系统更安全。 好的架构设计可以让系统更容易迁移。 ……
  • 4. 架构==框架?
  • 5. 语言不是可伸缩性的关键,架构才是关键
  • 6. 网站架构的目标高可用性(High Availability) 可伸缩性(Scalability) 高性能(High Performance)
  • 7. 正题开始
  • 8. 网站建立初期
  • 9. 需求&特点数据 访问量:少于10000 数据量:少于10000 代码量:少 对安全性要求:不高能够正常访问 开发效率高需求:特点:
  • 10. 特点: 1.简单 2.数据库表结构简单 3.开发效率高 4.Web Server单点 5.DB Server单点 6.程序耦合性高 7.不易扩展 8.性能主要依赖数据库
  • 11. 访问量达到10万
  • 12. 问题 访问量日益增大性能越来越低 经常出现宕机 数据库的压力越来越明显
  • 13. 特点 1.缓解了数据库压力 2.降低对数据库的依赖的风险 3.需要存储大量静态文件 4.不利于信息的更新 5.读数据有延迟
  • 14. 特点 1.逻辑比较复杂 2.使用场合跟业务相关 3.数据可能出现不统一
  • 15. 访问量达到100万
  • 16. 问题 访问量日益增大性能越来越低 静态文件数据量庞大工作效率低下 项目代码越来越多开发效率低下 图片、CSS等静态文件访问给服务和带宽带来额外消耗 单台数据库访问达到瓶颈
  • 17. 解决系统进行垂直划分 数据库按系统进行垂直划分 增加本地页面、数据缓存 增加本地缓存 增加CDN缓存 按业务划分模块,增加代码复用率 反响代理/负载均衡的引入
  • 18. 特点1.对系统进行了垂直划分分摊了系统压力 2.代码按项目拆分提高了开发效率 2.增加了CDN缓存增加了静态文件读取速度,降低了服务器额外的负担 3.数据库垂直划分解决了数据库瓶颈 4.出现业务模块
  • 19. (本页无文本内容)
  • 20. 负载均衡DNS负载均衡 反向代理负载均衡 直接路由 ......
  • 21. DNS负载均衡简单 缺少灵活性(DNS缓存) D:\python\Django-1.1.1>nslookup www.163.com Server: rdev1.rdev.kingsoft.net Address: 10.20.18.10 Non-authoritative answer: Name: www.cache.gslb.netease.com Addresses: 220.181.28.54, 220.181.28.212, 220.181.28.50, 220.181.28.51 Aliases: www.163.com
  • 22. 反向代理负载均衡负载均衡软件 nginx HAProxy apache httpd LVS(网络第四层工作) F5(硬件,四层/七层)
  • 23. Linux Virtual Server(LVS)
  • 24. VS/NAT模式
  • 25. VS/TUN模式
  • 26. VS/DR模式
  • 27. FailoverARP表IPMAC……
  • 28. Failover注意问题 Arp广播需要关闭
  • 29. Content Delivery Network
  • 30. 访问量达到1000万
  • 31. 问题传统的嵌入模块式架构已很难满足发展需求 大量业务模块嵌入不易维护 数据量急剧增大,查询效率急剧下降 本地缓存已不能满足业务和数据发展需求 大量上传文件的存储日益成为显著问题 没有系统日常跟踪,无法判断系统日常运行状态
  • 32. 解决设计中间层服务(分布式架构) 分布式缓存系统 分布式存储系统 数据的水平划分 搜索引擎系统 日志系统 开放平台
  • 33. 中间层服务设计设计目标 服务集群高可用 服务机器执行高效 服务集群可管理
  • 34. 分布式缓存一致性哈希
  • 35. 分布式存储利用一些文件存储系统如GFS、TFS等 利用数据作为存储介质,使用Url哈希得到资源位置
  • 36. (本页无文本内容)
  • 37. 数据水平切分&搜索引擎
  • 38. 日志系统&开放平台拦截系统异常 根据异常报警 多协议开放平台 安全性 自助
  • 39. 访问量达到1亿以上
  • 40. 问题服务太多管理成为问题 系统的部署逐渐成为一个难题 服务器数量剧增存在严重的资源浪费情况 系统与系统之间的耦合性比较高,通信成本交高 大量的数据分析需求产生 开发规范比较松散,系统中充满各种框架 数据库的架构对开发人员不透明
  • 41. 解决动态服务管理系统 消息总线 离线分析系统 开发web与数据层框架&平台 运维管理平台 人工智能
  • 42. 动态服务管理系统解决了服务管理问题 解决了服务部署问题 重发提高了资源利用率
  • 43. (本页无文本内容)
  • 44. 消息总线1.消息的可靠性 2.消息的持久化 3.消息订阅采用多种接口 4.消息级别定义
  • 45. 离线分析系统Hadoop 是一个能够对大量数据进行分布式处理的软件框架。 MapReduce 的一个实现
  • 46. 多种框架平台目的:规范、约束、调高开发效率,降低因开发人员素质不同造成的影响。 表示层框架,如淘宝的webx 中间层框架,封装通信、可用性、稳定性等 数据层框架,对分库、分表透明、提供自定义的查询语句、提供分布式的数据缓存
  • 47. (本页无文本内容)
  • 48. 一些未提到的问题系统的安全问题 系统的容灾机制 运维平台 垃圾信息的处理 Passport问题
  • 49. Q&A
  • 50. 谢谢!