淘宝网技术发展回顾(五) Java时代:坚若磐石

  已经有读者在迫不及待的问怎么去掉了IOE,别急,在去掉IOE之前还有很长的路要走。行癫他们买回来小型机之后,我们用上了Oracle,七公带着一帮DBA在优化SQL和存储,行癫带着几个架构师在研究数据库的扩展性。Oracle本身是一个封闭的系统,用Oracle怎么做扩展?用现在一个时髦的说法就是做“分库分表”。

  我们知道一台Oracle的处理能力是有上限的,它的连接池有数量限制,查询速度跟容量成反比。简单的说,在数据量上亿、查询量上亿的时候,就到它的极限了。要突破这种极限,最简单的方式就是多用几个Oracle数据库。但一个封闭的系统做扩展,不像分布式系统那样轻松。我们把用户的信息按照ID来放到两个数据库里面(DB1/DB2),把商品的信息跟着卖家放在两个对应的数据库里面,把商品类目等通用信息放在第三个库里面(DBcommon)。这么做的目的除了增加了数据库的容量之外,还有一个就是做容灾,万一一个数据库挂了,整个网站上还有一半的数据能操作。

  数据库这么分了之后,应用程序有麻烦了,如果我是一个买家,买的商品有DB1的也有DB2的,要查看“我已买到的宝贝”的时候,应用程序怎么办?必须到两个数据库里面分别查询出来对应的商品。要按时间排序怎么办?两个库里面“我已买到的宝贝”全部查出来在应用程序里面做合并。还有分页怎么处理?关键字查询怎么处理?这些东西交给程序员来做的话会很悲催,于是行癫在淘宝的第一个架构上的作品就来解决了这个问题,他写了一个数据库路由的框架DBRoute,这个框架在淘宝的Oracle时代一直在使用。后来随着业务的发展,这种分库的第二个目的——容灾的效果就没有达到。像评价、投诉、举报、收藏、我的淘宝等很多地方,都必须同时连接DB1和DB2,哪个库挂了都会导致整个网站挂掉。

  上一篇说过,采用EJB其实是和Sun的工程师妥协的结果,在他们走了之后,EJB也逐渐被冷落了下来。在05、06年的时候,spring大放异彩,正好利用spring的反射(IoC)模式替代了EJB的工厂模式,给整个系统精简了很多代码。

  上一篇还说过,为了减少数据库的压力,提高搜索的效率,我们引入了搜索引擎。随着数据量的继续增长,到了2005年,商品数有1663万,PV有8931万,注册会员有1390万,这给数据和存储带来的压力依然山大,数据量大,性能就慢。亲,还有什么办法能提升系统的性能?一定还有招数可以用,这就是缓存和CDN(内容分发网络)。

  你可以想象,九千万的访问量,有多少是在商品详情页面?访问这个页面的时候,数据全都是只读的(全部从数据库里面读出来,不写入数据库),如果把这些读操作从数据库里面移到内存里,数据库将会多么的感激涕零。在那个时候我们的架构师多隆大神,找到了一个基于 Berkeley DB 的开源的缓存系统,把很多不太变动的只读信息放了进去。其实最初这个缓存系统还比较弱,我们并没有把整个商品详情都放在里面,一开始把卖家的信息放里面,然后把商品属性放里面,商品详情这个字段太大,放进去受不了。说到商品详情,这个字段比较恐怖,有人统计过,淘宝商品详情打印出来平均有5米长,在系统里面其实放在哪里都不招人待见。笔者清楚的记得,我来淘宝之后担任项目经理做的第一个项目就是把商品详情从商品表里面给移出来。这个字段太大了,查询商品信息的时候很多都不需要查看详情,它跟商品的价格、运费这些放在一个表里面,拖慢了整个表的查询速度。在05年的时候,我把商品详情放在数据库的另外一张表里面,再往后这个大字段被从数据库里面请了出来,这也让数据库再一次感激涕零。

  到现在为止,整个商品详情的页面都在缓存里面了,眼尖的读者可能会发现现在的商品详情不全是“只读”的信息了,这个页面上有个信息叫“浏览量”,这个数字每刷新一次页面就要“写入”数据库一次,这种高频度实时更新的数据能用缓存吗?如果不用缓存,一天几十亿的写入,数据库会怎么样?一定会挂掉。那怎么办?亲……先不回答你(下图不是广告,让你看看浏览量这个数据在哪里)

  

  CDN这个工作相对比较独立,跟别的系统一样,一开始我们也是采用的商用系统。后来随着流量的增加,商用的系统已经撑不住了,LVS的创始人章文嵩博士带人搭建了淘宝自己的CDN网络。在本文的引言中我说过淘宝的CDN系统支撑了800Gbps以上的流量,作为对比我们可以看一下国内专业做CDN的上市公司ChinaCache的介绍——“ChinaCache……是中国第一的专业CDN服务提供商,向客户提供全方位网络内容快速分布解决方案。作为首家获信产部许可的CDN服务提供商,目前ChinaCache在全国50多个大中城市拥有近300个节点,全网处理能力超过500Gbps,其CDN网络覆盖中国电信、中国网通、中国移动、中国联通、中国铁通和中国教育科研网等各大运营商。”——这样你可以看得出淘宝在CDN上面的实力,这在全世界都是数一数二的。另外因为CDN需要大量的服务器,要消耗很多能源(消耗多少?在前两年我们算过一笔帐,淘宝上产生一个交易,消耗的电足以煮熟4个鸡蛋)。这两年章文嵩的团队又在研究低功耗的服务器,在绿色计算领域也做了很多开创性的工作。淘宝CDN的发展需要专门一个章节来讲,想先睹为快的可以看一下笔者对章文嵩的专访:http://qing.weibo.com/1866752224/6f4460e033000jme.html

  回想起刚用缓存那段时间,笔者还是个小菜鸟,有一个经典的错误常常犯,就是数据库的内容更新的时候,忘记通知缓存系统,结果在测试的时候就发现我改过的数据怎么在页面上没变化呢。后来做了一些页面上的代码,修改CSS和JS的时候,用户本地缓存的信息没有更新,页面上也会乱掉,在论坛上被人说的时候,我告诉他用ctrl+F5刷新页面,然后赶紧修改脚本文件的名称,重新发布页面。学会用ctrl+F5的会员对我佩服的五体投地,我却惭愧的无地自容。

  有些技术的发展是顺其自然的,有些却是突如其来的。到2007年的时候,我们已经有几百台应用服务器了,这上面的java应用服务器是weblogic,而weblogic是非常贵的,比这些服务器本身都贵。有一段时间多隆研究了一下jboss,说我们换掉weblogic吧,于是又省下了不少银两。那一年,老马举办了第一届的“网侠大会”,会上来的大侠中有一位是上文提到的章文嵩,还有一位曾经在jboss团队工作,我们也把这位大侠留下了,这样我们用起jboss更加有底气了。

  这些杂七杂八的修改,我们对数据分库、放弃EJB、引入Spring、加入缓存、加入CDN、采用开源的Jboss,看起来没有章法可循,其实都是围绕着提高容量、提高性能、节约成本来做的,由于这些不算大的版本变迁,我们姑且叫它2.1版吧,这个版本从构图上来看有3只脚,是不是稳定了很多?

  架构图如下:

  

  下集预告:创造技术 分布式文件系统TFS、分布式kv缓存tair、搜索引擎升级

原文地址:http://blog.sina.com.cn/s/blog_633219970100ybfx.html?tj=1

淘宝网技术发展回顾(四):Java时代 脱胎换骨

时间: 2024-10-03 11:26:24

淘宝网技术发展回顾(五) Java时代:坚若磐石的相关文章

淘宝网技术发展回顾(四):Java时代 脱胎换骨

中介交易 SEO诊断 淘宝客 云主机 技术大厅 我的师父黄裳@岳旭强曾经说过,"好的架构图充满美感",一个架构好不好,从审美的角度就能看得出来.后来我看了很多系统的架构,发现这个言论基本成立.那么反观淘宝前面的两个版本的架构,你看哪个比较美? 显然第一个比较好看,后面那个显得头重脚轻,这也注定了它不是一个稳定的版本,只存活了不到半年的时间.2004年初,SQL Relay的问题解决不了,数据库必须要用Oracle,那从哪里动刀?只有换开发语言了.换什么语言好呢?Java.Java是当时

淘宝网技术发展回顾(三):Oracle/支付宝/旺旺

中介交易 SEO诊断 淘宝客 云主机 技术大厅 Oracle/支付宝/旺旺 淘宝网作为个人网站发展的时间其实并不长,由于它太引人注目了,马云在2003年7月就宣布了这个是阿里巴巴旗下的网站,随后在市场上展开了很成功的运作.最著名的就是利用中小网站来做广告,突围eBay在门户网站上对淘宝的广告封锁.上网比较早的人应该还记得那些在右下角的弹窗和网站腰封上一闪一闪的广告.市场部那位到处花钱买广告的家伙,太能花钱了,一出手就是几百万,他被我们称为"大少爷". "大少爷"们做

淘宝网技术发展回顾(二):个人网站时期

中介交易 SEO诊断 淘宝客 云主机 技术大厅 个人网站 2003年4月7日,马云,在杭州,成立了一个神秘的组织.他叫来十位员工,要他们签了一份协议,这份协议要求他们立刻离开阿里巴巴,去做一个神秘的项目.这个项目要求绝对保密,老马戏称"连说梦话被老婆听到都不行,谁要是透漏出去,我将追杀到天涯海角".这份协议是英文版的,匆忙之间,大多数人根本来不及看懂,但出于对老马的信任,都卷起铺盖离开了阿里巴巴. 他们去了一个神秘的据点--湖畔花园小区的一套未装修的房子里,房子的主人是马云.这伙人刚进

淘宝网技术发展回顾(一):“光棍节”的狂欢

中介交易 SEO诊断 淘宝客 云主机 技术大厅 "时间到,开抢!"坐在电脑前早已等待多时的小美一看时间已到2011年11月11日零时,便迫不及待地投身于淘宝商城一年一度的大型网购促销活动--"淘宝双11购物狂欢节".小美打开早已收藏好的宝贝--某品牌的雪地靴,飞快的点击购买,付款,一回头发现3000双靴子已被抢购一空. 小美跳起来,大叫一声"欧耶!" 小美不知道,就在11日零点过后的这一分钟内,全国有342万人和她一起涌入淘宝商城.当然,她更不知

淘宝网打击盗版图书:商家必须持证经营

新浪科技讯 6月8日上午消息,http://www.aliyun.com/zixun/aggregation/7554.html">阿里巴巴集团旗下淘宝网与北京十五家图书出版社(以下简称"京版十五社")在杭州共同 签订反盗版联盟图书 版权保护合作备忘录.淘宝网同时宣布,为为打击盗版图书,今后在淘宝网经营书籍.杂志.报纸的商家需 具备并持有<出版物经营许可证>. 据淘宝网介绍,其与"京版十五社"反盗版联盟从 2009年10月开始合作,目前已

淘宝网与淘宝客 到底是谁成就了谁

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 淘宝网,让淘宝客欢喜,却又让淘宝客忧.欢喜的是给许多人,尤其是大部分草根站长提供了赚钱的途径,部分个人站长也因为淘宝网有了不菲的收入.而忧的是越来越多的人加入淘宝客的行列,导致整个行业竞争激烈,许多淘宝客的生存空间都极为艰难,再加上接踵而来的"冻结门",掉单,封闭账户等以及最近的"360默认推荐购物助手插件&qu

淘宝网将与阿里妈妈合并 马云内部邮件曝光

中介交易 SEO诊断 淘宝客 云主机 技术大厅 9月4日,阿里巴巴集团宣布旗下的淘宝网.阿里妈妈两家公司进行合并.阿里巴巴集团董事局主席马云用内部邮件公布了合并细节,并透露淘宝网在坚持免费5年后,仅仅依靠广告收入我们上个星期已经让淘宝网实现当月收支平衡. 以下是邮件全文: 各位阿里人,  今天,我非常高兴地向大家宣布:阿里巴巴集团从今天起正式启动"大淘宝战略"第一步------淘宝网和阿里妈妈即日起合并发展,共同打造全球最大电子商务生态体系! 经过近5年的努力,淘宝网已经发展成为日均交

淘宝网打击盗版图书:商家须持证经营

腾讯科技讯(利康)6月8日,淘宝开始加大打击盗版图书力度,公司今日宣布,按照法律规定,今后在淘宝网经营书籍.杂志.报纸的商家需具备并持有<出版物http://www.aliyun.com/zixun/aggregation/5212.html">经营许可证>.与此同时,淘宝网和北京十五家图书出版社(以下简称"京版十五社")在杭州共同签订反盗版联盟图书版权保护合作备忘录. 据了解,在2010年,淘宝网.京版"十五社"在"世界知识产

淘宝网总裁陆兆禧:好的人才没有成本,需要专家的献言献策

淘宝网总裁陆兆禧:好的人才没有成本 5月16日消息,国内首届网商交易会于今天广州流花宾馆召开.阿里巴巴集团资深副总裁淘宝网总裁陆兆禧在接受新浪科技专访时表示好的人才没有成本,淘宝网要同时兼顾效率和公平,需要专家的献言献策. 以下为实录: 新浪科技:各位新浪网的网友大家好,今天是首届阿里巴巴网商交易会的第一天,非常有幸请到了淘宝网总裁陆兆禧,接受新浪科技的专访,陆总您好. 陆兆禧:您好. 新浪科技:淘宝现在在高薪招聘一些专家,他们的主要职责是什么? 陆兆禧:淘宝现在已经是一个网上的虚拟商业社区,要