⑴淘宝的技术是和淘宝的业务-起发展起来的, 没有飞速发展的淘宝业务,就不会有今天让技术界艳羡的淘宝技术,可以说,是业务驱动着技术不得不往前走。而淘宝的业务也经历了由简单到复杂,由初级到高级的发展历程,通过淘宝首页的变迁,我们可以看出淘宝业务逐步发展的脉络。
⑵年,在马云家里,用一个买来的交易软件稍作修改就成了最初的淘宝网,简约也简单。
⑶年,淘宝业务由模仿eBay的拍卖交易,开始向一口价交易转型,也就是现在淘宝购物的主要交易模式,这一年,淘宝的架构也经历了一次重大重构,PHP 换成了Java,MySQL换成了Oracle。 那时,淘宝网首页虽然依旧简单,但是对于电子商务网站最重要的部分一商 品类目开始建立并成为重要的商品导航方式。
⑷此后数年间,淘宝逐步成为网购的代名词,引领中国电子商务的步伐,每年一度的“双十一”促销成为有中国特色的购物狂欢节。
⑸一、淘宝网技术架构演化
⑹年,花美金买来的淘宝网站是用PHP开发的,淘宝的工程师做了简单的汉化处理,并对数据库做了读写分离。
⑺像我们见过的绝大多数中小网站一样,当年的淘宝网使用典型的Linux+Apache+MySQL+PHP ( LAMP )架构。作为一个刚刚起步的小网站,使用开源、免费、简单的技术产品搭建网站是明智之举,可谓一.举多得:免费的技术降低网站的成本,成熟的开源技术可以从开源社区获取文档和技术支持;网站发展初期,业务不明确,需求变化多,简单的技术方案可以快速响应需求变化;简单的技术也可以让工程师快速上手,缩短学习周期;退一步,如果业务发展不顺利,及时关闭网站止损,亦可减少沉没成本,促使管理层和投资者快速决策。
⑻幸而淘宝业务蒸蒸日上,逐步蚕食eBay在中国的市场。随着业务的快速发展,电子商务网站特有的业务复杂性和PHP易开发、难维护的特性产生了难以调和的冲突;不断扩展的业务让工程师承受着沉重的负担;不断增加的用户和商品数又让系统特别是存储系统不堪重负。总之,架构重构势在必行。 年,淘宝在SUN技术顾问的协助下进行了一次重要的重构,放弃了原来的LAMP架构,转而使用Java作为开发平台,使用Oracle做后端数据库。
⑼系统架构使用了当时在企业应用领域崭露头角的MVC框架和ORM框架,分别解决视图与业务逻辑分离的问题和对象与关系数据库解耦的问题,淘宝没有使用当时风头正劲的Struts 和Hibernate,而是选择了自己开发MVC框架Webx,而ORM框架则选择了IBatis。
⑽应用服务器使用Weblogic,数据库使用Oracle,这些产品都需要昂贵的授权使用费。而Oracle又需要部署在昂贵的IBM小型机和同样昂贵的EMC存储设备上。淘宝这时候弃免费而选择付费产品,和建站初选择免费一样,同样是明智之举:业务快速发展,宝贵的开发资源应该投入到新业务开发上,而不是解决这些可以用付费产品搞定的基础技术问题上;成熟的付费产品和售后支持令业务和市场没有后顾之忧,可以全力以赴地拓展市场;对于一个快速发展的网站,特别是电子商务网站而言,严重宕机、重要用户数据丢失可能会极大地打击消费者信心,令网站发展平生波澜,而这些业界领先的产品经过多年的洗练,有较强的可用性保证。
⑾此后三四年间,淘宝在Oracle、EMC、IBM的护航下,高歌猛进,业务蒸蒸日上,技术也逐渐成长,基于自身需求,逐步摸索适合自己的技术发展之路。
⑿放弃EJB,引入Spring,用免费的JBoss替代收费的Weblogic,因为Weblogic 并非物有所值, EJB对于网站来说也太过笨重。淘宝后来甚至用更轻量级的Jetty替代了JBoss,对淘宝而言,应用服务器只需要一个 Servlet 容器,越简单越快越好。在合适的场景下使用合适的产品,而不是最好的产品,所谓小脚穿大鞋,不但跑不快,还可能会摔跤。
⒀直到这时,淘宝架构和技术依然是泯然于众的中庸水平而已,没有拖业务的后腿,使用业界成熟的方案和可靠的技术,没有什么可指责的也没有什么可炫耀的。但也就是在这个时候,淘宝技术开始发力,许多奠定淘宝坚实架构基础的产品和技术从这个时候开始逐步酝酿,走向成熟。目前这些产品多数都已开源。
⒁随着淘宝技术的不断发展壮大,淘宝对集群环境下分布式高可用系统的架构设计技术越来越得心应手,Oracle、IBM、EMC也变得不是必须,于是淘宝开始逐步放弃使用这些昂贵的设备和软件,回归到开源的MySQL及NoSQL系统,正如淘宝年建站之初的选择。这也再一次验证了辩证法关于事物发展的否定之否定及螺旋式上升的普遍规律,仿佛回到原点,但一切已经完全不同了。