分析:淘宝网发展史:神秘组织的技术内幕与艰辛历程

作者:admin  发表时间:2020-11-25  浏览:45  海淘人物

一、引言:光棍节的狂欢​11月11日光棍节网民感受到的是疯抢的喜悦,而网站的技术人员感受到的却是压力山大。就如同你家办酒席,宴请左邻右舍,这个办起来容易。倘若宴请十里八乡所有的人,吃饭的人自然开心,但却不是一般人家能够办得起来的。能办得起来如此盛宴者,需要强大的财力物力、组织能力、技术实力(例如做这么多菜,你的炒锅一定要是分布式的、可复制的、可扩展的,洗菜切菜要有工作流引擎,上菜的路径要用图论来计算出来,甚至连厨房的下水道都要重新设计)。淘宝能够举办如此盛宴,网站的技术实力可见一斑。淘宝网拥有全国最大的Hadoop分布式计算集群之一,日新增数据50TB,有40PB海量数据存储。分布在全国各地80多个节点的CDN网络,支持的流量超过800Gbps。淘宝的搜索引擎能够对数十亿的商品数据进行实时搜索,另外还拥有自主研发的文件存储系统和缓存系统,以及Java中间件和消息中间件系统,这一切组成了一个庞大的电子商务操作系统。另外从商业数据上来看,Amazon的财报显示2011年完成了大约480亿美金的交易额,eBay 2011年财报全年完成了大约600亿美金的交易额(不包括其独立的汽车交易平台)。不管从交易额、商品数量、同比增速等指标上看,淘宝网均远超于此,是目前全球最大的电子商务平台。(由于淘宝非上市公司,未公布2011年业绩,以上内容来自淘宝网技术副总裁@_行癫的微博)以上这些技术数据可能已经让一些同学产生不适的感觉,为了让更多的人读懂这本书,我们从技术的角度来看,小美访问淘宝网的时候,网站上发生了什么事情。参考资料:《技术普及帖:你刚才在淘宝上买了一件东西》,来自南京邮电大学孙放同学。​为了有个更直观的对比,我们说一个同行,他在2011年光棍节之前做促销,流量上去之后,达到12Gbps(他们有这么大的流量,老板很高兴,在微博上面说了这个数据),这时候流量达到了极限,网站几乎挂掉,用户无法下订单。而淘宝网光棍节当天网络的流量最高达到800多Gbps,带给各家银行和快递公司的流量也让他们压力山大,如临大敌(后来,他们以能够撑住淘宝带来的流量为荣而到处宣传)。另外如果你在网上购买过火车票的话,更能体会到网站能支持多大的流量有多重要。但这不是一朝一夕做出来的,也不是有钱就能办到的。​​以上对比的这些网站,也许读者很容易就猜到是哪一家,这里拿出来作对比,绝对没有嘲笑人家的意思,采用通常的网站技术方案,能做到这种程度已经不错了。任何网站的发展都不是一蹴而就的,在什么样的阶段采用什么样的技术。在发展的过程中网站会遇到各种各样的问题和业务带来的压力,正是这些原因才推动着技术的进步和发展,而技术的发展又会反过来促进业务的更大提升。二者互为因果,相互促进。如今淘宝网的流量已经是全球排名第12、国内排名第3(美国的eBay全球排名23,国内前两名是百度和腾讯)。淘宝网的系统也从使用一台服务器,到采用万台以上的服务器。本书就为大家描述淘宝网在整个发展过程中,所有的主动和被动的技术变革的前因后果,这由很多有趣的故事组成。​正如同很多人或组织成功了以后,就会为自己的出身编造一个美丽的传说。淘宝网的出身,网上也有非常多的传说,下面我们就从它的出生开始讲起。​二、个人网站​2003年4月7日,马云,在杭州,成立了一个神秘的组织。他叫来十位员工,要他们签了一份协议,这份协议要求他们立刻离开阿里巴巴,去做一个神秘的项目。这个项目要求绝对保密,老马戏称连说梦话被老婆听到都不行,谁要是透漏出去,我将追杀到天涯海角。这份协议是英文版的,匆忙之间,大多数人根本来不及看懂,但出于对老马的信任,都卷起铺盖离开了阿里巴巴。​他们去了一个神秘的据点湖畔花园小区的一套未装修的房子里,房子的主人是马云。这伙人刚进去的时候,马云给他们布置了一个任务,就是在最短的时间内做出一个个人对个人(C2C)的商品交易的网站。现在出一个问题考考读者,看你适不适合做淘宝的创业团队。亲,要是让你来做,你怎么做?​在说出这个答案之前,容我先卖个关子,介绍一下这个创业团队的成员:三个开发工程师(虚竹、三丰、多隆)、一个UED(二当家)、三个运营(小宝、阿珂、破天)、一个经理(财神)、还有就是马云和他的秘书。当时对整个项目组来说压力最大的就是时间,怎么在最短的时间内把一个从来就没有的网站从零开始建立起来?了解淘宝历史的人知道淘宝是在2003年5月10日上线的,这之间只有一个月。要是你在这个团队里,你怎么做?我们的答案就是:买一个来。​买一个网站显然比做一个网站要省事一些,但是他们的梦想可不是做一个小网站而已,要做大,就不是随便买个就行的,要有比较低的维护成本,要能够方便的扩展和二次开发。那接下来就是第二个问题:买一个什么样的网站?答案是:轻量一点的,简单一点的,于是买了这样一个架构的网站:LAMP(Linux+Apache+MySQL+PHP)。这个直到现在还是一个很常用的网站架构模型。这种架构的优点是:无需编译,发布快速,PHP功能强大,能做从页面渲染到数据访问所有的事情,而且用到的技术都是开源的,免费。​当时我们是从一个美国人那里买来的一个网站系统,这个系统的名字叫做PHPAuction(他们的官方网站http://www.phpauction.net,这个名字很直白,一眼就看出来这个系统是用什么语言做的、是干什么用的),PHPAuction有好几个版本,我们买的是最高版的,功能比较多,而且最重要的是对方提供了源代码。最高版比较贵,花了我们2000美金(貌似现在降价了,只要946美元)。买来之后不是直接就能用的,需要很多本地化的修改,例如页面模板改的漂亮一点,页头页脚加上自己的站点简介等,其中最有技术含量的是对数据库进行了一个修改。原来是从一个数据库进行所有的读写操作,拿过来之后多隆把它给拆分成一个主库、两个从库,读写分离。这么做的好处有几点:存储容量增加了,有了备份,使得安全性增加了,读写分离使得读写效率提升了。这样整个系统的架构就如下图所示:​​​其中Pear DB是一个PHP模块,负责数据访问层。另外也用开源的论坛系统PHPBB(www.phpbbchina.com )搭建了一个小的论坛社区,虚竹负责机器采购、配置、架设等,三丰和多隆负责编码,他们把交易系统和论坛系统的用户信息打通,给运营人员开发出后台管理(admin系统)的功能,把交易类型从只有拍卖这一种增加为拍卖、一口价、求购商品、海报商品(意思是还没推出的商品,先挂个海报出来)这四种。(PHPAuction只有拍卖的交易,Auction即拍卖的意思。@_行癫在微博中提到:今天eBay所有交易中拍卖交易仍然占了40%,而在中国,此种模式在淘宝几乎从一开始就未能占据优势,如今在主流的交易中几乎可以忽略不计。背后的原因一直令人费解。我大致可以给出其中一种解释,eBay基本在发达国家展开业务,制造业外包后,电子商务的基本群体大多只能表现为零散的个体间交易。)​在经历了另外一些有趣的事情之后(这些有趣的事情包括淘宝这个名字的由来,员工花名的由来等等,由于本书主要描述技术方面的故事,对这些有兴趣的可以去网上找),网站开始上线运行了。​​​在接下来的大半年时间里,这个网站迅速显示出了它的生机。这里有必要提一下当时的市场环境,非典(SARS)的肆虐使得大家都不敢出门,尤其是去商场之类人多的地方。另外在神州大地上最早出现的C2C网站易趣也正忙的不亦乐乎,2002年3月,eBay以3000万美元收购了易趣公司33%的股份,2003年6月以1.5亿美元收购了易趣公司剩余67%的股份。当时淘宝网允许买卖双方留下联系方式,允许同城交易,整个操作过程简单轻松。而eBay为了收取交易佣金,是禁止这么做的,这必然增加了交易过程的难度。而且eBay为了全球统一,把易趣原来的系统替换成了美国eBay的系统,用户体验一下子全变了,操作起来非常麻烦,这等于是把积累的用户拱手送给了淘宝。为了不引起eBay的注意,淘宝网在2003年里一直声称自己是一个个人网站。由于这个创业团队强大的市场开拓和运营能力,淘宝网发展的非常迅猛,2003年底就吸引了注册用户XXX,最高每日31万PV,从5月到年底成交额4000万。这没有引起eBay的注意,却引起了阿里巴巴内部很多员工的注意,他们觉得这个网站以后会成为阿里巴巴强劲的对手。甚至有人在内网发帖,忠告管理层要警惕这个刚刚起步的网站,但管理层似乎无动于衷。(这个团队的保密工作做的真好)​在市场和运营的后方,淘宝网的技术团队也在快速的做着系统的改进和创新。这里还有个有趣的故事,eBay和易趣早期都有员工在论坛上响应用户的需求,eBay的论坛用粉红色背景来区分员工的发言,易趣的员工在论坛上昵称都选各种豆豆,例如黄豆豆、蚕豆豆等。淘宝在讨论运营策略的时候提到这个问题,要求所有的员工都去论坛上回答用户的问题。最早回答问题的任务落在小宝头上,那我们用什么名字好呢?淘淘?宝宝?小宝都不满意,太女性化了。讨论了很久之后,小宝灵光乍现,干脆取个名字叫小宝吧,小宝带七个老婆来开店,迎接各位客官,很有故事性。于是很多武侠小说中的人物开始在论坛中行侠仗义,这些昵称下面标志着淘宝店小二,他们回答着各种各样的问题,快速响应着用户的各种需求。如果是技术上能解决的,几个人商量一下,马上就开发、测试、发布上线。反过来对比一下,易趣被eBay收购之后,系统更换成了全球通用的版本,响应用户的一个需求需要层层审批,反应速度自然慢了下来。​ 当时淘宝第一个版本的系统里面已经包含了商品发布、管理、搜索、商品详情、出价购买、评价投诉、我的淘宝这些功能(现在主流程中也是这些模块。在2003年10月增加了一个功能节点:安全交易,这个是支付宝的雏形)。随着用户需求和流量的不断增长,系统上面做了很多的日常改进,服务器由最初的一台变成了三台,一台负责发送email、一台负责运行数据库、一台负责运行Web App。过一段时间之后,商品搜索的功能占用数据库资源太大了(用like搜索的,很慢),又从阿里巴巴中文站搬过来他们的搜索引擎iSearch,起初iSearch索引的文件放在硬盘上,随着数据量的增长,又采购了NetApp服务器放置iSearch。​如此快节奏的工作,其实大家都累得不行,有人就提议大家随时随地的锻炼身体,可是外面SARS横行,在一个一百多方的房子里,怎么锻炼呢?高挑美女阿珂提议大家练习提臀操,这个建议遭到男士的一致反对,后来虚竹就教大家练习倒立,这个大家都能接受。于是这个倒立的传统一直延续至今,和花名文化、武侠文化一并传承了下来。​随着访问量和数据量的飞速上涨,问题很快就出来了,第一个问题出现在数据库上。MySQL当时是第4版的,我们用的是默认的存储引擎MyISAM,这种类型读数据的时候会把表锁住(我们知道Oracle在写数据的时候会有行锁,读数据的时候是没有的),尤其是主库往从库上面写数据的时候,会对主库产生大量的读操作,使得主库性能急剧下降。这样在高访问量的时候,数据库撑不住了。另外,当年的MySQL不比如今的MySQL,在数据的容量和安全性方面也有很多先天的不足(和Oracle相比)。​三、Oracle/支付宝/旺旺​淘宝网作为个人网站发展的时间其实并不长,由于它太引人注目了,马云在2003年7月就宣布了这个是阿里巴巴旗下的网站,随后在市场上展开了很成功的运作。最著名的就是利用中小网站来做广告,突围eBay在门户网站上对淘宝的广告封锁。上网比较早的人应该还记得那些在右下角的弹窗和网站腰封上一闪一闪的广告。市场部那位到处花钱买广告的家伙,太能花钱了,一出手就是几百万,他被我们称为大少爷。​大少爷们做的广告,带来的就是迅速上涨的流量和交易量。在2003年底,MySQL已经撑不住了,技术的替代方案非常简单,就是换成Oracle。换Oracle的原因除了它容量大、稳定、安全、性能高之外,还有人才方面的原因。在2003年的时候,阿里巴巴已经有一支很强大的DBA团队了,有冯春培、汪海(七公)这样的人物,后来还有冯大辉(@fenng)、陈吉平(拖雷)。这样的人物牛到什么程度呢?Oracle给全球的技术专家颁发一些头衔,其中最高级别的叫ACE(就是扑克牌的尖儿,够大的吧),被授予这个头衔的人目前全球也只有300多名(名单在这里:apex.oracle.com/pls/otn/f?p19297:3 ),当年全球只有十几名。有如此强大的技术后盾,把MySQL换成Oracle是顺理成章的事情。​​但更换数据库不是只换个库就可以的,访问方式,SQL语法都要跟着变,最重要的一点是,Oracle并发访问能力之所以如此强大,有一个关键性的设计连接池。但对于PHP语言来说它是放在Apache上的,每一个请求都会对数据库产生一个连接,它没有连接池这种功能(Java语言有Servlet容器,可以存放连接池)。那如何是好呢?这帮人打探到eBay在PHP下面用了一个连接池的工具,是BEA卖给他们的。我们知道BEA的东西都很贵,我们买不起,于是多隆在网上寻寻觅觅,找到一个开源的连接池代理服务SQLRelay( sourceforge.jp/projects/freshmeat_sqlrelay ),这个东西能够提供连接池的功能,多隆对它进行了一些功能改进之后就拿来用了。这样系统的架构就变成了如下的样子:​​数据一开始是放在本地的,DBA们对Oracle做调优的工作,也对SQL进行调优。后来数据量变大了,本地存储不行了。买了NAS(NetworkAttached Storage:网络附属存储),NetApp的NAS存储作为了数据库的存储设备,加上Oracle RAC(Real Application Clusters,实时应用集群)来实现负载均衡。七公说这实际上是走了一段弯路,NAS的NFS(Network File System)协议传输的延迟很严重,但那时侯不懂。后来采购了Dell和EMC合作的SAN低端存储,性能一下子提升了10几倍,这才比较稳定了。再往后来数据量更大了,存储的节点一拆二、二拆四,RAC又出问题了。这才踏上了购买小型机的道路。在那段不稳定的时间里,七公曾经在机房住了5天5夜。​替换完数据库,时间到了2004年春天,俗话说春宵一刻值千金,但这些人的春宵却不太好过了。他们在把数据的连接放在SQLRelay之后就噩梦不断,这个代理服务经常会死锁,如同之前的MySQL死锁一样。虽然多隆做了很多修改,但当时那个版本内部处理的逻辑不对,问题很多,唯一解决的办法就是重启它的服务。这在白天还好,连接上机房的服务器,把进程杀掉,然后开启就可以了,但是最痛苦的是它在晚上也要死掉,于是工程师们不得不24小时开着手机,一旦收到SQLRelay进程挂起的短信,就从春梦中醒来,打开电脑,连上机房,重启服务。后来干脆每天睡觉之前先重启一下。做这事最多的据说是三丰,他现在是淘宝网的总裁。现在我们知道,任何牛B的人物,都有一段苦B的经历。​微博上有人说好的架构是进化来的,不是设计来的。的确如此,其实还可以再加上一句好的功能也是进化来的,不是设计来的。在架构的进化过程中,业务的进化也非常迅猛。最早的时候,买家打钱给卖家都是通过银行转账汇款,有些骗子收了钱却不发货,这是一个很严重的问题。然后这伙人研究了PayPal的支付方式,发现也不能解决问题。后来这几个聪明的脑袋又想到了担保交易这种第三方托管资金的办法。于是在2003年10月,淘宝网上面上线了一个功能,叫做安全交易,卖家选择支持这种功能的话,买家会把钱交给淘宝网,等他收到货之后,淘宝网再把钱给卖家。这就是现在的支付宝,在前两天(2012.2.21)年会上,支付宝公布2011年的交易笔数已经是PayPal的两倍。这个划时代的创新,其实就是在不断的思索过程中的一个灵光乍现。​当时开发安全交易功能的是茅十八和他的徒弟苗人凤(茅十八开发到一半去上海读MBA去了,苗人凤现在是支付宝的首席业务架构师),开发跟银行网关对接的功能的是多隆。当时多数银行的网站已经支持在线支付了,但多隆告诉我,他们的网关五花八门,用什么技术的都有,必须一家一家去接。而且他们不保证用户付钱了就一定扣款成功、不保证扣款成功了就一定通知淘宝、不保证通知淘宝了就一定能通知到、不保证通知到了就不重复通知。这害苦了苗人凤,他必须每天手工核对账单,对不齐的话就一定是有人的钱找不到地方了,少一分钱都睡不着觉。另外他为了测试这些功能,去杭州所有的银行都办理了一张银行卡。一堆银行卡摆在桌子上,不知道的人还以为这个家伙一定很有钱,其实里面都只是十块八块的。现在我们再一次知道,任何牛B的人物,都必须有一段苦B的经历。​有人说淘宝打败易趣(eBay中国)是靠免费,其实这只是原因之一。如果说和易趣过招第一招是免费的话,这让用户没有门槛就愿意来,那第二招就是安全支付,这让用户放心付款,不必担心被骗。在武侠小说中真正的高手飞花摘叶即可伤人,他们不会局限于一招两招,一旦出手,连绵不绝。而淘宝的第三招就是旺旺,让用户在线沟通。其实淘宝旺旺也不是自己生出来的,是从阿里巴巴的贸易通复制过来的。从2004年3月开始,叮咚、叮咚这个经典的声音就回荡在所有淘宝买家和卖家的耳边,亲,包邮不?,亲,把零头去掉行不?,这亲切的砍价声造就了后来的淘宝体。有人说中国人就是爱砍价,虽然笔者体会不到砍价成功后有多少成就感,但每次我去菜市场,看到大妈们砍价砍得天昏地暗,那满足的劲头堪比捡到了钱,我就深刻的理解了淘宝旺旺在交易过程中的价值。我猜eBay也体会不到砍价的乐趣,他们一直不允许买卖双方在线聊天,收购了skype之后也没有用到电子商务中去。​旺旺在推出来没多久,就惹了一个法律方面的麻烦。有个做雪饼的厂家找上门来,说我们侵权了,他们家的雪饼很好吃,牛奶也做得不错,我们都很喜欢。然后我们就在旺旺的前面加了两个字,叫做淘宝旺旺。在那个野蛮生长的阶段,其实很多产品都是想到什么就做什么,例如我们还搭建过一个聊天室,但似乎淘宝网不是一个闲聊的地方,这个聊天室门可罗雀,一段时间后就关闭掉了。​SQLRelay的问题搞得三丰他们很难睡个囫囵觉,那一年开半年会的时候,公司特地给三丰颁了一个奖项,对他表示深切的安慰。但不能总这样啊,于是,2004年的上半年开始,整个网站就开始了一个脱胎换骨的手术。​四、淘宝技术发展(Java时代:脱胎换骨)​我的师父黄裳@岳旭强曾经说过,好的架构图充满美感,一个架构好不好,从审美的角度就能看得出来。后来我看了很多系统的架构,发现这个言论基本成立。那么反观淘宝前面的两个版本的架构,你看哪个比较美?​​显然第一个比较好看,后面那个显得头重脚轻,这也注定了它不是一个稳定的版本,只存活了不到半年的时间。2004年初,SQL Relay的问题解决不了,数据库必须要用Oracle,那从哪里动刀?只有换开发语言了。换什么语言好呢?Java。Java是当时最成熟的网站开发语言,它有比较良好的企业开发框架,被世界上主流的大规模网站普遍采用,另外有Java开发经验的人才也比较多,后续维护成本会比较低。​到2004年上半年,淘宝网已经运行了一年的时间,这一年积累了大量的用户,也快速的开发了很多功能,当时这个网站已经很庞大了,而且新的需求还在源源不断的过来。把一个庞大的网站的开发语言换掉,无异于脱胎换骨,在换的过程中还不能拖慢业务的发展,这无异于边换边跑,对时间和技术能力的要求都非常高。做这样的手术,需要请第一流的专家来主刀。现在再考一下读者,如果你在这个创业团队里面,请什么样的人来做这事?我们的答案是请Sun的人。没错,就是创造Java语言的那家公司,世界上没有比他们更懂Java的了。除此之外,还有一个不为人知的原因,……(此处和谐掉200字,完整版见aliway)​​这帮Sun的工程师的确很强大,在笔者2004年底来淘宝的时候,他们还在,有幸跟他们共事了几个月。现在摆在他们面前的问题是用什么办法把一个庞大的网站从PHP语言迁移到Java?而且要求在迁移的过程中,不停止服务,原来系统的bugfix和功能改进不受影响。亲,你要是架构师,你怎么做?有人的答案是写一个翻译器,如同把中文翻译成英文一样,自动翻译。我只能说你这个想法太超前了,换个说法就是too simple, sometimes naive。当时没有,现在也没有人能做到。他们的大致方案是给业务分模块,一个模块一个模块的替换。如用户模块,老的member.taobao.com继续维护,不添加新功能,新的功能先在新的模块上开发,跟老的共用一个数据库,开发完毕之后放到不同的应用集群上,另开个域名member1.taobao.com,同时替换老的功能,替换一个把老的模块上的功能关闭一个,逐渐的把用户引导到member1.taobao.com,等所有功能都替换完毕之后,关闭member.taobao.com。后来很长时间里面都是在用member1这样奇怪的域名,两年后有另外一家互联网公司开始做电子商务了,我们发现他们的域名也叫member1.xx.com、auction1.xx.com……​说了开发模式,再说说用到的Java MVC框架,当时的struts1.x是用的比较多的框架,但是用过webwork和struts2的同学可能知道,struts1.x在多人协作方面有很多致命的弱点,由于没有一个轻量框架作为基础,因此很难扩展,这样架构师对于基础功能和全局功能的控制就很难做到。而阿里巴巴的18个创始人之中,有个架构师,在Jakarta Turbine的基础上,做了很多扩展,打造了一个阿里巴巴自己用的MVC框架WebX (http://www.openwebx.org/docs/Webx3_Guide_Book.html),这个框架易于扩展,方便组件化开发,它的页面模板支持JSP和velocity等、持久层支持ibatis和hibernate等、控制层可以用EJB和Spring(Spring是后来才有的)。项目组选择了这个强大的框架,这个框架如果当时开源了,也许就没有webwork和struts2什么事了。另外,当时Sun在全世界大力推广他们的EJB,虽然淘宝的架构师认为这个东东用不到,但他们还是极力坚持。在经历了很多次的技术讨论、争论和争吵之后,这个系统的架构就变成了下图的样子:​Java应用服务器是Weblogic,MVC框架是WebX、控制层用了EJB、持久层是iBATIS,另外为了缓解数据库的压力,商品查询和店铺查询放在搜索引擎上面。这个架构图是不是好看了一点了,亲?​这帮Sun的工程师开发完淘宝的网站之后,又做了一个很牛的网站,叫支付宝。​​其实在任何时候,开发语言本身都不是系统的瓶颈,业务带来的压力更多的是压到了数据和存储上。上面一篇也说到,MySQL撑不住了之后换Oracle,Oracle的存储一开始在本机上,后来在NAS上,NAS撑不住了用EMC的SAN存储,再然后Oracle的RAC撑不住了,数据的存储方面就不得不考虑使用小型机了。在2004年的夏天,DBA七公、测试工程师郭芙和架构师行癫,踏上了去北京测试小型机的道路。他们带着小型机回来的时候,我们像欢迎领袖一样的欢迎他们,因为那个是我们最值钱的设备了,价格表上的数字吓死人。小型机买回来之后我们争相合影,然后Oracle就跑在了小型机上,存储方面从EMC低端cx存储到Sun oem hds高端存储,再到EMC dmx高端存储,一级一级的往上跳。​到现在为止,我们已经用上了IBM的小型机、Oracle的数据库、EMC的存储,这些东西都是很贵的,那些年可以说是花钱如流水啊。有人说过钱能解决的问题,就不是问题,但随着淘宝网的发展,在不久以后,钱已经解决不了我们的问题了。花钱买豪华的配置,也许能支持1亿PV的网站,但淘宝网的发展实在是太快了,到了10亿怎么办?到了百亿怎么办?在N年以后,我们不得不创造技术,解决这些只有世界顶尖的网站才会遇到的问题。后来我们在开源软件的基础上进行自主研发,一步一步的把IOE(IBM小型机、Oracle、EMC存储)这几个神器都去掉了。这就如同在《西游记》里面,妖怪们拿到神仙的兵器会非常厉害,连猴子都能够打败,但最牛的神仙是不用这些神器的,他们挥一挥衣袖、翻一下手掌就威力无比。去IOE这一部分会在最后讲解,这里先埋个千里伏笔。​五、淘宝技术发展(Java时代:坚若磐石)​已经有读者在迫不及待的问怎么去掉了IOE,别急,在去掉IOE之前还有很长的路要走。行癫他们买回来小型机之后,我们用上了Oracle,七公带着一帮DBA在优化SQL和存储,行癫带着几个架构师在研究数据库的扩展性。Oracle本身是一个封闭的系统,用Oracle怎么做扩展?用现在一个时髦的说法就是做分库分表。​​我们知道一台Oracle的处理能力是有上限的,它的连接池有数量限制,查询速度跟容量成反比。简单的说,在数据量上亿、查询量上亿的时候,就到它的极限了。要突破这种极限,最简单的方式就是多用几个Oracle数据库。但一个封闭的系统做扩展,不像分布式系统那样轻松。我们把用户的信息按照ID来放到两个数据库里面(DB1/DB2),把商品的信息跟着卖家放在两个对应的数据库里面,把商品类目等通用信息放在第三个库里面(DBcommon)。这么做的目的除了增加了数据库的容量之外,还有一个就是做容灾,万一一个数据库挂了,整个网站上还有一半的数据能操作。​​数据库这么分了之后,应用程序有麻烦了,如果我是一个买家,买的商品有DB1的也有DB2的,要查看我已买到的宝贝的时候,应用程序怎么办?必须到两个数据库里面分别查询出来对应的商品。要按时间排序怎么办?两个库里面我已买到的宝贝全部查出来在应用程序里面做合并。还有分页怎么处理?关键字查询怎么处理?这些东西交
海客讨论(0条)

头像

0/300

微博发布

部分图片内容来自于网友投稿

966.53ms