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等先驱在探索道路,并有一些开源产品,但是在大规模集群实践上,大家都在摸索,淘宝必须走自己的路,路上也许有烛光照明,但是没有人指路。而有些路,走过以后,再回头,一览众山小!

淘宝网的架构演化分析相关推荐

  1. 淘宝网的软件质量属性分析

    在学习了软件的质量属性之后,我们以淘宝网为例分析软件的质量属性. 1.可用性分析 综合所学知识,我理解的可用性是指系统能正常为用户提供服务的时间比例.可用性与系统故障及其相关后果有关.当系统不再提供其 ...

  2. 《淘宝网》质量属性分析

    以<淘宝网>为例,描绘质量属性的六个常见属性场景. 1.可用性分析 可用性分析所关注的方面包括:如何检测系统故障,系统故障发生的频度,出现故障时会发生什么情况,允许系统有多长时间非正常运行 ...

  3. 淘宝网——软件质量属性场景分析

    六大质量属性:可用性.可修改性.性能.安全性.可测试性.易用性. 1.可用性(availability): 可用性关注的问题:如何检测故障:发生故障的频度:出现故障时的现象:系统故障排除的时限:如何防 ...

  4. 淘宝网的质量属性分析

    常见的质量属性共有6个方面: 可用性,可修改性,性能,安全性,可测试性,易用性 刻画质量属性的手段,6部分组成: 刺激源,刺激 ,环境 ,制品 ,响应, 响应度量 1.可用性 可用性就是系统应能长期稳 ...

  5. 王文彬(淘宝网首席架构师)等关注探讨的问题

    讨论的内容很泛泛,大概纪录了一下: 1.网站流量影响整个网站架构的设计 2.网站架构的设计是一种平衡的设计,没有完美的架构,架构的设计要简单灵活,便于扩充,因此找出平衡点是关键 3.网站架构的设计不要 ...

  6. 基于Android平台淘宝网手机客户端实战开发(共四季,涉及各类技术应用)

    本课程共分四季,学习本课程需要拥有Android方面一定的技术基础, http://www.ibeifeng.com/goods.php?id=176 本项目涉及技术点如下: 第一季:主要涉及的技术点 ...

  7. 解密淘宝网的开源架构(转)

    淘宝网,是一个在线商品数量突破一亿,日均成交额超过两亿元人民币,注册用户接近八千万的大型电子商务网站,是亚洲最大的购物网站.那么对于淘宝网这样大规模的一个网站,我猜想大家一定会非常关心整个网站都采用了 ...

  8. 淘宝网-接口测试白皮书V0.1

    <软件自动化测试开发> 出版了 淘宝(中国)软件有限公司 接口测试白皮书   V0.1 淘宝网平台测试组(qa.taobao.com) 淘宝网-接口测试白皮书 2 目录 1  接口测试的背 ...

  9. 淘宝网林昊:行走在技术巅峰

    林昊领导的是淘宝网"秒杀"活动的技术支持团队.在此次"战役"之后,林昊对淘宝网的技术实力有了更清晰的认识,他更要学习国外顶尖的网站,帮助淘宝网更上一层楼. 他是 ...

  10. 软件系统架构质量属性——淘宝网分析

    一.可用性 可用性与系统故障及其相关后果有关 所关注的方面:如何检测系统故障,系统故障发生的频度,出现故障会发生什么情况,允许系统有多长时间非正常运行,什么时候可以安全地消除故障,如何防止故障的发生以 ...

最新文章

  1. Uber提出损失变化分配方法LCA,揭秘神经网络“黑盒”
  2. 【命令】usemod 的用法
  3. redux-saga 实践总结
  4. (4)Python3笔记 之 流程控制
  5. 乌班图anaconda安装
  6. 真是蛋疼,cvet网测
  7. Ubuntu 10.04 安装在 VMware Workstation 7 后,键盘无反应的解决方法
  8. 【观察】华为:给园区安防加点“智慧”
  9. 台式机装苹果系统_AMD台式机装苹果系统!!
  10. 兜兜转转躲不命运轮回---Java基础学习笔记1
  11. 为什么要有域名,看完你就懂了。
  12. 3D技术一些回答以及前景
  13. 电商RPA:直播行业必不可少的工具
  14. 光滑性准则(Smoothness Rule) 递推方程(Recursive Equation)
  15. 日语 “何” 的读音问题
  16. 《前端技巧》清理微信浏览网站的缓存,Cookie
  17. Opencv图片锐化
  18. 软件自动化测试项目总结,自动化测试总结报告.docx
  19. [JSOI2016]扭动的回文串
  20. 【安卓10修改系统文件】安卓10修改系统文件hosts

热门文章

  1. linux u盘安装win8,u盘启动大师安装深度技术win8.1系统教程
  2. mapper.xml中注释问题
  3. Android搜索关键字高亮显示
  4. devcon命令开启启用/禁用端口
  5. smartadmin mysql_ApiBoot Logging 和Logging Admin使用总结
  6. vs2015安装vs assist 教程
  7. 即时通讯源码php开源版下载附安装教程+演示
  8. Cisco Packet Tracer Student思科命令
  9. 自然语言处理-停用词
  10. android编程实现128条形码的生成和识别