Aboutme姓名:曾宪杰花名:华黎淘宝-产品技术-Java中间件团队团队博客Sina微博@曾宪杰_华黎Twitter@vanadies102内容提要淘宝网架构的变迁基于Java技术的基础产品业务中特色系统介绍3淘宝网的架构变迁4技术里程总览V1.0(2003.5–2004.5)小而快的简单架构V2.0(2004.2–2008.3)应付业务增长的层次化结构开始有自己开发的软件技术V3(2007.10-2009.11)产品化的思维做深,做精服务导向的框架应付多样化的业务V4(2009.8-)系统化智能化专业化V1.0:小而快2003.5–2004.5简介2003年非典时期使用LAMP架构(Linux,Apache,MySql,Php)业界流行的免费开源组合使用改造过的一个商业软件phpAuction,以拍卖为主简单的库表结构用户,交易,列表,其他简单的结构,但符合当时需求7V2.0:多层次结构,开始做自己的软件2004.2–2008.3需求业务发展快速需要“较高”性能的架构(百万至千万用户级的架构)团队并行开发开始有小团队(几十人)做开发,开发效率必需考虑系统的可伸缩容易的扩容,增加机器9简介应用中间件软件由weblogic迁移至jboss支持分库的数据访问框架自主的淘宝分布式文件系统,TFS自主的搜索引擎,iSearch自主的缓存系统,TDBMTaobao自己的CDNCDN(ContentDeliveryNetwork),增进性能因应业务的增多,用户的激增,架构也日趋多层化业务流程处理数据持久层业务逻辑层BOBOBOBOBOBOBOBOBOAOAOAOAOAOAOUCUCUCUCUCUCDAODAODAODAODAO表示层-WEBX业务请求转发数据数据数据数据采用SPRING作为统一的框架10问题I上百人维护一个代码百万行的核心工程共享一个代码模块,Denali(虽然部署是分离的)多个业务系统中的超过1/3的核心代码重复编写代码复杂难维护V2单一代码模块的设计(Denali)11问题II所有系统都要关心数据拆分规则不必要的设计数据库连接达到上限(每个Oracle数据库大约提供5000个链接)连接池是有限的资源Oracle数据库太多的应用机器有限的链接池需要数据库连接12V3.0:产品化思维及服务导向框架2007.10-2009.11需求支撑大型团队,丰富业务的并行开发软件模组化,中心化(用户,交易,商品,店铺,评价等),走向鬆耦合基础软件产品化独立团队开发,做深,做大从盖独立别墅到建造高楼大厦!支撑高速的业务增长快速扩容(几十亿PV,几千亿GMV,几万台机器)提高可用性及管理性走向AlwaysAvailable对外开放14结构数据和应用透明伸缩非核心数据从Oracle迁移MySQL消息系统服务框架和服务化淘宝开放平台(TOP)运营支撑平台(TBoss)用户中心交易中心商品中心收费中心鬆耦合,服务导向的架构15V4.0:系统化、智能化、专业化2009.8-现状系统化把知识经验通过系统、平台进行沉淀,而不是总是人肉重复智能化从提供开关人工处理到系统自主决策专业化业务平台、技术平台的深耕稳定性、性能的深入发展17技术里程回顾V1.0(2003.5–2004.5)小而快的简单架构V2.0(2004.2–2008.3)应付业务增长的层次化结构开始有自己开发的软件技术V3(2007.10-2009.11)产品化的思维做深,做精服务导向的框架应付多样化的业务V4(2009.8-)系统化智能化专业化基于Java技术的基础产品19计算机硬件结构图外存内存运算器控制器输入设备输出设备数据、程序CPU主机数据、程序数据、程序冯.诺依曼型计算机计算机组成计算机系统的本质数据处理数据存储数据访问大型互联网访问量很大?数据量很大?访问量和数据量需要都很大核心是通过分布式系统解决前面提到的三个问题网站结构示意图LoadBalancerWebAppWebAppServiceServiceCache分布式存储搜索消息中间件服务框架CDN数据层DB数据层并行计算平台DBDB(S)DB(S)监控运维平台23Web框架Webx在阿里内部广泛使用的MVC框架Turbine风格有很好的层次化、模块化,并且高度可扩展基于Webx的无线应用自适应框架Velocity的编译优化中间件LoadBalancerWebAppWebAppServiceServiceCache分布式存储搜索消息中间件服务框架CDN数据层DB数据层并行计算平台DBDB(S)DB(S)监控运维平台25服务框架服务发布服务查询服务调用服务治理服务框架07年淘宝开始走向服务化08年初有多种RPC的方式基于SOCKET,有多种不同实现使用上不透明,成本高服务框架简单透明(提供服务和使用服务)支持软负载灵活可控,方便扩展稳定性支持服务框架调用者服务提供者调用者服务提供者服务注册查找中心29中间件LoadBalancerWebAppWebAppServiceServiceCache分布式存储搜索消息中间件服务框架CDN数据层DB数据层并行计算平台DBDB(S)DB(S)监控运维平台30消息中间件•Message-orientedmiddleware(MOM)issoftwareinfrastructurefocusedonsendingandreceivingmessagesbetweendistributedsystems.---fromwikipedia.org•MOM的优点–松耦合–异步处理ApplicationAApplicationBApplicationProgrammingInterfaceMessageOrientedMiddleware31消息中间件doactionCallACallBSystemASystemB传统方式使用消息中间件方式doactionSendmessageSystemASystemBMOM32消息中间件业务系统完成一件事情后,需要其他系统进行处理的,通过定时程序来驱动业务系统Dosomething业务DB定时程序获取任务Doaction33消息中间件Notify是一个高性能、可靠、可扩展、可与发送端业务逻辑相结合、支持订阅者集群的消息中间件。互联网时代的消息中间件支持最终一致消息可靠支持订阅者集群34中间件LoadBalancerWebAppWebAppServiceServiceCache分布式存储搜索消息中间件服务框架CDN数据层DB数据层并行计算平台DBDB(S)DB(S)监控运维平台35数据层36数据层UserUser1User2User1-MUser2-MUser2-SUser1-S分库分表读写分离数据库架构的演进37数据层User1-MUser2-MUser2-SUser1-STAtomDataSourceTGroupDataSourceTDataSource数据源的三层重构业务可以灵活选择38数据层SQL解析,路由规则,数据合并Client-DB和Client-Server-DB模式非对称数据复制三层的数据源结构39LoadBalancerWebAppWebAppServiceServiceCache分布式存储搜索消息中间件服务框架CDN数据层DB数据层并行计算平台DBDB(S)DB(S)监控运维平台40HBase图来源于:基于0.90.2进行扩展运维页面;fixmaster恢复时间过长的bug;fixbackupmaster不自动接管的bug;避免Regionserver接到过大数据请求OOM;完善TableBalance;HBaseetao:100台机器,目前已使用60T;数据魔方:10台机器,目前已使用500G+;交易日志:12台机器,目前已使用360G+;UDC:8台机器,目前已使用600G+;。。。。。。43LoadBalancerWebAppWebAppServiceServiceCache分布式存储搜索消息中间件服务框架CDN数据层DB数据层并行计算平台DBDB(S)DB(S)监控运维平台44终搜架构45终搜特性列表中心化的配置管理(非本地配置)产品化/框架化,抽象物理模型(产品化,平台化)多种Dump机制的支持,数据预处理机制Taobao化,HSF、ConfigServer等淘宝自有技术的使用Solr外围扩展(不修改Solr代码,上层扩展)支持实时搜索,实时时间1s内产品化/框架化,抽象物理模型(产品化,平台化)46Hbase应用在历史库的搜索上47LoadBalancerWebAppWebAppServiceServiceCache分布式存储搜索消息中间件服务框架CDN数据层DB数据层并行计算平台DBDB(S)DB(S)监控运维平台48并行计算平台基于Hadoop的云梯1系统JobTracker异步化NameNode优化存储优化小作业优化49并行计算平台总容量25.35PB,利用率55.2%总共1400+台机器Master:8CPU(HT),96GB内存,SASRaidSlave节点异构8CPU/8CPU(HT)16G/24G内存1Tx12/2Tx6/1Tx6SATAJBOD12/20slots约40000道作业/天,扫描数据:约1.7PB/天用户数474人,用户组38个50并行计算平台简化版的实现方便部署、维护和管理MasterWorkerWorkerWorkerLoadBalancerWebAppWebAppServiceServiceCache分布式存储搜索消息中间件服务框架CDN数据层DB数据层并行计算平台DBDB(S)DB(S)监控运维平台52CSP业务架构52逻辑单元逻辑单元逻辑单元逻辑单元逻辑单元CSP收集分析器db应用系统收集分析器db收集分析器db收集分析器db收集分析器db控制服务中心应用系统应用系统应用系统应用系统应用系统应用系统应用系统应用系统应用系统应用系统应用系统54CSP的一些数据平台化15台机器,15个库APP采用了逻辑单元的概念(隔离)采用15个逻辑单元对超过200多个系统进行监控每日数据超过5000万24个系统进行容量规划10个系统进行依赖关系6个系统完成统一的保护开关部署5455哈勃系统架构配置中心AgentAgentAgentAgentAgentAgentAgent采集层分析服务器(slave)分析服务器(slave)分析服务器(slave)分析层分析服务器(Master)……应用层Mysql配置库cassandra数据库集群对外接口数据展现报警系统整个系统分为“采集”,“分析报警”和“应用(展现)”三个层次,实现了“采集”,“分析”,“报警”,“存储”和“展示”五大功能。56系统特点超轻量级HubAgent:HubAgent是一个基于插件模式轻量级HTTP服务,可以通过增加插件的方式进行扩展,目前已提供“增量日志获取”,“外部程序(脚本)调用”,“进程&线程探测”,“端口探测”等多种服务。系统使用Python开发,不依赖第三方系统,可以安装在任何linux服务器上。分布式的分析系统:.分析系统使用MapReduce的编程模型,对大量的监控数据进行并行处理。系统将采用松耦合的Master-Slave模式,Master处于被动状态,只负责任务的生成和合并,不需要关心任务分派。系统设计更加简单、灵活,通过增加Slave即可得到水平扩展能力。Cassandra数据存储:系统使用Cassandra来实现大量监控数据的分布式存储,Cassandra具有模