淘宝网的架构演化分析

您所在的位置:网站首页 淘宝组织架构图 淘宝网的架构演化分析

淘宝网的架构演化分析

2024-07-16 03:40| 来源: 网络整理| 查看: 265

  2012年11月30日,淘宝(包括天猫)的当年交易额突破1万亿,这是一个可以鄙睨亚马逊和eBay的数字。而就在此前不久的2012年11月11日,淘宝更是创造了全球电子商务的奇迹,当天

总交易额:191亿人民币零点的第一分钟,1000万独立用户涌入www.tmall.con全天访问用户总数达2亿1千3百万,占中国网民总数的40%总成交订单数:1亿零5百万高峰期,每分钟成交订单89678笔

  所有这些绚丽的业务数字背后是淘宝多年积淀的电子商务网站架构技术。

淘宝网的业务发展历程

  淘宝的技术是和淘宝的业务一起发展起来的,没有飞速发展的淘宝业务,就不会有今天让技术界艳羡的淘宝技术,可以说,是业务驱动着技术不得不往前走。而淘宝的业务也经历了由简单到复杂,由初级到高级的发展历程,通过淘宝首页的变迁,我们可以看出淘宝业务逐步发展的脉络。

  2003年,在马云家里,用一个买来的C2C交易软件稍作修改就成了最初的淘宝网,简约也简单,如图所示。

淘宝网秘史:买来的系统 花名文化由来

  2004年,淘宝业务由模仿eBay的拍卖交易,开始向一口价交易转型,也就是现在淘宝购物的主要交易模式,这一年,淘宝的架构也经历了一次重大重构,PHP换成了Java,MySQL换成了 Oracle。那时,淘宝网首页虽然依旧简单,但是对于电子商务网站最重要的部分——商品类目开始建立并成为重要的商品导航方式,如图所示。

  此后数年间,淘宝逐步成为网购的代名词,引领中国电子商务的步伐,每年一度的“双十一”促销成为有中国特色的购物狂欢节。

淘宝网技术架构演化

  2003年,花3000美金买来的淘宝网站是用PHP开发的,淘宝的工程师做了简单的汉化处理,并对数据库做了读写分离,最早的淘宝网架构如图所示。

  像我们见过的绝大多数中小网站一样,当年的淘宝网使用典型的 Linux+Apache+MySQL+PHP(LAMP)架构。作为一个刚刚起步的小网站,使用开源、免费、简单的技术产品搭建网站是明智之举,可谓一举多得:免费的技术降低网站的成本,成熟的开源技术可以从开源社区获取文档和技术支持;网站发展初期,业务不明确,需求变化多,简单的技术方案可以快速响应需求变化;简单的技术也可以让工程师快速上手,缩短学习周期;退一步,如果业务发展不顺利,及时关闭网站止损,亦可减少沉没成本促使管理层和投资者快速决策。

2003年淘宝网架构(图)

  幸而淘宝业务蒸蒸日上,逐步蚕食eBay在中国的市场。随着业务的快速发展,电子商务网站特有的业务复杂性和PHP易开发、难维护的特性产生了难以调和的冲突;不断扩展的业务让工程师承受着沉重的负担;不断增加的用户和商品数又让系统特别是存储系统不堪重负。总之,架构重构势在必行。2004年,淘宝在SUN技术顾问的协助下进行了一次重要的重构,放弃了原来的LAMP架构,转而使用Java作为开发平台,使用 Oracle做后端数据库,如图所示。

  系统架构使用了当时在企业应用领域崭露头角的MVC框架和ORM框架,分别解决视图与业务逻辑分离的问题和对象与关系数据库解耦的问题,淘宝没有使用当时风头正劲的 Struts和 Hibernate,而是选择了自己开发MVC框架Webx,而ORM框架则选择了IBatis。

2004年淘宝网架构(图)

  当时淘宝还开发了另一个重要产品Anx,这个针对Java平台的、扩展自Ant的项目构建工具对于网站项目开发、测试、发布至关重要,一个非常重要的功能就是管理配置项。对于一个Java开发的大型Web系统,内部通常会包含数百个jar文件,每个jar文件都是一个独立的模块,这些模块由不同团队开发,实现不同功能,最后组成一个完整的系统。这些模块通常也都有自己的配置文件,比如数据库连接模块需要配置数据库URL连接池大小等,这些配置参数在开发环境、测试环境、生产环境各不相同。Antκ提供了一个灵活管理这些分散配置项的解决方案。

  应用服务器使用 Weblogic,数据库使用 Oracle,这些产品都需要昂贵的授权使用费。而 Oracle又需要部署在昂贵的IBM小型机和同样昂贵的EMC存储设备上。淘宝这时候弃免费而选择付费产品,和建站初选择免费一样,同样是明智之举:业务快速发展,宝贵的开发资源应该投入到新业务开发上,而不是解决这些可以用付费产品搞定的基础技术问题上;成熟的付费产品和售后支持令业务和市场没有后顾之忧,可以全力以赴地拓展市场;对于一个快速发展的网站,特别是电子商务网站而言,严重宕机、重要用户数据丢失可能会极大地打击消费者信心,令网站发展平生波澜,而这些业界领先的产品经过多年的洗练,有较强的可用性保证。

  此后三四年间,淘宝在 Oracle、EMC、IBM的护航下,高歌猛进,业务蒸蒸日上,技术也逐渐成长,基于自身需求,逐步摸索适合自己的技术发展之路,如图所示。

2006年淘宝网架构(图)

  放弃EJB,引入 Spring,用免费的 JBoss替代收费的 Weblogic,因为 Weblogic并非物有所值,EJB对于网站来说也太过笨重。淘宝后来甚至用更轻量级的Jey替代了 JBoss,对淘宝而言,应用服务器只需要一个 Servlet容器,越简单越快越好。在合适的场景下使用合适的产品,而不是最好的产品,所谓小脚穿大鞋,不但跑不快,还可能会摔跤。

  直到这时,淘宝架构和技术依然是泯然于众的中庸水平而已,没有拖业务的后腿,使用业界成熟的方案和可靠的技术,没有什么可指责的也没有什么可炫耀的。但也就是在这个时候,淘宝技术开始发力,许多奠定淘宝坚实架构基础的产品和技术从这个时候开始逐步酝酿,走向成熟。目前这些产品多数都已开源,如表所示。

项目名描述Tair分布式 Key/value存储引擎,分为持久化和非持久化两种使用方式TFS分布式文件系统,适用于海量小文件存储Ocean Base分布式数据库系统,支持千亿级别的读写事务TDDL对应用透明的分库分表层和具有众多特性的动态数据源

  随着淘宝技术的不断发展壮大,淘宝对集群环境下分布式高可用系统的架构设计技术越来越得心应手, Oracle、IBM、EMC也变得不是必须,于是淘宝开始逐步放弃使用这些昂贵的设备和软件,回归到开源的 MySQL及 NOSQL系统,正如淘宝2003年建站之初的选择。这也再一次验证了辩证法关于事物发展的否定之否定及螺旋式上升的普遍规律,仿佛回到原点,但一切已经完全不同了。

感触

  如果说有什么神奇的力量促使淘宝技术脱胎换骨,化蛹成蝶,站在中国互联网软件开发技术之巅华山论剑的话,笔者认为最重要甚至唯一的驱动力就是:不得已。随着业务的飞速发展,用户、数据、流量、业务复杂度都呈指数级增长,飞速接近甚至突破 Oracle、IBM这些企业提供的解决方案的有效范围,在开源领域虽有 Google、 Yahoo等先驱在探索道路,并有一些开源产品,但是在大规模集群实践上,大家都在摸索,淘宝必须走自己的路,路上也许有烛光照明,但是没有人指路。而有些路,走过以后,再回头,一览众山小!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3