zoukankan      html  css  js  c++  java
  • 内幕 淘宝技术这十年 打败淘宝的不是技术和钱

    http://wenku.baidu.com/view/aaa11d9ebceb19e8b8f6ba8a.html
    淘宝技术这十年 打败淘宝的不是技术和钱
     

     

    内幕淘宝技术这十年打败淘宝的不是技术和钱在此先特;第一时间拿到了这本书,一口气读完;很多人看到的都是淘宝表面的东西,比方讲销售额、一;最早搞淘宝的那帮人是从阿里巴巴出来的,当时老马规;花了2000美刀买来一个网站系统,加以简单的修改;随着淘宝用户需求和流量的不断增长,服务器从最初的;当时淘宝访问量增长速度是飞速甚至是今天看起来有些;SQLRelay问题的存在

     

    内幕 淘宝技术这十年 打败淘宝的不是技术和钱 在此先特别声明,本回答以下涉及淘宝技术论证的部分,所采用的数据、内幕秘闻等材料100%来自于《淘宝技术这十年》@子柳 著。

    第一时间拿到了这本书,一口气读完。想起了不久前马云在卸任演讲中说到的那句话:很多人讨厌变化,但是正因为我们把握住了所有的变化,我们才看到了未来。技术也如此,驱使我们从模仿,到改造再到创新的就是变化,把握住了变化就把握住了未来。人生何常不是如此呢。 该书是近年来少有的互联网技术总结之作,黑苹果博客开始因为书薄价贵而感觉上当受骗(总共239页,要45大洋),不过读了几页之后便欲罢不能,一口气读完、可谓酣畅淋漓。本回答技术部分所采纳内容不及原著百分之一,语言亦远不如原著精彩,所以建议对淘宝技术内幕感兴趣的还是看看这本原著,相信收获不会太小。

    很多人看到的都是淘宝表面的东西,比方讲销售额、一万亿神马的。但你要是知道淘宝是如何发展成今天的这个样子后,也就明白其实超越淘宝最难的不是钱,到了淘宝的那个水准,能用钱解决的问题都不是问题。

    最早搞淘宝的那帮人是从阿里巴巴出来的,当时老马规定任务,让他们在1个月内把淘宝搞出来(那时还没有淘宝这个名字,淘宝、支付宝其实都是后来淘宝的同一个员工起的,还是个MM,和马云没关系)。现在考考你吧,如果让你在一个月内建一个购物网站,你怎么做?当时淘宝工程师的方案是:从美国人那里买了一个LAMP(Linux+Apache+MySQL+PHP)架构的网站,当时花了多少银子呢?2000美刀左右吧(当然,源代码也买来咯)。。这时你要注意,这是淘宝的初创期,所有遇到的问题和困难都能用钱解决,但随着日后淘宝规模的急速扩大,之后淘宝人所遇到的问题,几乎是全世界范围内前无古人的难题,是花钱也买不到的了。这点之后再表。

    花了2000美刀买来一个网站系统,加以简单的修改,比如改一下数据类型、增加后台管理功能、页面模板美化等等,这其中稍有技术含量的也就是对数据库进行了一个修改,把一个数据库拆成了一个主库、两个从库,并且读写分离(顺便说一句,当时该项目的代号叫BMW,因为项目二当家喜欢宝马,听说后来这位二当家的座驾就是一辆宝马X5,算是如愿所偿了)。如此一番改装后,网站便立即投入了使用,这是2003年5月10日的事儿,到了这年的年底,,淘宝已经有32W注册用户,每日31万个PV,交易额在3371万元。

    随着淘宝用户需求和流量的不断增长,服务器从最初的一台变成了三台(没错,淘宝一开始只有一台服务器~!),一台发送e-mail、一台负责运行数据库、一台负责运行WebApp,并且淘宝的首席架构师还把阿里巴巴中文站的搜索引擎iSearch搬到了淘宝。

    当时淘宝访问量增长速度是飞速甚至是今天看起来有些野蛮的,所以很快,数据库的问题就出来了,当年的MySQL还不是今天各位见到的MySQL,跟Oracle这样的大牌相比,那时的MySQL存在着先天的不足(数据容量和安全性)。既然MySQL存在问题,那二话不说就得解决,最后的方案就是换成Oracle。到这里不得不插一句,当年阿里巴巴的DBA团队是相当牛的,Oracle的ACE头衔拥有者,当时全球只有十几个而已,可在阿里就有4名,所以那你想想看,如果超越阿里巴巴或是淘宝,不说钱,你有没有那么顶尖的工程师,顶尖人才可不仅仅是钱能请来的啊。 换成Oracle之后,问题仍旧很多。由于PHP语言对数据库的访问都是直接的,每一个请求都要一个连接。如果是长连接而且连接数增多,就会把数据库拖垮,反之如果是短连接,频繁地连接断开,性能会大幅降低。后来淘宝的情报部门打探到eBay在使用一个连接池的工具,是BEA卖个他们的,可是对当时的淘宝来说,BEA的东西太贵买不起,所以搞了一个开源的连接池代理服务SQL Relay,淘宝的架构师进行一番改进后,便开始使用。但是使用了这项技术后,新的问题又出现了:SQL Relay经常会死锁,虽然架构师尽力做了许多修改,但内部处理的逻辑不对,问

    题仍是很多,死锁会频繁出现。当时解决的方法,只有重启,对于淘宝工程师来说最痛苦的,可能就是在晚上也会出现死锁,所以那段时间淘宝的工程师24小时手机开机是常态,一收到出现死锁的短信,就要马上接上机房的网络,进行重启(当时干这事最多的人,现在已经是淘宝网的总裁了,所以讲牛人常常也要有段苦逼的岁月)。到了大概在2003年的10月份左右,淘宝推出了一个新的功能,叫做“安全交易”,也就是支付宝的验证型;到2004年的3月份,淘宝旺旺诞生(淘宝旺旺是由一个工程师做的,据说淘宝旺旺的在线数创新高后,淘宝的这帮人请这个工程师吃了一顿鸭脖子,因为这个工程师最爱吃鸭脖子)。从中我们也不难看到,淘宝早期的创新精神是非常非常之高的,而且想得快,做的也快,热情和技术都没的说。不过也只有这样,才有机会脱颖而出啊。

    SQL Relay问题的存在,使得追求完美的淘宝的工程师觉得用不断重启来保证系统的稳定性是不能忍受的,所以在2004年上半年开始,整个淘宝网站就开始了一个脱胎换骨的手术。

    在2004年的上半年,淘宝干了一件什么事呢?淘宝更新了开发语言,从PHP化成了java(不得不说真是精益求精啊,要全部重来,敢干啊)。当时淘宝网站已经颇具规模,要一边更换语言,一边还要维持网站的正常运营,比做个新的网站要难多了。这就好比是做一场非常精密的外科手术,要技术非常高超才行。当时淘宝把Sun公司的人请来做这件事,在这个阶段,针对网站存在的问题,淘宝引入了搜索引擎、打造了自己的MVC框架WebX。在2004年底,淘宝上线1年之后,淘宝已经有4百万多种商品了,日均4KW+个PV,注册会员400w+,全网成交额10亿+。

    紧接着,围绕性能、容量和成本的进化,淘宝采用分库页表技术对Oracle进行了扩展,当时搞了三个数据库,以此来突破一台Oracle的处理上限。三个库,一个用来存放用户信息和对应的商品信息,一个用来存放用户信息和对应的卖家信息,第三个用来存放商品类目等通用信息(这样做还有容灾的好处,即万一一个数据库挂了,还有一半的商品可以买卖)。但是这样做也有问题,一个买家购买的商品在两个数据库里,那么在查看已购买商品时,应用程序要到两个数据库里去找,这还好说,可如果要按照时间排序怎么办?分页如何处理?关键字查询如何处理?专业一点的说法就是数据的Join没法做了。这时轮到大师出手了,淘宝里有一个人,动手写了一个数据库路由的框架,叫DBRoute,把数据库的合并、排序、分页等操作大一统了。并且在当时用Spring替换掉了EJB,给整个系统精简了很多代码。到了2005年,淘宝的商品数达到1663w个,PV有8931W个注册会员有1390w个。数据量大,存储压力大,速度就慢,所以淘宝又搞出了缓存和CDN(内容分发网络)。到了2006年,淘宝网已经有了1.5亿个日均PV,商品数达5kw+,注册用户3kw+,全网交易量169亿(6年之后,2012年双十一淘宝网一天的交易量就到了191亿)。 为什么要一直在淘宝技术改进过程中强调规模性,可以说是规模会决定你所需要的技术。当你成为业内最强的时候,你的问题就成了别人没碰到过的问题,你需要的技术也就是世上没有的技术。这意味着你必须要自己解决问题,自己创造技术,没法买、也没处买。于是,在2006年,淘宝开始走上了自主开发技术的道路,也正是这一年,淘宝开始了创造技术。

    随着淘宝的发展和成熟,他们当时遇到的问题不仅没有减少,反而是增加的。举个例子,当卖家卖商品时,有时会进行一些打折促销,也就是说同一件商品价格会发生改变。那么已经成交的商品信息该如何处理?最好的方式是商品快照,每完成一笔交易,就用快照的方式保存下来。这样一来,用户的体验是爽了,但系统的存储成本大幅提升(淘宝2010年后端系统上的图片量即达到286亿)。早些时候,淘宝采用NetApp公司的文件存储系统,但随着图片数据量以每年3倍速率的增长,到2006年时,即便NetApp公司最高端最顶级的产品也无法满足淘宝的需要,所以从2006年开始,淘宝决定开发一套针对海量小文件存储的文件系统,来解决自身图片的存储难题(顶级技术,和他们遇到相似难题的,另外一是google搞了GFS,当然谷歌搞的早。腾讯的和这个同名,也叫TFS)。淘宝文件存储系统的构建者是章文嵩博士,2007年淘宝开发出了TFS(TaoBao File System)[以谷歌的GFS为基础,加上了针对小文件存储的创新]。同年7月,TFS正式上线。集群规模达到了200台PC Server(146GB*6SAS 15KB Raid5),文件数上亿级别;系统部署存储量140TB,实际使用量50TB;单台支持随机IOPS 200+,流量为3MB/S。2007年的另外一项重要

    技术创造,就是淘宝推出了自创的Key—Value缓存系统。自从2006年踏上自主自助创新之路至今,淘宝有相继搞出了服务化、中间件,session框架,开放平台,分布式电子商务,操作系统等多项尝试,并取得了成功。

    上面谈了很多技术方面的问题,没谈钱,是因为有些技术根本就是钱所买不到的,在淘宝之前根本就没有现成的技术供选择。

    淘宝不是电商

    淘宝和京东、当当??一样吗?你想打败淘宝先要了解它,淘宝是个平台,是个菜市场,它自己不是卖菜的。真正的电商是上面的小卖家。淘宝是平台,这用马云的话说就是一个生态系统,有自己的支付体系,甚至还有快递物流,所以你要打败淘宝,面对的是整个一个生态系统,单纯拼某一个东西也肯定拼不过。只有你比他进化的更好,更完美,你的体系更公平、更快捷,你才有可能最终打败它。

    淘宝的客户,第一是卖家,如果有第二的话,第二是买家

    在阿里最初创立的时候,马云心里有一个信念,就是只有阿里上面的卖家赚钱了,阿里才能活下去。

    今天,淘宝&阿里还是一样。马云做大阿里&淘宝,想没想过它的商业模式强在哪里?你以为把阿里上面那些顾客抢走了,就是抢走了淘宝的用户、就能打败淘宝?我不这么看。淘宝主要是服务卖家的,然后由这些卖家再服务买家,卖家才是淘宝缔造者眼中真正的上帝,只有服务好卖家才能有买家,淘宝才能活。用免费的方式吸引淘宝的买家,且不说具体细节能不能成立,就算成立,也不可能坚持终身,抢不走卖家且又不能坚持一辈子,早晚买家会回流到淘宝。

    淘宝的商业模式厉害就厉害在这点上,它是一条龙,产业链几乎是被它给占全了,按马云的话说,将来淘宝&阿里还要从销售流通走向生产制造,如果再加上金融领域的触角伸长,真要全按马云说的实现了,那淘宝就是个帝国。光知道抢用户,作用为零,这么做也顶多是给淘宝搔搔痒,但打不败它。

    为什么是淘宝?为什么是马云?

    因为在创造淘宝的那个时代,中国没有很好的商业环境,还是个野蛮生长的年代。淘宝成功之处是创造出了一个比较好的买卖环境、一个比较好的商业生态圈(为什么当年ebay没做成的事情淘宝做成了?就是因为中国的商业环境比起美国来实在太糟糕,所以阿里&淘宝出现后,中国有了一个比较好的做生意的平台,结果反而成了我们商业市场的一个主流之一;而ebay在美国始终是个美国商业的附属品。

    到了今天,淘宝有了它自己的信誉体系、支付体系(现在还有点向金融体系发展的趋势)、物流体系(淘宝在快递物流上也做了非常大的投资)、将来还要进军生产制造。

    想起当年马云辛辛苦苦搞出了淘宝,结果他发现光有淘宝这个平台还不够,银行没有针对小商业主的服务业务,对这些小业主、小卖家来说,资金周转是个大问题,而对买家来说当时的付钱方式也存在很大风险。没有支付&信誉体系,所以马云才又搞了支付宝;当搞完了支付宝之后,马云又发现,还不够,物流不行,于是马云又在物流上加大投资,完善物流(去年双十一,因为淘宝一家的促销,导致当天的物流快递包裹数是7千8百万,加上每天还有2千万的包裹加进来,所以说淘宝网站的技术经受住了双十一的考验,而物流基本上也可以说算是经受住了严峻考验);等这些都弄好了,进入正轨了,淘宝也就变得立体了、深刻了、丰满了。当你思索如何打败淘宝的时候,一定要知道,你所面对的,不单单是一个电商那么简单。你和它之间的,最终不会是场战斗,而是一场战争,最终的结果一定是场变革。

    结论

    千言万语一句话:别只想着靠钱打败淘宝,钱不是万能的。

    马云说他自己命苦,一开始什么都没有,什么都要自己去做。世界上一定会有比淘宝更好的模式,可惜,到目前为止还没出现。不过你也不必气馁,小船你害怕翻船,大船你怕什么?前面的礁石,你用望远镜看到的时候,你是撞上去的,所以大企业要不停的变化,而且要比小企业变化的更快,否则就是死路一条,可惜基本上企业做大了之后,就懒得变了、懒得创新了,对市场也变得迟钝了,也就离死不远了。我想这才或许会是最终困扰淘宝&阿里的地方。按照辩证唯物历史观来说,历史总会不断前进,淘宝最终是一定会死的,只是早晚问题,任何伟大的公司都无法逃过这个宿命。所以,还是闷壶酒、吸支烟,坐等有更牛的公司早日出现吧。

    评:

    此文是作者看为《淘宝技术这十年》书籍的观后感基础上+自己的看法或见解写出的一篇文章。
    我最大的感受是,马云考虑事情太超前了。
    刚看今年马云卸任演讲中的一段话我还理解不清,看完作者文章的结尾后,惊呆了。
    详细,一般人能考虑事情按考虑全面作标准的话,几十年、今世就很了不起了。但马云不仅考虑了今世,还考虑了未来!
  • 相关阅读:
    innerHTML使用方法
    HDU 1426 Sudoku Killer
    Junit使用教程(一)
    HLS协议实现
    GPIO
    TraceView总结
    在kettle中实现数据验证和检查
    用户向导左右滑动页面实现之ImageSwitcher
    DWZ使用笔记
    oracle进程
  • 原文地址:https://www.cnblogs.com/svennee/p/4099564.html
Copyright © 2011-2022 走看看