淘宝技术这十年(01-04,共4卷):
关于淘宝网的出身,网上也有非常多的传说,下
面我们就从它的出生开始讲起。
个人网站
LAMP
2003年4月7日,马云在杭州成立了一个神秘的组织。他叫来
十位员工,要他们签了一份协议,这份协议要求他们立刻离开阿
里巴巴集团,去做一个神秘的项目。这个项目要求绝对保密,老
马戏称“连说梦话被老婆听到都不行,谁要是透漏出去,我将追杀
到天涯海角”。这份协议是英文版的,匆忙之间,大多数人根本来
不及看懂,但出于对老马的信任,都卷起铺盖离开了阿里巴巴。
他们去了一个神秘的据点——湖畔花园小区的一套未装修的
房子里,房子的主人是马云。这伙人刚进去的时候,马云给他
们布置了一个任务,就是在最短的时间内做出一个个人对个人
(C2C)的商品交易的网站。这里出一个问题考考大家,看你适
不适合做淘宝的创业团队:亲,要是让你来做,你怎么做?
在说出这个答案之前,我们先介绍一下这个创业团队的成
员:三个开发工程师(虚竹、三丰、多隆)、一个UED工程师
(二当家)、三个运营工程师(小宝、阿珂、破天)、一个经
理(财神),以及马云和他的秘书。当时对整个项目组来说,压
力最大的就是时间,为什么时间这么重要呢?火云邪神先生说过
“天下武功无坚不破,唯快不破”,还有一个原因就是当时eBay
和易趣在资本方面正打得不可开交,我们是趁虚而入的,等他们
反应过来就危险了。那怎么在最短的时间内把一个网站从零开始
建立起来呢?了解淘宝历史的人都知道淘宝是在2003年5月10日
上线的,2003年4月7日到5月10日,这之间只有一个月时间。要
是你在这个团队里,你怎么做?不是“抄一个来”,我们的答案
是——“买一个来”。
买一个网站显然比做一个网站要省事,但是他们的梦想可不
是做一个小网站而已,要做大,就不是随便买一个就行的,要有
比较低的维护成本,要能够方便地扩展和二次开发。那么接下来
就是第二个问题:买一个什么样的网站?答案是:轻量一点的,
简单一点的。于是买了这样一个架构的网站:LAMP(Linux+
Apache+MySQL+PHP),这个直到现在还是一个很常用的网站架
构模型,其优点是:无须编译,发布快速,PHP语言功能强大,
能做从页面渲染到数据访问所有的事情,而且用到的技术都是开
源、免费的。
当时我们是从一个美国人那里买来的一个网站系统,这个系
统的名字叫做PHPAuction(其官方网站 .
netAuction,即是拍卖的意思,这个名字很直白,一眼就可看出
这个系统是用什么语言做的、用途是什么),PHPAuction有好
几个版本,我们买的是最高版的,功能比较多,而且最重要的
是对方提供了源代码。最高版比较贵,花了我们差不多2000美元
(貌似现在降价了,只要946美元,在他们的网站上有明码标价
的信息)。买来之后不是直接就能用的,需要很多本地化的修
改,例如,修改一些数据类型,增加后台管理的功能,页面模板
改得漂亮一点,页眉和页脚加上自己的站点简介等。其中最有技
术含量的是对数据库进行了一个修改,原来是从一个数据库进行
所有的读写操作,现在把它拆分成一个主库、两个从库,并且读
写分离。这么做的好处有几点:存储容量增加了,有了备份,使
得安全性增加了,读写分离使得读写效率得以提升(写要比读更
加消耗资源,分开后互不干扰)。这样整个系统的架构就如下图
所示。其中,pear DB是一个PHP模块,负责数据访问层。另外,他
们也用开源的论坛系统PHPBB( )
搭建了一个小的论坛社区,在当时,论坛几乎是所有网站的标
配。虚竹负责机器采购、配置、架设等,三丰和多隆负责编码,
他们把交易系统和论坛系统的用户信息打通,给运营人员开发出
后台管理的功能(Admin系统),把交易类型从只有拍卖这一种
增加为拍卖、一口价、求购商品、海报商品(意思是还没推出的
商品,先挂个海报出来,这是快速增加商品数的一个好方法)四
种。(PHPAuction系统里只有拍卖的交易,Auction即拍卖的意
思。@_行癫在微博中提到:今天,eBay所有的交易中,拍卖交易
仍然占40%,而在中国,此种模式在淘宝几乎从一开始就未能占
据优势,如今在主流的交易中几乎可以忽略不计。背后的原因一
直令人费解,我大致可以给出其中一种解释,eBay基本上只在发
达国家展开业务,制造业外包后。
淘宝网作为个人网站发展的时间其实并不长,由于它太引人
注目了,马云在2003年7月就宣布这个是阿里巴巴旗下的网站,
随后在市场上展开了很成功的推广运作。最著名的就是利用中小
网站来做广告,突围eBay在门户网站上对淘宝的广告封锁。这时
候,eBay终于看到淘宝网这个后起之秀了,他对竞争者的态度就
是“封杀他”。eBay买断了新浪、搜狐、网易的电子商务类型的
广告,签署了排他性协议,切断了淘宝在这上面做广告的路子。
大路不通,我们就独辟蹊径,上网比较早的人应该还记得那些在
右下角的弹窗和网站腰封上一闪一闪的广告,“淘宝网”几个字
总是如影随形地出现在任何中小型网站上。市场部那位到处花钱
买广告的家伙太能花钱了,一出手就是几百万元,他被我们称为
“大少爷”。
“大少爷”们做的广告,带来的就是迅速上涨的流量和交易
量。在2003年年底,MySQL已经撑不住了,技术的替代方案非常
简单,就是换成Oracle。换为Oracle的原因除了它容量大、稳定、
安全、性能高之外,还有人才方面的原因。在2003年的时候,阿
里巴巴已经有一支很强大的DBA团队了,有鲁国良、冯春培、
汪海(七公)这样的人物,后来还有冯大辉(@fenng)、陈吉
平(拖雷)。这样的人物牛到什么程度呢?Oracle给全球的技术
专家颁发一些头衔,其中最高级别的叫ACE(就是扑克牌的“尖
儿”,够大的吧),被授予这个头衔的人目前全球也只有300多名
(公布名单的网址为:
),当年全球只有十几名,而阿里巴巴就有4名。有如此强大的技
术后盾,把MySQL换成Oracle是顺理成章的事情。
但更换数据库不是只换个库就可以的,其访问方式和SQL语
法都要跟着变,最重要的一点是,Oracle的性能和并发访问能力
之所以如此强大,有一个关键性的设计——连接池,连接池中放
的是长连接,是进程级别的,在创建进程的时候,它就要独占一
部分内存空间。也就是说,这些连接数在固定内存的Oracle Server
上是有限的,任何一个请求只需要从连接池中取得一个连接即
可,用完后释放,这不需要频繁地创建和断开连接,而连接的创
建和断开的开销是非常大的。但对于PHP语言来说,它对数据库
的访问都是很直接的,每一个请求都要一个连接。如果是长连
接,应用服务器增多时,连接数就多了,就会把数据库拖挂,如
果是短连接,频繁地连接后再断开,性能会非常差(而Java语言有
很多现成的连接池)。那如何是好呢?我们打探到eBay用了一个
连接池的工具,是BEA卖给他们的。我们知道,BEA的东西都很
贵,我们买不起,就放弃了找BEA的念头,于是多隆在网上寻寻
觅觅,找到一个开源的连接池代理服务SQL Relay(.
sourceforge.net),这个东西能够提供连接池的功能,多隆对它进
行了一些功能改进之后,系统的架构就变成了如下形式。
数据一开始是放在本地的,七公带领的DBA们对Oracle做调优
的工作,也对SQL进行调优。后来数据量变大后,本地存储无法
满足了,买了NAS(Network Attached Storage,网络附属存储),
NetApp(Network Appliance,美国网域存储技术有限公司)的
NAS作为数据库的存储设备,加上Oracle RAC(Real Application
Clusters,实时应用集群)来实现负载均衡。七公说这实际上是走
了一段弯路,NAS的NFS(Network File System)协议传输的延迟
很严重,但那时侯不懂。后来采购了Dell和EMC合作的SAN低端
存储,性能一下提升了十几倍,这才比较稳定了。再后来,数据
量更大了,存储的节点一拆二、二拆四,RAC又出问题了,这才
踏上了购买小型机的道路。在那段不稳定的时间里,七公曾经在
机房住了5天5夜,差点被辐射成蜘蛛侠。
阅读(912) | 评论(0) | 转发(0) |