淘宝网的技术发展史(一)——个人网站时代

来源:互联网 发布:印度撤军知乎 编辑:程序博客网 时间:2024/06/01 09:30

《天下网商·经理人》十月刊开始将连载系列文章《淘宝网的技术发展史》,为读者描述淘宝网在整个发展过程中,所有的主动和被动的技术变革的前因后果。

文/淘宝技术大学培训专家 子柳  

前言

11月11日,这个棍子最多的日子被网民自我调侃变成了一个节日——“光棍节”。而淘宝网又用疯狂的折扣促销给它赋予了另外一个意义——“购物狂欢节”。2011年11月11日这一天,淘宝商城(现天猫商城)与淘宝网交易额之和突破52亿元,这个数字是“购物天堂”香港一天零售总额8.5亿元的6倍。

网民感受到的是疯抢的喜悦,而网站的技术人员感受到的却是“压力山大”。就如同你家办酒席,宴请左邻右舍,这个办起来容易。倘若宴请十里八乡所有的人,吃饭的人自然开心,但却不是一般人家能够办得起来的。能办得起来如此盛宴者,需要强大的财力物力、组织能力、技术实力,例如做这么多菜,你的炒锅一定要是“分布式的”、“可复制的”、“可扩展的”,洗菜切菜要有“工作流引擎”,上菜的路径要用图论计算出来,甚至连厨房的下水道都要重新设计。

淘宝能够举办如此盛宴,网站的技术实力可见一斑。淘宝网拥有全国最大的hadoop分布式计算集群之一,日新增数据50TB,有40PB海量数据存储。分布在全国各地80多个节点的CDN网络,支持的流量超过800Gbps。淘宝的搜索引擎能够对数十亿的商品数据进行实时搜索,另外还拥有自主研发的文件存储系统和缓存系统,以及java中间件和消息中间件系统,这一切组成了一个庞大的电子商务操作系统。

另外从商业数据上来看,Amazon的财报显示其2011年完成了大约 480亿美金的交易额。eBay2011年财报显示其全年完成了大约600亿美金的交易额(不包括其独立的汽车交易平台交易额)。不管从交易额、商品数量还是同比增速等指标上看,淘宝网均远超于此,是目前全球最大的电子商务平台。(笔者注:由于淘宝非上市公司,未公布2011年业绩,以上内容来自淘宝网技术副总裁行癫的微博)

为了有个更直观的对比,我们说一个同行,它在2011年光棍节之前做促销,流量上去之后,达到12Gbps,达到了极限,网站几乎挂掉,用户无法下订单。而淘宝网光棍节当天网络的流量最高达到800多Gbps,带给各家银行和快递公司的流量也让他们压力山大,如临大敌。另外如果你在网上购买过火车票的话,更能体会到网站能支持多大的流量有多重要。但这不是一朝一夕做出来的,也不是有钱就能办到的。

以上对比的这些网站,也许读者很容易就猜到是哪一家,这里拿出来作对比,绝对没有嘲笑人家的意思,采用通常的网站技术方案,能做到这种程度已经算不错了。

任何网站的发展都不是一蹴而就的,处在什么样的阶段就采用什么样的技术。在发展的过程中网站会遇到各种各样的问题和业务带来的压力,正是这些推动着技术的进步和发展,而技术的发展又会反过来促进业务的更大提升。二者互为因果,相互促进。如今淘宝网的流量已经是全球排名第12、国内排名第3。淘宝网的系统也从使用一台服务器,到采用万台以上的服务器。

本文就为大家描述淘宝网在整个发展过程中,所有的主动和被动的技术变革的前因后果。淘宝网的出身,网上有非常多的传说,下面我们就从它的出生开始讲起。

出生:买一个来

2003年4月7日,马云,在杭州成立了一个“神秘的组织”。他叫来十位员工,要他们签了一份协议,这份协议要求他们立刻离开阿里巴巴,去做一个神秘的项目。这个项目要求绝对保密,老马戏称“连说梦话被老婆听到都不行,谁要是透漏出去,我将追杀到天涯海角”。这份协议是英文版的,匆忙之间,大多数人根本来不及看懂,但出于对老马的信任,都卷起铺盖离开了阿里巴巴。

他们去了一个神秘的据点——湖畔花园小区的一套未装修的房子里,房子的主人是马云。这伙人刚进去的时候,马云给他们布置了一个任务,就是在最短的时间内做出一个个人对个人(C2C)的商品交易网站。

先介绍一下这个创业团队的成员:三个开发工程师(花名虚竹、三丰、多隆)、一个UED(花名二当家)、三个运营(花名小宝、阿珂、破天)、一个经理(花名财神),还有就是马云和他的秘书。当时对整个项目组来说压力最大的就是时间,怎么在最短的时间内把一个从来就没有的网站从零开始建立起来?

了解淘宝历史的人都知道淘宝是在2003年5月10日上线的,这之间只有一个月。要是你在这个团队里,你怎么做?我们的答案就是:买一个来。

买一个网站显然比做一个网站要省事一些,但是他们的梦想可不是做一个小网站而已,要做大,就不是随便买个就行的,要有比较低的维护成本,要能够方便地扩展和二次开发。

那接下来就是第二个问题:买一个什么样的网站?答案是:轻量一点的,简单一点的。于是买了这样一个架构的网站:LAMP(linux+apache+mySQL+PHP)。这个直到现在还是一个很常用的网站架构模型。这种架构的优点是:无需编译,发布快速,PHP功能强大,能做从页面渲染到数据访问所有的事情,而且用到的技术都是开源的,免费。

当时我们是从一个美国人那里买来的一个网站系统,这个系统的名字叫做PHP Auction,他们的官方网站是http://www.phpauction.net。这个名字很直白,一眼就能看出来这个系统是用什么语言做的、是干什么用的。PHP Auction有好几个版本,我们买的是最高版的,功能比较多,而且最重要的是对方提供了源代码。最高版比较贵,当时花了我们2000美金。

要注意的是,买来之后这个网站系统是不能直接就用的,需要很多本地化的修改,例如页面模板改得漂亮一点,页头页脚加上自己的站点简介等,其中最有技术含量的是对数据库进行了一个修改。原来是从一个数据库进行所有的读写操作,拿过来之后多隆把它给拆分成一个主库、两个从库,读写分离。这么做的好处有几点:存储容量增加了,有了备份,使得安全性增加了,读写分离使得读写效率提升了。(见下图)

其中pear DB是一个PHP模块,负责数据访问层。另外也用开源的论坛系统PHPBB( http://www.phpbbchina.com )搭建了一个小的论坛社区,虚竹负责机器采购、配置、架设等,三丰和多隆负责编码,他们把交易系统和论坛系统的用户信息打通,给运营人员开发出后台管理(admin系统)的功能,把交易类型从只有拍卖这一种增加为拍卖、一口价、求购商品、海报商品(意思是还没推出的商品,先挂个海报出来)这四种。

PHP Auction只有拍卖的交易,Auction即拍卖的意思。行癫在微博中提到:今天eBay所有交易中拍卖交易仍然占了40%,而在中国,此种模式在淘宝几乎从一开始就未能占据优势,如今在主流的交易中几乎可以忽略不计。背后的原因一直令人费解。我大致可以给出其中一种解释:eBay基本在发达国家展开业务,制造业外包后,电子商务的基本群体大多只能表现为零散的个体间交易。

在经历了另外一些有趣的事情之后,网站开始上线运行了。

运行:个人网站

在接下来的大半年时间里,这个网站迅速显示出了它的生机。这里有必要提一下当时的市场环境,非典(SARS)的肆虐使得大家都不敢出门,尤其是去商场之类人多的地方。

另外在神州大地上最早出现的C2C网站易趣也正忙得不亦乐乎。2002年3月,eBay以3000万美元收购了易趣公司33%的股份,2003年6月以1.5亿美元收购了易趣公司剩余的67%股份。

当时淘宝网允许买卖双方留下联系方式,允许同城交易,整个操作过程简单轻松。而eBay为了收取交易佣金,是禁止这么做的,这必然增加了交易过程中的难度。而且eBay为了全球统一,把易趣原来的系统替换成了美国eBay的系统,用户体验一下子全变了,操作起来非常麻烦,这等于是把积累的用户拱手送给了淘宝。

为了不引起eBay的注意,淘宝网在2003年里一直声称自己是一个“个人网站”。由于这个创业团队强大的市场开拓和运营能力,淘宝网发展非常迅猛,2003年底,最高每日31万PV,从5月到年底成交额4000万。这没有引起eBay的注意,却引起了阿里巴巴内部很多员工的注意,他们觉得这个网站以后会成为阿里巴巴强劲的对手。甚至有人在内网发帖,忠告管理层要警惕这个刚刚起步的网站,但管理层似乎无动于衷。

在市场和运营的后方,淘宝网的技术团队也在快速做着系统的改进和创新。这里插一个有趣的故事:eBay和易趣早期都有员工在论坛上响应用户的需求,eBay的论坛用粉红色背景来区分员工的发言,易趣的员工在论坛上昵称都选各种豆豆,例如黄豆豆、蚕豆豆等。淘宝在讨论运营策略的时候提到这个问题,要求所有的员工都去论坛上回答用户的问题。最早回答问题的任务落在小宝头上,那我们用什么名字好呢?

“淘淘”?“宝宝”?小宝都不满意,太女性化了。讨论了很久之后,小宝灵光乍现,干脆取个名字叫“小宝”吧,小宝带七个老婆来开店,迎接各位客官,很有故事性。于是很多武侠小说中的人物开始在论坛中行侠仗义,这些昵称下面标注着“淘宝店小二”,他们回答各种各样的问题,快速响应用户的各种需求。如果是技术上能解决的,几个人商量一下,马上就开发、测试、发布上线。反过来对比一下,易趣被eBay收购之后,系统更换成了全球通用的版本,响应用户的一个需求需要层层审批,反应速度自然慢了下来。

当时淘宝第一个版本的系统里面已经包含了商品发布、管理、搜索、商品详情、出价购买、评价投诉、我的淘宝这些功能。(现在主流程中也是这些模块。在2003年10月增加了一个功能节点:“安全交易”,这个是支付宝的雏形。)

随着用户需求和流量的不断增长,系统上面做了很多的日常改进,服务器由最初的一台变成了三台,一台负责发送email、一台负责运行数据库、一台负责运行web App。

过了一段时间之后,商品搜索的功能占用数据库资源太大了,又从阿里巴巴中文站搬过来他们的搜索引擎iSearch,起初iSearch索引的文件放在硬盘上,随着数据量的增长,又采购了NetApp服务器放置iSearch。

如此快节奏的工作,其实大家都累得不行,有人就提议大家随时随地地锻炼身体。可是外面SARS横行,在一个一百多方的房子里,怎么锻炼呢?高挑美女阿珂提议大家练习提臀操,这个建议遭到男士的一致反对,后来虚竹就教大家练习倒立,这个大家都能接受。于是这个倒立的传统一直延续至今,和花名文化、武侠文化一并传承了下来。

随着访问量和数据量的飞速上涨,问题很快就出来了,第一个问题出现在数据库上。mySQL当时是第4版的,我们用的是默认的存储引擎myisam,这种类型读数据的时候会把表锁住,我们知道Oracle在写数据的时候会有行锁,读数据的时候是没有的,尤其是主库往从库上面写数据的时候,会对主库产生大量的读操作,使得主库性能急剧下降。这样在高访问量的时候,数据库就撑不住了。另外当年的mySQL不比如今的mySQL,在数据的容量和安全性方面也有很多先天的不足(和Oracle相比)。

淘宝网作为个人网站发展的时间其实并不长,很快地,随着其知名度的飞升,它也从个人网站开始了转型。已经撑不住的mySQL,被替换成了Oracle,开启了淘宝技术的另一个时代。


http://i.wshang.com/?p=17019