
阿里P8架构师谈:淘宝技术架构从10到40的架构变迁!.docx
13页淘宝技术架构变迁自2003年创立以来的,淘宝业务发展非常迅速,几乎是每年以100%的速度在成长创 立之初,为了快速上线,抢占市场,选择了当时流行的LAMP架构,用PHP作为网站开 发语言,Linux作为操作系统,Apache作为Web月服务器,MySQL为数据库,用了三个 月不到的时间淘宝就上线了当时整个网站应用服务器大概10台左右,MySQL数据库采 用了读写分离、一主两备的部署方式2004年在淘宝业务发展的推动下,我们参考电信运营商、银行等的一些企业解决方案,将LAMP架构改造为Oracle+IBM小型机的数据库架构和EMC存储方式(图2)虽然 方案成本昂贵,但性能非常好同时,随着网站流量的增加,系统显得有些不堪重负当 时最担心的问题是网站流量如果持续增加,交易量持续增加,网站的系统架构怎么设计? 如何选择数据库?如何选择缓存?如何构建业务系统? 后来参考eBay的互联网设计架构,设计了一个Java的技术方案,并使用了非常多的Java开源产品例如,选择当时比 较流行的JBoss,作为应用服务器;选择一个开源的IOC容器Spring,来管理业务类;封 装了一个数据库访问工具IBatis,作为数据库和Java类的Object-Reletionship映射工具。
另外,对于商品搜索功能,采用自己开发的ISearch搜索引擎来取代在O racle数据库中 进行搜索,降低数据库服务器的压力做法比较简单,每天晚上全量将O racle小型机的 数据dump出来,Build成ISearch的索引,当时商品量也不大,一台普通配置的服务器, 基本上可以将所有的索引都放进去,没做切分,直接做了一个对等集群 "TmimEiririnrwmnmrmrrTmrnnmtwiiTwmrmrmniv nnmrm ■mnrmnrmmnf fit rmnnranrmirm Tnmririrmnri-ArwmfrmAnri 一■- 七: Appl App2 App3应用层数据层Read/Wrltc从2006年开始,淘宝为了改善用户体验,开始建立自己的CDN站点,由于淘宝的主要 流量来源于各种商品图片、商品描述等静态数据,自建CDN可以使这些资源离用户更近, 提升用户访问速度,改善用户浏览网站的体验2007年,淘宝全年的交易额超过400亿元,平均近1亿多一天,每天有100多万笔交易 被创建当时面对的几个主要问题是:一些系统的流量非常大,如商品详情等,如果直接 访问数据库,会导致数据库压力非常大;如用户信息,访问一个页面,都需要查询买家信 息、卖家信息、显示出买家的信用、卖家的服务星级等。
此时,淘宝采用分布式缓存 TDBM( Tair的前身)将这些热点静态数据缓存在内存中,提高访问性能另外,将自己 研发的分布式文件系统TFS部署在多台x86服务器上,取代商业的NAS存储设备来存储淘宝的各种文件信息,如商品图片、商品描述信息、交易快照信息,来达到降低成本和提 高整体系统的容量和性能的目的,同时可以实现更灵活的扩展性第一期上线大概200台TFS服务器另外,将ISearch搜索引擎改为分布式架构,支持水平扩展,部署了48个 节点图3展示了这一架构思路2008年初,为了解决Oracle数据库集中式架构的瓶颈问题(连接数限制、I/O性能),应用层SpringI Bat i s将系统进行了拆分,按照用户域、商品域、交易域、店铺域等业务领域进行拆分,建立了20多个业务中心,如商品中心、用户中心、交易中心等所有有用户访问需求的系统,必须使用业务中心提供的远程接口来访问,不能够直接访问底层的MySQL数据库,通过HSF这种远程通信方式来调用业务中心的服务接口,业务系统之间则通过Notify消息中间件异步方式完成调用图4是淘宝的分布式架构图应用层 服务层WchXSnri ng数据层ji ■日•kr ra ra l*』#・-・r re ra-i iir »■!■! rt rr4 i" " i-B-Brfeii !■、*・■« fc-S-4 + ■■<" *--4>^ + «|4 i■点■«,* *、rri4 ri-i ・r,■ += rs4 FT «d-9-i r4 H Fat n* " • ■ > ■■••■■■• ■■• ■■ •■■■• ■■ ■■• •■■ •■■■• ■■• ■■> •-■■»■■» •■■ •■■■•■'■• •■ ■ •■■" ■■? 空想?缝蟀蹲…;从2010年开始,淘宝网重点着眼于统一架构体系,从整体系统层面考虑开发效率、运维 标准化、高性能、高可扩展性、高可用、低成本方面的要求,底层的基础架构统一采用了 阿里云计算平台(图5),使用了 SLB、ECS、RDS、OSS、ONS、CDN等阿里云计算服 务,并通过阿里云服务提供的高可用特性,实现双机房容灾和异地机房单元化部署,为淘宝业务提供稳定、高效和易于维护的基础架构支撑。
淘宝账号登陆数据回流自循环APP孵化工厂共享业旁中间件服务身特服务访问控制日志服务监控服务统计服务支掉体系ECS MQS OCS OSS OTS ■ CDN阿里云图s基于网里云前糠室架构在从IOE架构最终向云计算平台技术架构转移的过程中,主要面临以下几个技术挑战■可用性:脱离小型机和高端存储的高冗余机制,采用基于PC服务器的分布式架构的云 计算平台能否做到高可用■ 一致性:Oracle基于RAC和共享存储实现的物理级别一致性,基于RDS for MySQL 能否达到同样的效果■高性能:高端存储的I/O能力很强,基于PC服务器的RDS能否提供同样甚至更高的 I/O处理能力,MySQL和Oracle对SQL的处理性能是否相同■扩展性:业务逻辑如何拆分,如何服务化,数据分多少库分多少表,什么维度分,后期 二次拆分如何更方便等基于阿里云计算平台,通过采用合适的技术策略和最佳实践,包括:应用无状态,有效使 用缓存(浏览器缓存、反向代理缓存、页面缓存、局部页面缓存、对象缓存和读写分离), 服务原子化,数据库分割,异步解决性能问题,最小化事物单元,适当放弃一致性以及 自动化监控/运维手段包括监控预警、配置统一管理,基础服务器监控,URL监控,网络 监控,模块间调用监控,智能分析监控,综合故障管理平台,容量管理。
可以很好地解决 以上问题,从而达到整体系统的高可扩展性、更低的成本、更高的性能和可用性的实现效 果迁云架构最佳实践淘宝的技术架构是一个伴随业务逐渐发展而逐步演进的过程,中间沉淀了很多宝贵的架构 最佳实践对于大部分企业级客户来说,可以结合自己的业务场景选择合适的技术架构来 实现整体IT系统的互联网化设计不同应用场景下的迁云架构,包括文件存储、应用服务、 OLTP数据库、OLAP数据库对于文件存储方式,可以直接用OSS取代EMC存储实现海量数据文件的存储,OSS存储 最大容量可以达40PB,同时由于OSS是分布式存储方式,可以通过多个节点的并行读写 显著提高数据访问性能对于大文件,还可以通过Multipart Upload的方式,将大文件 分块并行传输与存储,实现高性能对于应用服务,可通过SLB+多台ECS实例组合取代IBM小型机(图6),也可以根据不 同应用类型,直接基于ACE、ONS、OpenSearch等阿里云中间件云服务部署特点:-单'机性能要求不高,无状态,可横偷扩展;•应用,服备融芟繁参.成E/S模式为兰:•系统的不同,所选择服务器击类不同」主要为X86PC服务脂,PC Server PC Server PC Serverst &案慎停迁0费&OLTP应用的迁移相对复杂。
目前阿里云的RDS实例最高是48GB内存,14000IOPS , 1TB的存储容量(SSD存储),支持MySQL和SQL Server这个配置作为单数据库服 务器来使用可以满足很多场景的数据库应用需求,可直接取代大部分场景下的IBM小型机 +Oracle数据库+EMC存储对于性能要求更高的应用,可考虑引入开放缓存服务OCS,将部分查询数据加载至分布式 缓存中,减少RDS的数据查询次数,提升系统的数据查询并发效率和降低响应时间,如图7所示应用层2在缓存中命中,直接返%/<读数据/ / -; \写敷据4.将查询结果退回CacheK 5.更新援3.若未命中、 则转到数据 摩查询数据RDSDB图了律用崩缓存的迁云黍构对于读的请求远大于写请求的场景,可以考虑用多个RDS数据库,采用分布式方式实现读写分离,写交易主要发生在主库,读请求访问备库,可以根据需求对读库进行扩展,以实 现整体请求性能的提升Slave #1RDS数据库Slavp #2RDS散据库Master对于数据规模较大的数据库表,可以通过水平切分的方式,将数据分布在多个RDS实例上, 通过并行的分布式数据库操作来实现性能和容量的提升jrequest4Parttlions * 2 Replicas = B DBTable FDRDS* \ RW R-onlyl屋J林日引唧脸) 5醐拆枷迁*总的来说,通过迁移到RDS、引入数据缓存、分库分表、读写分离等多种方式可以用Scale-Out方式取代原有的IOE架构,并且获得更好的性能和扩展性。
数据库上S/O2MBRDSgftf^Orade^库, 现高酬嘛孤忧葬顶咬于Oracled 阵.制做海成阴压成 A的而若.局眼:受里饨的薮据规戒性能扩醇 性髓容匪扩雇引入数据缓存在睥上层引入分布式避存京,溢 少DB访间次毂r提升性能.职能拆分/读写分圈瓦极婆DB的该写职帷行幼斐.M !单实例分敬鱼我压方.水平拆分/分表J,【子分布键础据水平抵食剂多 医席中.采用分布式DB技札对 于居可祝湃个买例■慌若"的玫IV即&询I性能 局陶:需西由曲申层控蒯Cache裁据向步怵勇:可旷屈刘有立言 大规我教耙才的叫处理 局限:雄护成本房,需喂 制携嘲分布腱.非分 布械讨蜀皆能泯-不保5f 数眶矛格,汶性对于O LAP应用,可采用O DPS+OTS+RDS/ADS的解决方案取代小型机+OracleDB+OLAP+RAC + EMC存储解决方案,如图11所示总体来看,迁云的通用架构方案如图12所示,针对具体业务系统的迁云方案还需要根据实际情况进行分析和合理选择批:」数据处理海里觐g实时查询漩盛数据蹇四他理图 11太数据分析类迁云架构览it均款SLB提住DNS忒担#斤及盗旦々黄均克W曲康务居= 拘用犀券队:活行在Eg蜜倒上的同命 谁行也日5忒帔上的宛甲膜务器虚驻.瓦B沽虻城 里劣器集群,可更活扩寇"迎云通用架构敏概庆RD5拘回幼埴巍七句.建一个响 用垩礼b走志吧•或ass支买沱量非的拘住分布式存坊=QTS支杜治玷始构化盐阴尊性筋叶 布式苣而;gp注以也抵仕目和为.摸存甘 方分祈;。












