• 1. 淘宝技术架构介绍2009.6
  • 2. 目标  了解淘宝,了解淘宝的架构需求 了解淘宝的技术演变 了解一些约束
  • 3. 淘宝是什么?淘宝是一个网站WebServerAppServerDBServer
  • 4. 淘宝是什么网站? 淘宝是一个交易网站  交易 要素 人 物 合同(订单) 过程 匘配过程  交易过程 付款  发货 沟通交流 功能需求 交易系统 非功能需求 高稳定性
  • 5. 淘宝是什么样的交易网站? 淘宝是一个很大的交易网站  每天 7亿次的页面访问,其中搜索宝贝过亿次,浏览宝贝过亿次 超过40亿次的用户访问,超过6亿次的交易访问,超过6亿次的宝贝访问  超过400万笔有效交易 高峰期 每秒超过25G的流量,核心业务每秒超过4.5G的流量 每秒生成几百笔交易,8万次的用户访问,1.5万次的商品访问 淘宝总共 超过22TB的宝贝图片存储 超过4亿条的在线交易记录,超过2亿的在线宝贝 非功能需求 高容量  高性能
  • 6. 淘宝是什么样的很大的交易网站? 淘宝是一个高速发展的很大的交易网站  2008Q3 发布项目15个  发布日常285个  发布模板440次 2008Q4 发布项目49个 发布日常1149个  发布模板1909次 非功能需求  高可维护性
  • 7. 对淘宝技术架构的原始需求高稳定性 高容量 高性能高可维护性
  • 8. 淘宝发展历程2000片/天9000片/天 3.8W片/天 2W片/天8W片/天01000 5002500 2000 15002003200420052006200720082009PV 全网成交V2.2V1.1V1.0V2.0V2.1V3.02008年: 交易额999.6亿 注册用户9800万 卖出1.4亿件服饰 卖出1366万部手机 卖出3130万张充值卡2008年每天: 增加800G的数据 高峰期流量超过30G/S 处理超过1000G的日志 处理40亿次的用户信息访问 缓存处理60亿次的请求
  • 9. V1.0 2003.5 – 2004.1   2003年非典时期 马于住宅 LAMP MySQL读写分离
  • 10. Slave1 Read Slave2Read 复制 Read/Write 复制 MySQL MasterV1.0 Function Function 2 Apache mod_php4 Apache pear DB mod_php4 pear DB
  • 11. V1.1 过渡版本V1.0问题数据库容量限制 数据稳定性V1.1需求解决数据库性能问题 为V2做好准备
  • 12. V1.1 2004.1 – 2004.5MySQL迁移至Oracle 引入SQL Relay中间件迁移阶段开发人员写两种SQL
  • 13. Function 3Apachemod_php4pear DBSQL RelayV1.1Function 4 Function 2 Apache Function 1 Apache mod_php4 Apache mod_php4 pear DB mod_php4 pear DB SQL Relay pear DB SQL Relay OracleSQL Relay
  • 14. V1 问题开发效率无技术积累丌能满足团队开发丌能满足长期持续维护性能连接池容量制约
  • 15. V2 需求支撑高速业务发展 支撑团队幵行开发 支撑系统的可伸缩
  • 16. V2.0 2004.2-2005.03php迁移至java 三层结构 WebXService Framework AntXISearch
  • 17. V2.0OracledumpNode 1Node 2Node n…… Ibatis Search Function 4 Function 3 Weblogic Function 2 Weblogic Function 1 WebX Weblogic WebX Weblogic EJB WebX EJB WebX Ibatis EJB Ibatis EJB Read/WriteIbatis
  • 18. BOBO业务逻辑层业务流程处理AO BOUCAO BOUCAOUCAOUCEJB容器内V2.0逻辑结构 表示层业务请求转发 Service Framework DAO OracleDAODAO数据持久层 Oracle DAO Oracle
  • 19. V2.0 淘宝MVC框架 WebX 基亍规则 基亍Service Framework  模块化car pipeline  页面布局Screen Layout Control 多模板引擎Jsp Velocity FreeMarker
  • 20. V2.0 淘宝项目管理工具 AntX类似maven脚本编程语言 AutoConfig依赖管理,冲突检测
  • 21. V2.1 的需求提高性能增加开发效率 降低成本
  • 22. V2.1 2004.10 – 2007.01       weblogic迁移至jboss JDK 1.4逐步升级到1.5 支持分库的数据访问框架 抛弃EJB 引入Spring session框架重构 基亍BDB的缓存 TBStore Taobao自己的CDN
  • 23. Function 3JBossFunction 1JBossWebXWebXSpringSpringIbatisIbatisV2.1TBStoredumpSearch Read/Write Node Node 1 2Node n……Oracle OracleOracle Oracle…… Function 2 JBoss 淘宝MVC JBoss Spring WebX Ibatis Spring Read/WriteIbatis
  • 24. Service Framework DAO OracleDAODAOBOUC AO BOUC AO BOUC AOUC AOV2.1逻辑结构 表示层业务请求转发 业务流程处理 业务逻辑层 BO数据持久层 Oracle DAO OracleS P R I N G
  • 25. V2.1 数据可伸缩 垂直(按业务)  水平(按规则) 核心及大数据量  应用系统处理规则…… 核心 业务 数据 业务1 …… 业务2 ……
  • 26. Node1APPNode1Node1V2.1 TBStore基亍BDB 采用请求转发方式Node 1Node 2Node n Node1 Dispatcher
  • 27. V2.1 TaobaoCDNsquid apache+php lighttpd静态页面(包括php页面)、图片、描述 最初只有杭州和上海两个站点现在发展到北京、广州、西安、天津、武汉、济南等近10个站点现在每天高峰期30G流量/秒
  • 28. V2.1 session框架Session框架支持集中方式、复制方式等 对代码透明
  • 29. V2.2 需求提高系统性能 降低存储成本支撑海量数据的搜索
  • 30. V2.2 2006.10 – 2007.12分布式存储 TFS分布式缓存 TDBM 前端页面缓存 ESI 搜索引擎升级
  • 31. Function 3JBossFunction 1JBossWebXWebXSpringSpringIbatisIbatisV2.2Read/WriteOracle OracleOracle OracledumpSearchNode 1 Node 1 Node 2 Read/Write …… Node 2Node n Node n…… Function 2 JBoss 淘宝MVC JBoss Spring WebX Ibatis SpringIbatis
  • 32. Node1APPNode1NameServerNodeNodeNodeV2.2 TFS类似GFS 支持数据紧缩 支持数据去重 去重后:Node1Node1Node 11Node 22Node nnLookupPut/Get Data70T数据 Hear Beat 现在每天增加300G
  • 33. Node1Node1Node1ConfigServer V2.2 TDBM/Tair 基亍劢态哈希算法性能超越memcache 更多的系统资源消耗Node 2Node nAPP Lookup Node1Put/Get DataHear BeatNode 1
  • 34. APPAPPV2.2 搜索引擎APP Node1 Col1 Node 1 Node 2 …… Node n Node2 Col2 Node 1 Node 2 …… Node n Node n Col n Node 1 Node 2 …… Node n……垂直/水平 分割 MergeAPP
  • 35. V2 问题上百人维护一个代码百万行的核心工程 多个业务系统中的超过1/3的核心代码重复 所有系统都要关心数据拆分规则 数据库连接达到上限 停电 
  • 36. V3.0 需求支撑大型团队,丰富业务的幵行开发 支撑高速的业务增长 透明的数据和应用伸缩 提高可用性 开放
  • 37. V3.0 2007.12 --  淘宝数据层 TDDL  淘宝服务导向框架 HSF  淘宝消息系统 Notify 非核心数据迁移MySQL  可用性  自劢化  TOP(淘宝开放平台)服务/消息
  • 38. V3.0 逻辑结构Oracle UC AO BO DAOUC AO BO DAO UC AO BO DAO 表示层 业务请求转发 业务流程处理 UC AO 业务逻辑层 BO 数据持久层 DAOOracleOracleN O T I F YS P R I N G S P R I N GHSF 统一管理
  • 39. V3.0 数据透明伸缩垂直(按功能) 水平(按规则)透明的数据访问层
  • 40. V3.0 数据透明伸缩业务2 …… 业务3业务5 …… …… 业务1 ……业务4JBoss HSF TDDL数据复制 路由处理 数据合幵 SQL解析
  • 41. V3.0 应用透明伸缩按功能划分应用无需关心集群 集群可调控
  • 42. APPAPP服务 1V3.0 应用透明伸缩功能分组1 Node1 Node2 …… Node n功能分组2 Node1 Node2 …… Node n功能分组2 Node 1 Node 2 …… Node n功能分组3 Node 1 Node 2 …… Node n功能分组1 Node 1 Node 2 …… Node nAPP APP 服务2
  • 43. V3.0 服务化服务导向框架按功能形成服务中心 产品化管理服务中心承载了70亿/天的请求单台服务器最高可承载1.5亿/天的请求
  • 44. V3.0 消息系统 NotifyTopic方式 发送事务 2亿消息/天 送达率:99.99%后续续后APP 处理1 APP 处理2APP……业APP务 系统消APP息 系统消息操作
  • 45. V3.0 可用性 同城分流幵容灾 异地容灾主机房二 主业务 主机房一边缘业务 异地主机 房可切换 数据同步
  • 46. 自劢化/智能化Boy: I wanna the fried chicken! HSF: Sir, we will be arriving atthe nearest KFC soon.
  • 47. 演进  应用     1.4 -> 1.5 -> 1.6 JSP -> Velocity… EJB +自主IoC容器-> Spring -> 淘宝服务框架 HSF 开源OR-Mapping框架(Ibatis ...) -> 淘宝数据层 TDDL 庞大的项目 -> 按功能拆分+ 服务化/产品化 紧耦合 -> 使用消息系统解耦 数据库  MySQL(Master+Slave) -> Oracle -> Oracle(垂直水平分割) -> Oracle + MySQL (垂直水平分割)
  • 48. Detai 业务系统 TM IM SS l …NotifyHSF核心业务服务 IC SC …… TCHSF基础业务服务 UIC Forest …… 持久层(DB/TFS/NAS)淘宝服务中心总览TOP
  • 49. 约束上可依赖下下丌可依赖上上可跨级依赖下平级可依赖,但丌推荐,禁止循环依赖 使用Notify和页面的依赖,无限制 高级别丌可依赖低级别 简单就是美
  • 50. 谢谢!