怎样删除淘宝网翻页苹果怎么设置滑动翻页访问验证码

落伍者创建于,本站内容均为会员發表,并不代表落伍立场!

拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论! 落伍官方微信:2030286 邮箱:(djfsys@)

BBS专项电子公告通信管[号

  落伍法律顾问: ITlaw-庄毅雄

}

第一部分 淘宝技术发展1 / 1

引言:光棍节的狂欢 / 2

第二部分 淘宝技术发展2 / 29

第三部分 淘宝技术发展3 / 71

I淘VIV宝技术这十年

第四部分 我在淘宝这八年 / 123

正明——集团核心系统高级研究员 / 162


正祥——淘宝高级研究员OceanBase项目负责人 / 174
毕玄——集团核心系统资深技术专家 / 185
放翁——淘宝开放平台项目负责人 / 193
吴翰清——阿里云集团信息安全Φ心高级安全专家 / 205
云铮——数据平台与产品部资深技术专家 / 213
小马——淘宝UED前端通用平台高级技术专家 / 221
淘宝传奇工程师多隆的程序世界 / 233

“所囿的进步都是不稳定的,一个问题解决了我们不得不面对又一个新问

“时间到,开抢!”坐在电脑前早已等待多时的小美一看时


间已到2011姩11月11日零时便迫不及待地投身于淘宝商城一年
一度的大型网购促销活动——“淘宝双11购物狂欢节”。小美打
开早已收藏好的宝贝——某品牌的雪地靴飞快的点击购买、付
款,一回头发现3000双靴子已被抢购一空

小美跳起来,大叫一声“欧耶!”

小美不知道就在11日零点过後的这一分钟里,全国有342万


人和她一起涌入淘宝商城当然,她更不知道此时此刻,在淘
宝杭州的一间办公室里灯火通明,这里是“戰时指挥部”淘
宝技术部的一群工程师正紧盯着网站的流量和交易数据。白板上
是他们刚刚下的赌注赌谁能最准确地猜中流量峰值和铨天的交
易总额。他们的手边放着充足的食物和各类提神的饮料

一阵急促的电话铃声响起,是前线部门询问数据的工程师


大声报着:“第1分钟,进入淘宝商城的会员有342万人”过了
一会儿,工程师主动拿起电话:“交易额超过1亿元人民币了现
在是第8分钟。”接下来“第21分钟,刚突破2亿元”“第32
分钟,3亿元了”“第1个小时,这时你的浏览器首先查询DNS服务器,将
转换成IP地址不过你首先会发现,茬不同的地
区或者不同的网络(电信、联通、移动)下转换后的IP地址很
可能是不一样的,这首先涉及到负载均衡的第一步通过DNS解
析域洺时,将你的访问分配到不同的入口同时尽可能保证你所
访问的入口是所有入口中可能较快的一个(这和后文的CDN不

你通过这个入口成功哋访问了实际的入口IP


地址,这时产生了一个PV(Page View页面访问量。每日每个网
站的总PV量是形容一个网站规模的重要指标淘宝网全网在平日

(非促销期间)的PV大概是16~25亿个之间)。同时作为一个独


立的用户你这次访问淘宝网的所有页面均算作一个UV(Unique
Visitor,用户访问)最近臭名昭著的的人数过于巨大,所以
即便是生成淘宝首页页面的服务器,也不可能仅有一台仅用于
生成首页的服务器就可能有成百上千台,那麼你
的一次访问时生成页面给你看的任务便会被分配给其中一台服务
器完成这个过程要保证公正、公平、平均(即这成百上千台服
务器烸台负担的用户数要差不多),这一很复杂的过程由几个系
上最流行的负载均衡系统之一是由目前在淘宝网供职的章文嵩

经过一系列复雜的逻辑运算和数据处理,这次用于给你看的


淘宝网首页的HTML内容便成功生成了对Web前端稍微有点常
识的人都应该知道,浏览器下一步会加載页面中用到的CSS、JS
(JavaScript)、图片等样式、脚本和资源文件但是可能相对较
少的人才会知道,你的浏览器在同一个域名下并发加载的资源数
量是有限的例如IE 6和IE 7是两个,IE 8是6个chrome各版本不
大一样,一般是4~6个我刚刚看了一下,我访问淘宝网首页需
要加载126个资源那么如此小的並发连接数自然会加载很久。所

第一部分:淘宝技术发展71

以前端开发人员往往会将上述这些资源文件分布在多个域名下变


相地绕过浏览器的这个限制,同时也为下文的CDN工作做准备

据不可靠消息称,在2011年“双十一”当天高峰淘宝的访


问流量最巅峰达到871GB/s,这个数字意味着需要178万个4MB/
s的家庭宽带才能负担得起也完全有能力拖垮一个中小城市的
全部互联网带宽。显然这些访问流量不可能集中在一起,并且
大镓都知道不同地区、不同网络(电信、联通等)之间互访
会非常缓慢,但是你却很少发现淘宝网访问缓慢这便是CDN
在全国各地建立了数┿个甚至上百个CDN节点,利用一些手段
保证你访问的(这里主要指JS、CSS、图片等)站点是离你最
近的CDN节点这样便保证了大流量的分散已及在各地访问的

这便出现了一个问题,那就是假若一个卖家发布了一个新


的宝贝上传了几张新的宝贝图片,那么淘宝网如何保证全国
各地的CDN節点中都会同步存在这几张图片供用户使用呢这
就涉及大量的内容分发与同步的相关技术。另外淘宝上拥有
海量的宝贝图片等静态文件,这些文件的总容量也达到了数PB

好了这时你终于加载完成淘宝首页,然后习惯性地在首页


搜索框中输入“毛衣”二字并按回车键这時你又产生了一个

PV,然后淘宝网的主搜索系统便开始为你服务,它首先对你


输入的内容基于一个分词库进行分词操作众所周知,英文昰以
词为单位的词和词之间靠空格隔开,而中文是以字为单位
句子中所有的字连起来才能描述一个意思。例如英文句子“I
am a student”用中文表示,则为“我是一个学生”计算机可
以很简单地通过空格知道student是一个单词,但是不太容易明白
“学”、“生”两个字合起来才表示一個词把中文的汉字序列
切分成有意义的词,就是中文分词有些人也称为切词。“我是
一个学生”分词的结果是“我 是 一个 学生”

进荇分词操作之后,还需要根据你输入的搜索词进行购物意


图分析用户进行搜索时常常有如下几类意图。

yy浏览型:没有明确的购物对象和意图边看边买,用户比

“2010年流行毛衣”、“zippo有多少种类”;


Query例如:“适合老人用的手机”、“500元 手表”;

yy对比型:已经缩小了购物意圖,具体到某几个产品Query

注1 Query即查询。为了在数据库或搜索引擎中寻找某一特定文件、网站、


记录或一系列记录由搜索引擎或数据库送絀的信息。——作者注

第一部分:淘宝技术发展91

yy确定型:已经做了基本决定重点考察某个对象。Query例


如:“诺基亚N97”、“IBM T60”

通过对你的購物意图的分析,主搜索会呈现出完全不同的

之后的数个步骤后主搜索系统便根据上述以及更多复杂的


条件列出了搜索结果,这一切是甴一千多台搜索服务器完成的
然后你开始逐一点击浏览搜索出的宝贝,查看宝贝详情页面经
常网购的亲们会发现,当你买过一个宝贝の后即便是商家多次
修改了宝贝详情页,你仍然能够通过“已买到的宝贝”查看当时
的快照这是为了防止商家对在商品详情中承诺过嘚东西赖账不
认。显然对于每年数十亿甚至上百亿笔交易的商品详情快照进
行保存和快速调用不是一件简单的事情。这其中又涉及数套系统
的共同协作其中较为重要的是Tair(淘宝自行研发的分布式KV

接下来,无论你是否真的进行了交易你的这些访问行为都


会如实地被系统記录下来,用于后续的业务逻辑和数据分析这
些记录中的访问日志记录便是最重要的记录之一,但是从前面我
们得知这些访问是分布茬各个地区多个不同的服务器上的,并
且由于用户众多这些日志记录都非常庞大,达到TB级别也非常
正常那么,为了快速、及时、同步哋传输这些日志数据淘宝
研发了TimeTunnel,用于进行实时的数据传输然后交给后端系

统进行计算报表等操作。

你的浏览数据、交易数据以及其怹很多数据记录均会被保留


下来使得淘宝存储的历史数据轻而易举地便达到了数十甚至更
多个PB。如此巨大的数据量存储在阿里巴巴集团嘚数据仓库中
并且其中有些数据使用了压缩比高达1:120的极限存储技术。之后
这些数据会通过一个叫做云梯的基于Hadoop的由3000多台服务器
组成的超夶规模数据系统以及一个基于阿里巴巴集团自主研发
的ODPS系统的数据系统,不断地进行分析和挖掘

淘宝从这些数据中能够知道小到你是誰,你喜欢什么你的


孩子几岁了,你是否在谈恋爱喜欢玩魔兽世界的人喜欢什么样
的饮料等,大到各行各业的零售情况、各类商品的興衰消亡等海

说了这么多其实也只是叙述了淘宝上正在运行的成千上万


个系统中的寥寥几个。即便是你仅仅访问一次淘宝的首页所涉
忣的技术和系统规模都是你完全无法想象的,是淘宝2000多名顶
级的工程师们的心血结晶其中甚至包括长江学者、国家科学技
术最高奖得主等众多牛人。同样百度、腾讯等的业务系统也绝
不比淘宝简单。你需要知道的是你每天使用的互联网产品看似
简单易用,背后却凝聚著难以想象的智慧与劳动

(本文所涉及的技术与数据均来源于互联网)

第一部分:淘宝技术发展111

为了有一个更直观的对比,我们说一个哃行他在2011年光


棍节之前做促销,数据流量达到了12Gbps(他们有这么大的流
量老板很高兴,在微博上公布了这个数据)这时的流量达到
了極限,网站几乎挂掉用户无法下订单。而淘宝网光棍节当天
网络的流量最高达到800Gbps带给各家银行和快递公司的流量
也让他们如临大敌(後来,他们以能够撑住淘宝带来的流量为荣
而到处宣传)另外,如果你在网上购买过火车票更能体会到
网站能支持多大的流量有多重偠。但这不是一朝一夕就能做出来
的也不是有钱就能办到的。

以上对比的这些网站也许读者很容易就能猜到是哪一家,


这里绝对没有嘲笑他们的意思采用通常的网站技术方案能做到
这种程度已经不错了。任何网站的发展都不是一蹴而就的通常
是在什么阶段采用什么技术。在发展的过程中网站会遇到各种
各样的问题,正是这些原因才推动着技术的进步和发展而技术
的发展反过来又会促进业务的更夶提升。二者互为因果相互促
进。如今淘宝网的流量已经是全球排名第12、国内排名第3(至
2011年年底eBay全球排名第20,国内前两名是百度和腾訊)
淘宝网的系统也从使用一台服务器,到采用万台以上的服务器
本书就为大家描述淘宝网在整个发展过程中,所有主动和被动的
技術变革的前因后果这由很多有趣的故事组成。

正如同很多人或组织成功了以后就会为自己的出身编造一

个美丽的传说。关于淘宝网的絀身网上也有非常多的传说,下


面我们就从它的出生开始讲起

2003年4月7日,马云在杭州成立了一个神秘的组织他叫来


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

他们去了一个神秘的据点——湖畔花园小区的一套未装修的


房子里房子的主人是马云。这伙人刚进去的時候马云给他
们布置了一个任务,就是在最短的时间内做出一个个人对个人
(C2C)的商品交易的网站这里出一个问题考考大家,看你适
鈈适合做淘宝的创业团队:亲要是让你来做,你怎么做

在说出这个答案之前,我们先介绍一下这个创业团队的成


员:三个开发工程师(虚竹、三丰、多隆)、一个UED工程师
(二当家)、三个运营工程师(小宝、阿珂、破天)、一个经
理(财神)以及马云和他的秘书。当時对整个项目组来说压

第一部分:淘宝技术发展131

力最大的就是时间,为什么时间这么重要呢火云邪神先生说过


“天下武功无坚不破,唯快不破”还有一个原因就是当时eBay
和易趣在资本方面正打得不可开交,我们是趁虚而入的等他们
反应过来就危险了。那怎么在最短的時间内把一个网站从零开始
建立起来呢了解淘宝历史的人都知道淘宝是在2003年5月10日
上线的,2003年4月7日到5月10日这之间只有一个月时间。要
是伱在这个团队里你怎么做?不是“抄一个来”我们的答案

买一个网站显然比做一个网站要省事,但是他们的梦想可不


是做一个小网站洏已要做大,就不是随便买一个就行的要有
比较低的维护成本,要能够方便地扩展和二次开发那么接下来
就是第二个问题:买一个什么样的网站?答案是:轻量一点的
简单一点的。于是买了这样一个架构的网站:LAMP(Linux+
Apache+MySQL+PHP)这个直到现在还是一个很常用的网站架
构模型,其优点是:无须编译发布快速,PHP语言功能强大
能做从页面渲染到数据访问所有的事情,而且用到的技术都是开

当时我们是从一个美國人那里买来的一个网站系统这个系


统的名字叫做PHPAuction(其官方网站 )
搭建了一个小的论坛社区,在当时论坛几乎是所有网站的标
配。虚竹负责机器采购、配置、架设等三丰和多隆负责编码,
他们把交易系统和论坛系统的用户信息打通给运营人员开发出
后台管理的功能(Admin系统),把交易类型从只有拍卖这一种
增加为拍卖、一口价、求购商品、海报商品(意思是还没推出的
商品先挂个海报出来,这是快速增加商品数的一个好方法)四
种(PHPAuction系统里只有拍卖的交易,Auction即拍卖的意
思@_行癫在微博中提到:今天,eBay所有的交易中拍卖交易
仍然占40%,而在中国此种模式在淘宝几乎从一开始就未能占
据优势,如今在主流的交易中几乎可以忽略不计背后的原因一
直令人费解,我大致可以给出其中一种解释eBay基本上只在发
达国家展开业务,制造业外包后电子商务的基本群体大多只能
表现为零散的个体间交易。)

在開发过程中这个项目的代号是BMW(没错!就是宝马的


意思)。这个是二当家提出的建议二当家特别喜欢宝马,他希
望我们的网站也如同寶马一样漂亮、快速、安全充满乐趣。二
当家现在的座驾就是一辆宝马X5算是得偿所愿了。在上线的时
候需要给这个网站取个名字为叻不引起eBay的注意,这个名字
要撇开与阿里巴巴的关系所以“阿里爷爷”、“阿里舅舅”之
类的域名是不能用的。这时候美女阿珂提供叻一个很好听的名
字“淘宝”。因为她家里有人热爱收藏古董经常去市场上淘宝
贝,而她本人也非常热爱逛街享受“淘”的乐趣,她覺得“淘
宝”两个字特别符合网站的定位(阿珂说想到这个名字的时候
脑子里一道闪电劈过,真的是“灵光一闪”后来“支付宝”的
洺字也是阿珂取的)。于是这个大名就定了下来淘宝网横空出

第一部分:淘宝技术发展171

在接下来的大半年时间里,这个网站迅速显示出叻它的生


机这里有必要提一下当时的市场环境,非典(SARS)的肆
虐使得大家都不敢出门尤其是去类似商场等人多的地方。
另外在神州夶地上最早出现的C2C网站易趣也正忙得不亦乐
乎,2002年3月eBay以3000万美元收购了易趣公司33%的股
份,2003年6月以没买房;1999年,陈天桥炒股赚了50
万元创辦盛大,没买房;1999年马云等18人凑了50万元注册
了阿里巴巴,没买房如果当年他们用这50万元买了房,现在估
计还在还着银行的贷款吧”倳实上,阿里巴巴和淘宝网都是在

第一部分:淘宝技术发展211

马云自己的房子里创办的阿里巴巴是1999年初发布上线的。所


以关于马云买房孓的事情,真相是这样的

淘宝网作为个人网站发展的时间其实并不长,由于它太引人


注目了马云在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(),这个东西能够提供连接池的功能多隆对它进
行了一些功能改进之后,系统的架构就变成了如下形式

第一部分:淘宝技术发展231

数据一开始是放在本地的,七公带领的DBA们对Oracle做调优


的工作也对SQL进行调优。后来数据量变大后本地存储无法
Clusters,实时应用集群)来实现負载均衡七公说这实际上是走
很严重,但那时侯不懂后来采购了Dell和EMC合作的SAN低端
存储,性能一下提升了十几倍这才比较稳定了。再后來数据
量更大了,存储的节点一拆二、二拆四RAC又出问题了,这才
踏上了购买小型机的道路在那段不稳定的时间里,七公曾经在
机房住了5天5夜差点被辐射成蜘蛛侠。

替换完数据库后时间到了2004年春天,俗话说“春宵一刻


值千金”但这些人的春宵却不太好过,他们在紦数据的连接放
在SQL Relay之后就噩梦不断这个代理服务经常会死锁,如同之
前的MySQL死锁一样虽然多隆做了很多修改,但当时那个版本
内部处理嘚逻辑不对问题很多,最快的解决办法就是“重启”
它的服务这在白天还好,只要连接上机房的服务器把进程杀
掉,然后开启就可鉯了但是最痛苦的是它在晚上也要死掉,于
是工程师们不得不24小时开着手机一旦收到“SQL Relay进程挂
起”的短信,就从春梦中醒来打开电腦,连上机房的网络重
启服务,后来干脆每天睡觉之前先重启一下做这事最多的据说
是三丰,他现在是淘宝网的总裁现在我们知道,任何牛B的人
物都有一段苦B的经历。

微博上有人说“好的架构是进化来的不是设计来的”。的


确如此其实还可以再加上一句“好的功能也是进化来的,不是
设计来的”在架构的进化过程中,业务的进化也非常迅猛最
早的时候,买家打钱给卖家都是通过银行转账汇款有些骗子收
了钱却不发货,干脆逃之夭夭这是一个很严重的问题,一个人
这么干了之后很快就有更多的人学会了(这就是传说中嘚“病
毒传播”)。然而魔高一尺道高一丈,淘宝网这伙人开始研
究防骗子的解决方案他们看了PayPal的支付方式,发现不能解
决问题研究了类似QQ币的东西,想弄个“淘宝币”出来发
现也不行。后来这几个聪明的脑袋把这些想法糅合起来突然想

第一部分:淘宝技术发展251

箌了“担保交易”这种第三方托管资金的办法。于是在2003年10


月淘宝网上线了一个功能,叫做“安全交易”卖家如果选择
支持这种功能,買家就会把钱交给淘宝网等他收到货之后,淘
宝网再把钱给卖家这就是现在的“支付宝”。这个功能最早是
让卖家可选的因为这会延迟他收款的周期。但一旦卖家用了这
个之后就发现交易量猛增,一年之后几乎所有的卖家都选择
担保交易,到后来干脆所有的交易嘟必须走担保交易在2012年
支付宝的年会上,支付宝公布2011年的交易笔数已经是PayPal的两
倍这个划时代的创新,其实就是在不断思索过程中的一個灵光

当时开发“安全交易”功能的是茅十八和他的徒弟苗人凤


(茅十八开发到一半去上海读MBA了苗人凤现在是支付宝的
首席业务架构师),开发与银行网关对接功能的是多隆当时多
数银行的网站已经支持在线支付了,但多隆告诉我他们的网关
五花八门,用什么技术的嘟有我们必须一家一家地去接。而且
银行的网关不保证用户付钱后就一定能扣款成功不保证扣款成
功后就一定通知淘宝,也不保证通知淘宝后就一定能通知到以
及不保证通知到了就不重复通知。这害苦了苗人凤他必须每天
手工核对账单,少一分钱都睡不着觉因为對不齐账就一定是有
人的钱找不到地方了,这可是天大的问题另外,他为了测试这
些功能去杭州所有的银行都办理了一张银行卡。一夶堆银行卡
摆在桌子上不知道的人还以为他一定很有钱(高富帅啊),其

实里面都只是十元八元的现在我们再一次知道,任何牛B的人


粅都必须有一段苦B的经历。

有人说淘宝打败易趣(eBay中国)是靠免费其实这只是原


因之一。如果说和易趣过招的第一招是免费这让用戶无须成本
就能进来,那么第二招就是“安全支付”这让用户放心付款,
不必担心被骗在武侠小说中,真正的高手飞花摘叶即可伤人
他们不会局限于一两招,一旦出手则连绵不绝。而淘宝的第三
招就是“旺旺”其实淘宝旺旺也不是自己生出来的,是从阿里
巴巴的“贸易通”复制过来的从2004年3月开始,“叮咚!叮
咚!”这个经典的声音就回荡在所有淘宝买家和卖家的耳边
“亲,包邮不”“亲,便宜5毛行不”这亲切的砍价声造就了
后来的“淘宝体”。有人说中国人就是爱砍价虽然笔者体会不
到砍价成功后有多少成就感,但每佽我去菜市场看到大妈们砍
价砍得天昏地暗,那满足的劲头堪比捡到了钱我就深刻地理解
了淘宝旺旺在交易过程中的价值。我猜eBay也体會不到砍价的乐
趣他们一直不允许买卖双方在线聊天,收购了Skype之后也没有

旺旺在推出没多久就惹了一个法律方面的麻烦。有个做雪


饼嘚厂家找上门来说我们侵权了,他们家的雪饼很好吃牛奶
也做得不错,我们都很喜欢然后我们就在旺旺的前面加了两个
字,叫做“淘宝旺旺”最早做旺旺开发的人只有一个——无崖

第一部分:淘宝技术发展271

子,我们叫他“旺旺之父”为了支持他的工作,我们工作鼡的


IM工具仅限于旺旺旺旺在线数上新高之后,他请我们吃鸭脖
子有时候为了吃到鸭脖子,我们盯着在线数看快到整数量的
时候,自巳赶紧去挂几个小号上去还有一个很卡哇伊的设计师
MM——奇灵,开发出了一套旺旺表情这套表情比所有的聊天
软件的表情都大,也更加生动一直沿用到现在,我们叫奇灵为

在那个野蛮生长的阶段其实很多产品都是想到什么就做什


么,例如我们还搭建过一个聊天室,但似乎淘宝网不是一个闲
聊的地方这个聊天室门可罗雀,一段时间后就关闭掉了

SQL Relay的问题搞得三丰等人很难睡个囫囵觉,那一年开半


姩会的时候公司特地给三丰颁了一个奖项,对他表示深切的安
慰但不能总这样通过不断地重启来保证系统的稳定性。于是
2004年上半年開始,整个网站就开始了一个脱胎换骨的手术

“所有的进步都是不稳定的,一个问题解决了我们不得不面对又一个新问

我的师父黄裳缯经说过“好的架构图充满美感”。一个架构


好不好从审美的角度就能看出来。后来我看了很多系统的架
构发现这个言论基本成立。反观淘宝以前两个版本的架构如
下图所示,你看哪个比较美

显然,第一个比较好看第二个显得头重脚轻,这也注定了


它不是一个稳萣的版本只存活了不到半年的时间。2004年初
SQL Relay的问题解决不了,数据库必须要用Oracle那么从哪里
动刀呢?只有换开发语言了换什么语言好?用JavaJava是当时
最成熟的网站开发语言,它有比较良好的企业开发框架被世界
上主流的大规模网站普遍采用。另外有Java开发经验的人才也仳
较多,后续维护成本会比较低

到2004年上半年,淘宝网已经运行了一年的时间这一年积


累了大量的用户,也快速开发了很多功能当时這个网站已经
很庞大了,而且新的需求还在源源不断地增加把一个庞大的网
站的开发语言换掉,无异于脱胎换骨在换的过程中还不能拖慢
业务的发展,这无异于边换边跑对时间和技术能力的要求都非
常高。做这样的手术需要请第一流的专家来主刀。现在再考一
下大镓:亲如果你在这个创业团队中,请什么样的人来做这件

第二部分:淘宝技术发展312

事我们的答案是请Sun公司的人。没错就是创造Java语言嘚那


家公司,世界上没有比他们更懂Java的了除此之外,还有一个不
为人知的原因我刚才说到Java被世界上主流的大规模网站普遍采
用,其中囿一个网站就是eBay那时侯eBay的系统刚刚从C++ 改
到Java,而且就是请Sun的工程师给改造成Java架构的这下你懂
了吧?他们不仅更懂Java而且更懂eBay。

Sun公司的这幫工程师的确很强大在笔者2004年年底来淘


宝的时候,他们还在我有幸与他们共事了几个月。现在摆在他
们面前的问题是用什么办法把一個庞大的网站从PHP语言迁移到
Java而且要求在迁移的过程中,不停止服务原来系统的bugfix
和功能改进不受影响。亲你要是架构师,你怎么做囿人的答
案是写一个翻译器,如同把中文翻译成英文一样自动翻译。我
naive”当时没有,现在也没有人能做到他们的大致方案是
给业务汾模块,一个模块一个模块地渐进式替换如用户模块,
老的继续维护不添加新功能,新功能在新
的模块上开发跟老的模块共用一个數据库,开发完毕之后放到
不同的应用集群上另开一个域名,同时再
替换老的功能替换一个,就把老的模块上的功能关闭一个逐
渐紦用户引导到,等所有的功能都替换完之
后关闭上。从设计上来看这个member1的

第二部分:淘宝技术发展332

二级域名应该是一个过渡状态,但峩们把member域名的代码下


线以后发现很难把member1切换回member,因为有些地方把
链接写死了于是后来很长时间里我们都是在用、,复制得毫无保留峩们只能会心一笑。

说了开发模式再说说用到的Java MVC框架,当时的struts1.x


是用得比较多的框架但是用过webwork和struts2的人可能知道,
struts1.x在多人协作方面有很多致命的弱点由于没有一个轻量框
架作为基础,因此很难扩展,这样架构师对于基础功能和全局
功能的控制就很难做到而阿里巴巴的18個创始人之中,有个架
构师周悦虹他在Jakarta Turbine的基础上做了很多扩展,打造了
便组件化开发它的页面模板支持JSP和Velocity等,持久层支持
的)项目組选择了这个强大的框架。另外当时Sun在全世界大
力推广他们的EJB,虽然淘宝的架构师认为这个东西用不到但他
们还是极力坚持。在经历叻很多次的技术讨论、争论甚至争吵之
后这个系统的架构就变成了下图的形式。

MVC框架是阿里的WebX控制层用了EJB,持久层是ibatis


另外,为了缓解数据库的压力商品查询和店铺查询放在搜索引
擎中。这个架构图是不是好看了一点了

Sun的这帮工程师开发完淘宝的网站之后,用同样嘚架构又做


了一个很牛的网站叫“支付宝”。(上一篇说过支付宝最初是
淘宝上的“安全交易”功能这个功能后来独立出来,成立了┅
个网站也成立了一个公司,就是现在的支付宝把支付宝从淘
宝分出去的人,就是Sun公司的这几个人)下图是支付宝的第一

第二部分:淘宝技术发展352

上面的架构中,引入了搜索引擎iSearch(前文说过iSearch


其实是在LAMP系统运行一段时间之后被多隆引进的,换为Oracle
之后只是替换一下数据源)其实这个搜索引擎的原理很简单,
就是把数据库里的数据dump(倾倒)成结构化的文本文件后放
在硬盘上,提供Web应用以约定的参数和語法来查询这些数据
这看起来不难,难的是数以亿计的信息怎么做到快速更新呢?
这好比你做了一个网站在百度上很快就能搜到,伱一定很满意
了但如果你发布一件商品,在淘宝上过1个小时还搜不到你肯
定要郁闷了。另一个难点是如何保证非常高的容量和并发量再
往后面就要考虑断句和语义分析的问题,以及推荐算法等更加智
能的问题这些内容先不详细介绍,因为搜索引擎的技术已经足

其实茬任何时候开发语言本身都不是系统的瓶颈,业务带


来的压力更多的存在于数据和存储方面前面也说到,MySQL撑
不住之后换为OracleOracle的存储一開始在本机上,后来在NAS
不住了数据的存储方面就不得不考虑使用小型机。在2004年夏
天DBA七公、测试工程师郭芙和架构师行癫,踏上了去北京测
试小型机的道路他们带着小型机回来的时候,我们像欢迎领袖
一样欢迎他们因为那是我们最值钱的设备,价格表上的数字吓
死人小型机买回来之后,我们争相合影然后Oracle就运行在
了小型机上,存储方面从EMC低端CX存储到Sun oem hds高端
存储,再到EMC dmx高端存储一级一级地往上跳。

到2004年底淘宝网已经有4百多万种商品了,日均4千多万


个PV注册会员达400万个,全网成交额达10亿元

到现在为止,我们已经用上了IBM的小型机、Oracle的数据


库、EMC的存储这些东西都是很贵的,那些年可以说是花钱
如流水有人说过“钱能解决的问题,就不是问题”但随着淘
宝网的發展,在不久以后钱已经解决不了我们的问题了。花钱
买豪华的配置也许能支持1亿个PV的网站,但淘宝网的发展实
在是太快了到了10亿個PV怎么办?到了百亿怎么办在几年以
后,我们不得不创造技术解决这些只有世界顶尖的网站才会遇
到的问题。后来我们在开源软件的基础上进行自主研发一步一

第二部分:淘宝技术发展372


步地把IOE(IBM小型机、Oracle、EMC存储)这几个“神器”
都去掉了。这些神器就如同《西游记》Φ那些神仙的兵器他们
身边的妖怪们拿到这些兵器能把猴子打得落荒而逃。但最牛的神
仙是不依赖这些神器的他们挥一挥衣袖、翻一丅手掌就威力无

已经有读者在迫不及待地问怎么去掉了IOE?别急在去掉


IOE之前还有很长的路要走(在后面讲到TDDL的时候,会提到
去IOE的一些事情)行癫等人买回小型机之后,我们用上了

Oracle然后七公带着一帮DBA做优化SQL和存储方面的工作,行


癫带着几个架构师研究数据库的扩展性Oracle本身是一个封闭
的系统,用Oracle怎么做扩展呢用现在一个时髦的说法就是做

我们知道,一台Oracle的处理能力是有上限的它的连接池有


数量限制,查询速度与容量成反比简单地说,在数据量上亿、
查询量上亿的时候就到它的极限了。要突破这种极限最简单
的方式就是多用几个Oracle數据库。但一个封闭的系统做扩展
不像分布式系统那样直接加机器就可以了。我们的做法是把用户
的信息按照ID来存放到两个数据库中(DB1囷DB2)把商品的
信息和卖家信息放在两个对应的数据库中,把商品类目等通用信
息放在第三个库中(DBcommon)这么做的目的是除了增加了
数据庫的容量之外,还有一个就是做容灾即万一一个数据库挂
了,整个网站上还有一半的商品可以买

数据库这么分后,应用程序就会出现麻烦如果我是卖家,


查看我的商品没有问题我们都在一个库里。但如果我是一个
买家买的商品有DB1的,也有DB2的要查看“我已买到的寶
贝”的时候,应用程序怎么办必须到两个数据库中分别查询对
应的商品。要按时间排序怎么办两个库中“我已买到的宝贝”
全部查絀来在应用程序中做合并。另外分页怎么处理?关键字
查询怎么处理专业点的说法就是数据的Join没法做了。这些工
作交给程序员来做也許会更麻烦于是行癫出手了,他写了一个

第二部分:淘宝技术发展392

数据库路由的框架DBRoute统一处理了数据的合并、排序、分


页等操作,让程序员像使用一个数据库一样操作多个数据库里的
数据这个框架在淘宝的Oracle时代一直在使用。但是后来随着
业务的发展这种分库的第二個目的——“容灾”的效果没有达
到。像评价、投诉、举报、收藏、我的淘宝等很多地方都必须
同时连接DB1和DB2,哪个库挂了都会导致整个網站挂掉

上一篇说过,采用EJB其实是和Sun的工程师妥协的结果在


他们离开之后,EJB也逐渐被冷落了下来在2005年和2006年的时
候,Spring大放异彩于是茬控制层用Spring替换掉了EJB,给整
个系统精简了很多代码

上一篇还说过,为了减少数据库的压力提高搜索的效率,


我们引入了搜索引擎随著数据量的继续增长,到了2005年商
品数有1663万个,PV有8931万个注册会员有1390万个,这给数
据存储带来的压力依然很大数据量大,速度就慢亲,除了搜
索引擎、分库分表还有什么办法能提升系统的性能?一定还有
招数可以用这就是缓存和CDN(内容分发网络)。

你可以想象9000万佽的访问量,有多少是在商品详情页


面访问这个页面的时候,数据全都是只读的(全部从数据库中
读出来不写入数据库),在那个时候我们的架构师多隆大神
做了一个基于 Berkeley DB 的缓存系统,把很多不太变动的只读
信息放了进去其实最初这个缓存系统还比较弱,我们并不敢把
所有能缓存的信息都往里面放一开始先把卖家的信息放里面,
然后把商品属性放里面再把店铺信息放里面,但是像商品详情
这类芓段太大的放进去受不了说到商品详情,这个字段比较恐
怖有人统计过,淘宝商品详情打印出来平均有5米长在系统里
其实放在哪里嘟不招人待见。笔者清楚地记得我来淘宝之后担
任项目经理做的第一个项目就是把商品详情从商品表中移出来。
它最早与商品的价格、運费等信息放在一个表中拖慢了整张表
的查询速度,而很多时候查询商品信息是不需要查看详情的于
是在2005年的时候,我把商品详情放茬数据库的另外一张表中
再往后,这个大字段被从数据库中请了出来先是放入了缓存系
统,到现在是放进了文件系统TFS中

第二部分:淘宝技术发展412

到现在为止,整个商品详情的页面都在缓存里面了眼尖的


读者可能会发现现在的商品详情不全是“只读”的信息了,这个
頁面上有个信息叫“浏览量”(这个信息是2006年加上去的)
这个数字每刷新一次,页面就要“写入”存储一次这种高频度
实时更新的数據能用缓存吗?通常来说这种是必须放进数据库
的,但是悲剧的是我们在2006年开发这个功能的时候,把浏览
量写入数据库发布上线1个尛时后,数据库就挂掉了每天几亿
次的写入,数据库承受不了那怎么办?亲……先不回答你,
后面讲到缓存Tair的时候再说(下图不昰广告,请把注意力从
左边移到右边中间看看浏览量这个数据在哪里。)

CDN这个工作相对比较独立跟别的系统一样,一开始我们


采用的吔是商用系统后来随着流量的增加,商用的系统已经撑
不住了LVS的创始人章文嵩博士带人搭建了淘宝自己的CDN网
络。在本文的引言中我說过淘宝的CDN系统支撑了800Gbps以

上的流量,作为对比我们可以看一下国内专业做CDN的上市公


务提供商,向客户提供全方位网络内容快速分布解决方案作为
首家获信产部许可的CDN服务提供商,目前ChinaCache在全国50
多个大中城市拥有近300个节点全网处理能力超过500Gbps,其
CDN网络覆盖中国电信、中国网通、中国移动、中国联通、中国
铁通和中国教育科研网等各大运营商”——淘宝一家的流量比
他们的加起来还要多,这样你可以看出淘寶在CDN上的实力这
在全世界都是数一数二的(其实我们一开始用的商用CDN就是
ChinaCache,它们支撑了很长时间)另外,因为CDN需要大量
的服务器要消耗很多能源(消耗多少?在前两年我们算过一笔
账淘宝上产生一个交易,消耗的电量足以煮熟4个鸡蛋)这两
年,章文嵩的团队又在研究低功耗的服务器在绿色计算领域也
做了很多开创性的工作,我们定制的基于英特尔凌动处理器的低
功耗服务器已经部署到了CDN机房降低了很大的能耗。这方面
的内容可以看后面笔者对章文嵩博士的专访

回想起刚用缓存那段时间,笔者还是个菜鸟有一个经典的


错误瑺常犯,就是更新数据库的内容时忘记通知缓存系统,结
果在测试的时候就发现我改过的数据在页面上没有变化后来做
了一些页面上嘚代码,修改CSS和JS的时候用户本地缓存的信息
没有更新,页面上也会乱掉在论坛上被人说的时候,我告诉他
用Ctrl+F5组合键(清除本地缓存刷噺页面)然后赶紧修改脚本

第二部分:淘宝技术发展432

文件的名称,重新发布页面


我们对数据分库、放弃EJB、引入Spring、加入缓存、加入

CDN等工莋,看起来没有章法可循其实都是围绕着提高容量、


提高性能、节约成本来做的,由于这些是不算大的版本变迁我
们姑且叫它2.1版,这個版本从构图上看有三只脚是不是稳定了

在这个稳定的版本下,淘宝网的业务有了突飞猛进的发展


2005年5月,微软的MSN门户大张旗鼓地进入Φ国淘宝网成为
它的购物频道。2005年中盛大进军机顶盒业务,其电视购物的
功能也是淘宝网开发的虽然因为水土不服或者政策的原因,这

两个业务现在都看不到了但他们曾经是中国互联网行业的大事


件。那位和微软谈合作的人是@胖胡斐他花起钱来也是大手笔
的,我們就管他叫“二少爷”他现在是蘑菇街的COO。

另外老马也从来都不缺少娱乐精神,他看到湖南卫视的超


女如此成功也想借鉴一下这种模式。就在2005年底淘宝网和
湖南卫视合作推出了一档节目,叫做“超级Buyer秀”这是一
个定位于“超级会网购的人”的一个选秀节目,以百萬年薪为诱
饵让大家分享自己的网购经历,网友投票选出最终胜者这个
从海选到表演,历时一年多广告做得铺天盖地。虽然节目最終
没有超女那样火爆这也让“淘宝网就是网购”的形象通过湖南

第二部分:淘宝技术发展452


到2006年,淘宝网已经有了1.5亿个的日均PV商品数达5芉
多万个,注册用户3千多万个全网成交额达169亿元。

回顾一下上面几个版本1.0版的PHP系统运行了将近一年


的时间(2003年5月—2004年1月),服务器由┅台发展到多台;

后来数据库撑不住了将MySQL换成了Oracle,引入了搜索引擎


(2004年1月—2004年5月叫1.1版本);然后不到半年的时间又
把开发语言换成了Java(2004年2月—2005年3月,叫2.0版本)
数据服务逐步采用了IOE;随着数据量和访问量的增长,我们进
行数据分库、加入缓存、使用CDN(2004年10月—2007年1月
叫2.1版夲)。这几个版本中间有些时间上的重合因为很多架构
的演化并没有明显的时间点,它是逐步进化而来的

在描述2.1版本的时候,我写的標题是《坚若磐石》这个


“坚若磐石”是因为这个版本终于稳定下来了,在这个版本的系
统上淘宝网运行了两年多的时间。这期间有佷多优秀的人才加
入也开发了很多优秀的产品,例如商品的类目属性、支付宝
认证系统、招财进宝项目、淘宝旅行、淘宝彩票、淘宝論坛等,
甚至在团购网站风起云涌之前淘宝网在2006年就推出了“团

在这些产品和功能的最底层,其实还是商品管理和交易管理


这两大功能这两大功能在2.1版本中都有很大的变化。商品管理
起初是要求卖家选择7天到期还是14天到期到期之后自动下架,
必须重新发布才能上架仩架之后就变成了新的商品信息(ID变
过了)。另外如果商品在这个期间成交了,之后再有新货必
须发布一个新的商品信息。这么做有幾个原因一是参照拍卖商
品的时间设置,要在某日期前结束挂牌;二是搜索引擎不知道同

第二部分:淘宝技术发展472

样的商品哪个排在前媔那就把挂牌时间长的排前面(这样就必


须在某个时间把老的商品下架,否则它会一直排在前面);第三
是成交信息和商品ID关联这个商品如果多次编辑还是同一个ID
的话,成交记录中的商品信息会不断改变;还有一个不为人知的
原因是我们的存储有限不能让所有的商品咾存放在主库中。这
种处理方式简单粗暴但还算是公平。不过这样会导致很多需求
都无法满足例如,卖出一件商品之后就无法更改价格否则前
面已经成交的那个价格都变了,而且同样的商品上一次销售后
的很多好评都无法在下一个商品上体现出来;再如,我买过的商
品结束后只看到交易的信息不知道卖家是否还会卖。基于这些
需求我们在2006年下半年把商品和交易拆开,一个商家的一种
商品有一个唯一的ID上下架都是同一个商品。那么如果卖家修
改价格和库存等信息已成交的信息怎么处理?那就在买家每交
易一次的时候都记录丅商品的快照信息,有多少次交易就有多
少个快照这样买卖双方比较爽了,但这给系统带来了什么存
储的成本大幅度上升了!

存储的荿本高到什么程度呢?数据库方面用了IOE一套下


来就是千万级别的,那几套下来就是——好多钱啊另外,淘宝
网还有很多文件需要存储最主要的就是图片、商品描述、交易
快照,一个商品要包含几张图片和一长串的描述信息而每一张
图片都要生成几张规格不同的缩略圖。在2010年淘宝网的后端
系统上保存着286亿个图片文件。图片在交易系统中非常重要大

家常说“一张好图胜千言”、“无图无真相”,淘寶网的商品照


片尤其是热门商品图片的访问流量是非常大的。在淘宝网整体
流量中图片的访问流量要占到90%以上,而且这些图片平均大
尛为17.45KB小于8KB的图片占整体图片数量的61%,占整体系
统容量的11%这么多的图片数据、这么大的访问流量,给淘宝
网的系统带来了巨大的挑战對于大多数系统来说,最头疼的就
是大规模的小文件存储与读取因为磁头需要频繁寻道和换道,
因此在读取上容易带来较长的延时。茬大量高并发访问量的情
况下简直就是系统的噩梦。我们该怎么办

同样的套路,在某个规模以下采用现有的商业解决方案达


到某种規模之后,商业的解决方案无法满足只有自己创造解
决方案了。对于淘宝的图片存储来说转折点在2007年。这之
前一直采用商用存储系統,应用NetApp公司的文件存储系统
随着淘宝网的图片文件数量以每年3倍的速度增长,淘宝网后端
NetApp公司的存储系统也从低端到高端不断迁移矗至2006年,
即使是NetApp公司最高端的产品也不能满足淘宝网存储的要求
从2006年开始,我们决定自己开发一套针对海量小文件存储的文
件系统用於解决自身图片存储的难题。这标志着淘宝网从使用
技术到了创造技术的阶段

2007年之前的图片存储架构如下图所示。

}
以前还是好好的之后不知道为什么这样了鼠标滑轮已经到底了,下面的内容就不显示了不是我网速的问题我试了很多次都是这样...
以前还是好好的之后不知道为什么这樣了

鼠标滑轮已经到底了,下面的内容就不显示了

不是我网速的问题 我试了很多次 都是这样

    这是浏览器的问题网速是不是太慢了?或换瀏览器试一下

    你对这个回答的评价是

    那就换个浏览器,或者去360的电脑专家上修复一下浏览器

    你对这个回答的评价是?

}

我要回帖

更多关于 苹果怎么设置滑动翻页 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信