2004年在淘宝业务发展的推动下,我们参考电信运营商、银行等的一些企业办理方案,将LAMP架构改造为Oracle+IBM小型机的数据库架构和EMC存储办法(图2)。虽然方案本钱昂贵,但性能非常好。同时,随着网站流量的增加,系统显得有些不堪重负。当时最担心的问题是网站流量如果持续增加,交易量持续增加,网站的系统架构怎么设计?如何选择数据库?如何选择缓存?如何构建业务系统?……后来参考eBay的互联网设计架构,设计了一个Java的技能方案,并利用了非常多的Java开源产品。例如,选择当时比较盛行的JBoss,作为运用做事器;选择一个开源的IOC容器Spring,来管理业务类;封装了一个数据库访问工具IBatis,作为数据库和Java类的Object-Reletionship映射工具。其余,对付商品搜索功能,采取自己开拓的ISearch搜索引擎来取代在Oracle数据库中进行搜索,降落数据库做事器的压力。做法比较大略,每天晚上全量将Oracle小型机的数据dump出来,Build成ISearch的索引,当时商品量也不大,一台普通配置的做事器,基本上可以将所有的索引都放进去,没做切分,直接做了一个对等集群。
从2006年开始,淘宝为了改进用户体验,开始建立自己的CDN站点,由于淘宝的紧张流量来源于各种商品图片、商品描述等静态数据,自建CDN可以使这些资源离用户更近,提升用户访问速率,改进用户浏览网站的体验。
2007年,淘宝整年的交易额超过400亿元,均匀近1亿多一天,每天有100多万笔交易被创建。当时面对的几个紧张问题是:一些系统的流量非常大,如商品详情等,如果直接访问数据库,会导致数据库压力非常大;如用户信息,访问一个页面,都须要查询买家书息、卖家书息、显示出买家的信用、卖家的做事星级等。此时,淘宝采取分布式缓存TDBM(Tair的前身)将这些热点静态数据缓存在内存中,提高访问性能。其余,将自己研发的分布式文件系统TFS支配在多台x86做事器上,取代商业的NAS存储设备来存储淘宝的各种文件信息,如商品图片、商品描述信息、交易快照信息,来达到降落本钱和提高整体系统的容量和性能的目的,同时可以实现更灵巧的扩展性。第一期上线大概200台TFS做事器。其余,将ISearch搜索引擎改为分布式架构,支持水平扩展,支配了48个节点。图3展示了这一架构思路。

2008年初,为理解决Oracle数据库集中式架构的瓶颈问题(连接数限定、I/O性能),将系统进行了拆分,按照用户域、商品域、交易域、店铺域等业务领域进行拆分,建立了20多个业务中央,如商品中央、用户中央、交易中央等。所有有用户访问需求的系统,必须利用业务中央供应的远程接口来访问,不能够直接访问底层的MySQL数据库,通过HSF这种远程通信办法来调用业务中央的做事接口,业务系统之间则通过Notify中间件异步办法完成调用。图4是淘宝的分布式架构图。
从2010年开始,淘宝网重点着眼于统一架构体系,从整体系统层面考虑开拓效率、运维标准化、高性能、高可扩展性、高可用、低本钱方面的哀求,底层的根本架构统一采取了阿里云打算平台(图5),利用了SLB、ECS、RDS、OSS、ONS、CDN等阿里云打算做事,并通过阿里云做事供应的高可用特性,实现双机房容灾和异地机房单元化支配,为淘宝业务供应稳定、高效和易于掩护的根本架构支撑。
在从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等阿里云中间件云做事支配。
OLTP运用的迁移相对繁芜。目前阿里云的RDS实例最高是48GB内存,14000IOPS,1TB的存储容量(SSD存储),支持MySQL和SQL Server。这个配置作为单数据库做事器来利用可以知足很多场景的数据库运用需求,可直接取代大部分场景下的IBM小型机+Oracle数据库+EMC存储。
对付性能哀求更高的运用,可考虑引入开放缓存做事OCS,将部分查询数据加载至分布式缓存中,减少RDS的数据查询次数,提升系统的数据查询并发效率和降落相应韶光,如图7所示。
对付读的要求远大于写要求的场景,可以考虑用多个RDS数据库,采取分布式办法实现读写分离,写交易紧张发生在主库,读要求访问备库,可以根据需求对读库进行扩展,以实现整体要求性能的提升。
对付数据规模较大的数据库表,可以通过水平切分的办法,将数据分布在多个RDS实例上,通过并行的分布式数据库操作来实现性能和容量的提升。
总的来说,通过迁移到RDS、引入数据缓存、分库分表、读写分离等多种办法可以用Scale-Out办法取代原有的IOE架构,并且得到更好的性能和扩展性。
对付OLAP运用,可采取ODPS+OTS+RDS/ADS的办理方案取代小型机+Oracle DB+OLAP+RAC+EMC存储办理方案,如图11所示。总体来看,迁云的通用架构方案如图12所示,针对详细业务系统的迁云方案还须要根据实际情形进行剖析和合理选择。
以上便是淘宝的技能架构变迁详解,以下是最新阿里P8架构师谈架构设计系列详解。
领取方法
关注+转发后,私信关键词 【架构】即可学习!
主要的事情说三遍,转发、转发、转发后再发私信,才可以拿到哦!