『淘宝十年技术路』读后想法

最近借到了子柳先生的《淘宝技术这十年》,拜读一番,感慨万分。将书中内容加上自己的想法说说,毕竟未经人事看法粗浅,希望能得到前辈们的指点。

一、淘宝的核心技术(国内乃至国际的Top,这还是2011年的数据)

  • 拥有全国最大的分布式Hadoop集群(云梯,2000左右节点,24000核CPU,48000GB内存,40PB存储容量)
  • 全国分布80+CDN节点,能够自动找寻最近的节点提供服务,支持流量超过800Gbps,足以拖垮一个城市的流量
  • 不逊于百度的搜索引擎,对数十亿商品进行搜索,全球最大的电商平台
  • 顶尖的负载均衡系统,顶尖的分布式系统,顶尖的互联网思想,功能多样运行极其稳定
  • 丰富的生态产业以及先进的数据挖掘技术
  • ……很多很多

二、淘宝网的诞生

马总在2003年4月7日秘密叫来阿里巴巴的十位员工,来到杭州一个隐秘的毛坯房,要求他们在一个月左右的时间内做出一个C2C网站。

结果当然还是直接买的快,一个基于LAMP架构的网站,原名是PHPAuction,老美开发的一个拍卖网站。当然必须要做修改才能用。(作为一个曾经用老美开发的前端页面开发自己博客的同学,确实感觉用别人写的比较方便偷懒-_-,不过我确信虚竹、三丰、多隆等前辈是有足够实力开发自己网站的——还是马总催的紧)

当时财大气粗的eBay正在中国耀武扬威,加上SARS肆虐,可能大家对网购产生了新的认识。而淘宝刻意保持低调,甚至连阿里的员工都不知道这是他们自己公司的产品。

淘宝的员工积极回答着用户的问题,早起贪黑,锻炼身体的方法就是倒立。

淘宝的功能也在不断的完善着,发布、管理、搜索、详情、购买等等,服务器也变成了三台。因为数据量大了,淘宝的搜索很慢(使用LIKE匹配…),多隆前辈把阿里巴巴的搜索引擎iSearch搬了过来。

当时MySQL的默认存储引擎MyISAM会导致读写锁等待时间过长等等大量问题,所以意外还是很多的。

2003年底,淘宝注册用户23万,PV 31万/day,半年成交额3371万。

三、淘宝的更新

很显然MySQL无法撑得起如此大的访问量,数据库瓶颈出现了。幸好阿里的DBA队伍足够强大,他们使用Oracle替代了MySQL。

Oracle那时就已经有了强大的并发性访问设计——连接池,从连接池取连接的耗费比单独建立连接少很多。但是PHP当时并没有官方提供支持语言连接池特性,于是多隆前辈用Google(不会是Baidu)搜到了一个开源的SQL Relay,于是数据库软件方面的瓶颈暂时解决了。

但是硬件容量不够了,阿里买了NAS(后来因为延迟严重原因买了EMC的SAN低端存储),加上Oracle高性能RAC,硬件容量也暂时没问题了。

开源的东西固然好,但是大胆使用也是一次尝试的过程,SQL Relay会频繁的导致死锁问题,导致工程师不得不定期进行重启服务,从书中的描述可以看出,淘宝的工程师们真的非常辛苦。

淘宝网不会止步于仅仅为卖家和买家提供一个交易的网站而已,还需要建立一个完善的第三方体系,来保证卖家和买家之间的交易是安全的,于是支付宝诞生了。比较麻烦的是,当时虽有很多银行开放了网银接口,但是甚至不能保证付钱后就会扣款成功,还是需要工程师们辛苦的一板一眼去对账……

淘宝为了便于用户的交流,开发了一个IM软件——旺旺,不仅给买卖双方使用,阿里内部也使用旺旺交流。

四、第一个里程碑

因为SQL Relay的问题实在过于严重,2004年于是淘宝终于做出了跨时代的决策——使用Java重写网站(鼓掌~~~)。

没错,淘宝请了Sun的高级工程师来帮忙做Java架构。那么他们是如何做到修改编程语言而不改变网站使用呢——模块化替换,今天写好了A模块,另开一个新域名,将连接指向该模块,同时别的模块不变,等到全部模块完成的时候,原域名放弃。

使用的框架:淘宝的架构师在Jakarta Turbine的基础上开发了自己的MVC框架——WebX。而Sun公司坚持使用EJB作为控制层(估计当时只有他们才能玩贯EJB),加上使用iBatis作为持久层,一个可扩展且高效的Java EE应用诞生了。BYW,支付宝也是Sun的工程师用同样的架构设计的。

送走Sun的大牛们之后,阿里的数据存储又遇到了瓶颈,于是忍痛买了一台IBM小型机(我猜至少是百万级别的…….),也就有了IOE(IBM + Oracle + EMC)这样的传说。

2004年底,淘宝注册用户400万,PV 4000万/day,全网成交额10个亿。

五、再接再厉

Oracle也有处理上限,当数量的级别是“亿”的时候,就不是一个Oracle服务器支撑的起的了。DBA们把数据分到了两个数据库中,通过ID的第一位决定查询哪一个数据。比如,‘0’至‘7’放在A数据库,‘8’至‘f’放在B数据库,通用信息放在C数据库。但是如何既查询’3′开头又查询’e‘开头的数据呢?一个数据库路由框架DBRoute由架构师行癫编写,统一处理合并问题而对上层透明。

Spring诞生了,早闻Spring框架在Web应用不可或缺,而在淘宝网,Spring也达到了Rod Johnson设计它的目的——替代EJB。

2005年底,淘宝注册用户1390万,PV 8931万/day,商品数目1663万个。

说实话我真的好佩服,这么大的访问量都能如此坚挺,但是,考虑到未来的发展,这样的设施架构只是勉强可以应付现在的要求。于是,CDN技术派上用场了,一开始使用商用的ChinaCache,后来使用章文嵩博士搭建低耗能CDN网络,淘宝网的性能越来越好了。

2006年底,淘宝注册用户3000万,PV 15000万/day,商品数目5000万,全网成交额169亿元。

六、创造技术

为了考虑交易的公平性,淘宝增加了交易快照功能,将当前交易网页以图片的形式保存下来,淘宝的交易量如此之大,带来了一个问题——碎片图片过多,2010年,淘宝网的后端上保存着286亿张图片。

淘宝在2007年之前,使用NetApp的商用存储系统,但是仍然不够应付迅速增长的趋势。同年Google公布了GFS的设计思想,参照它的思想,淘宝也开发了自己的文件系统——TFS。至于这个文件系统的具体原理书上给的并不详细(应该是我看不懂-_-),不过可以大概可以了解是专门为大量的图片设计的,从每个用户1张图片到TFS上线后5张再到1GB的图片空间,这些都得益于TFS集群的文件存储系统以及大量的图片服务器。淘宝使用实时生成缩率图,全局负载均衡以及一级和二级缓存来保证图片的访问优化与高效访问。

淘宝的服务器软件使用Tengine,一个被优化过的nginx模块。

淘宝也做过失败的产品,不是因为技术原因而是市场原因。首先是“团购”,失败在于人心叵测。再次是“我的淘宝”,使用了风靡全球的AJAX的技术,但是做的过于AJAX了,可能是太不容易上手了(马总亲口说的),还有“招财进宝”(被竞争对手认为是破坏了“免费”的承诺而大肆宣扬)。

记录商品的访问量,使用传统的数据库I/O实在过于影响效率,所以淘宝使用了缓冲的技术,先是使用ESI(Edge Side Includes),解决了片段缓冲问题。因为有些大店铺访问量过大,频繁的I/O实在得不偿失,于是多隆前辈写出了TBstore,可以缓存大量的数据,核心思想是使用Hash算法快速寻找。其核心是基于Berkeley DB,一种类内存数据库,导致的问题是内存数据量大了还是会刷到磁盘中,因此性能并不是那么的好。

后来,淘宝分离出了UIC(User Information Center),供所有模块调用。多隆前辈再次为其编写出了TDBM,完全是基于内存的数据缓存(参考了memcached)。再然后,淘宝将TBstore和TDBM合并,写出了Tair,一个基于Key-Value的分布式缓存数据系统。然后升级了自己的iSearch系统。

2007年底,淘宝注册用户5000万,PV 25000万/day,商品数目1个亿,全网成交额433亿元。

七、更多的技术

一个电子商务平台不可缺少的细节——商品类目的处理。因为商品的类目实在过于庞大,因此如何根据类目划分商品成为了难题。机智的一灯前辈说,这些属性可以当做标签,直接“贴”在商品上(应该是这样的吧)。

2008年,淘宝将支付宝单独分离出来。其中交易的底层业务叫交易中心TC(Trade Center),涉及订单之类的原子操作。交易的上层业务叫做交易管理TM(Trade Manager),不涉及对物流的操作。

于是,应运而生的,第二个堪称里程碑的项目——系统拆分 诞生了。这个正是我们在阿里圆桌会议上HR所说一位元老级员工做的——“给一架高速飞行的飞机换发动机”这么惊险的重构任务。这些组件分割难度非常之大,以至于那张复杂的逻辑图我实在看不懂……总之,淘宝中间件诞生了。

HSF(高性能服务框架):核心,外号好舒服。请参见作者的博文http://www.blogjava.net/BlueDavy/archive/2008/01/24/177533.html

Notify(消息中间件):淘宝自主开发的消息队列产品。支撑了10亿+的消息通知。

TDDL(分布式数据访问层):优化了DBRoute,在JDBC和DB之间隔了一层,负责数据库的优化工作。

Tbsession:因为Session保存在服务器中,但是用户可能会被动的频繁的切换服务器,淘宝的设计思路是将Session信息保存在Cookie中,最后使用Tair来保存。

阿里的开放平台也相当有历史,有兴趣的可以参观参观http://open.taobao.com/index.htm

八、总结

当你处于业界中流时,你可以向老大学习,等当你成为业界老大之后,你就需要不断超越自己,用自己的力量来改变整个行业,乃至整个世界。无论是华为,还是阿里,当成为业内的Top时,责任反而更加重大。

一直觉得自己想着随大流,但是却又心有不甘。如今有机会能进入全中国最好的互联网网站,一直为自己这些年的付出感到荣幸,同时不断勉励自己,你需要变得更强才能融入这个集体。

任重而道远,纵望阿里淘宝这些年的发展之路,那些默默无闻却勇于探索钻研的人是最可爱的,遇到问题永远不服输,总会有办法去解决的。正如阿里圆桌会议HR所说的“在座的各位都是爱折腾的人”,我承认自己受之有愧,自己的身体一直不能保证毫无顾忌的拼斗,自己虽然每天坚持都去跑步,底子还是不行,想要成为一名武林中人,更漫长的路需要我坚持的走下去,意志力,我可以有。

坚持学习,钻研学习,实践学习。希望自己能坚持这三点信条。

相当佩服马总的思想理念和为人处事,也相当佩服那么多实力不凡而又忠心耿耿的部下,他们对得起他们的身价。

我相信淘宝的光辉路程的还有很长,我的学问之路,也必将一直走下去。


本文转载自
Gao Zhenxi 的博客 

时间: 2024-10-09 14:59:21

『淘宝十年技术路』读后想法的相关文章

淘宝十年技术路

最近有幸,在学校的图书馆借到了子柳先生的<淘宝技术这十年>,拜读一番,感慨万分.将书中内容加上自己的想法与诸君分享,毕竟未经人事看法粗浅,希望能得到园子里前辈们的指点~ 一.淘宝的核心技术(国内乃至国际的Top,这还是2011年的数据) 拥有全国最大的分布式Hadoop集群(云梯,2000左右节点,24000核CPU,48000GB内存,40PB存储容量) 全国分布80+CDN节点,能够自动找寻最近的节点提供服务,支持流量超过800Gbps,足以拖垮一个城市的流量 不逊于百度的搜索引擎,对数十

淘宝数据魔方技术架构解析(转)

淘宝网拥有国内最具商业价值的海量数据.截至当前(2011年8月),每天有超过30亿的店铺.商品浏览记录,10亿在线商品数,上千万的成交.收藏和评价数据.如何从这些数据中挖掘出真正的商业价值,进而帮助淘宝.商家进行企业的数据化运营,帮助消费者进行理性的购物决策,是淘宝数据平台与产品部的使命. 为此,我们进行了一系列数据产品的研发,比如为大家所熟知的量子统计.数据魔方和淘宝指数等.尽管从业务层面来讲,数据产品的研发难度并不高:但在"海量"的限定下,数据产品的计算.存储和检索难度陡然上升.本

王海亚:淘宝交易系统演进之路

淘宝的交易系统承载了购物车.下单.订单管理等多项淘宝的重要业务,随着淘宝业务量的不断上升,交易系统也随之几经改造.InfoQ此次专访了阿里巴巴架构师王海亚,另外作为ArchSummit深圳2014大会<电商,各走各的路>专题的讲师,王海亚将会分享淘宝交易平台的架构演变及并行化实践.以下为专访全文: InfoQ:淘宝的交易系统,主要承载了哪些业务? 王海亚:从用户视角来看,交易承担了购物车.下单.订单管理这些功能:从功能视角来看,交易系统包括做业务规则和服务整合的交易平台以及支撑交易功能的底层服

《淘宝数据魔方技术架构解析》----阅读

我们都知道淘宝,也都在使用淘宝.但让我们自己制作一个淘宝app很难,让我们想出关于淘宝的架构更难.最近阅读了<淘宝数据魔方技术架构解析>(https://mp.weixin.qq.com/s?__biz=MzAxNjAzMTQyMA==&mid=2648476063&idx=1&sn=882fb8584b82107d5af191af5b805d0e&chksm=83d3224cb4a4ab5a72e04dbaa6c6621cc866ab913bb7abb1aa8

《淘宝数据魔方技术架构解析》阅读心得

淘宝网拥有国内最具商业价值的海量数据.截至当前,每天有超过30亿的店铺.商品浏览记录,10亿在线商品数,上千万的成交.收藏和评价数据.如何从这些数据中挖掘出真正的商业价值,进而帮助淘宝.商家进行企业的数据化运营,帮助消费者进行理性的购物决策,是淘宝数据平台与产品部的使命. 数据产品的一个最大特点是数据的非实时写入,正因为如此,我们可以认为,在一定的时间段内,整个系统的数据是只读的.这为我们设计缓存奠定了非常重要的基础. 关系型数据库(RDBMS)自20世纪70年代提出以来,在工业生产中得到了广泛

淘宝数据魔方技术架构解析

淘宝网拥有国内最具商业价值的海量数据,而帮助消费者进行理性的购物决策,是淘宝数据平台与产品部的使命.为此,我们进行了一系列数据产品的研发,比如为大家所熟知的量子统计.数据魔方和淘宝指数等.本文将以数据魔方为例,向大家介绍淘宝在海量数据产品技术架构方面的探索. 按照数据的流向来划分,我们把淘宝数据产品的技术架构分为五层,分别是数据源.计算层.存储层.查询层和产品层.位于架构顶端的是我们的数据来源层,这里有淘宝主站的用户.店铺.商品和交易等数据库,还有用户的浏览.搜索等行为日志等.这一系列的数据是数

十年京东,十年技术发展—畅读《京东技术解密》

<京东技术解密>试读章节共71页,我花了两天时间仔细读完,读了过后感到意犹未尽,非常想一口气把整本读完,然而只能将试读章节反复读了好几遍,收获颇多,遂有此文,借此总结京东十年来的技术变迁和迅速发展. 之所以对这本书感兴趣基于两个原因:一是自己最近刚好在读一本书<不战斗不成功:刘强东和京东商城的"野蛮"奋斗史>,见识到了刘强东本人丰富的创业经历,与当当网拼图书.与淘宝网拼百货.与苏宁易购拼家电,京东真是什么都卖,这份处处竞争的心也值得佩服.二是自己一直对京东印象不

转:阿里巴巴集团技术丛书——淘宝一线团队实践

原文来自于:http://download.csdn.net/album/detail/1013/2 阿里巴巴集团技术丛书——淘宝一线团队实践0 浏览量:7840下载次数:94创建者:broadview2006创建时间:2014-09-25 淘宝技术这十年,淘宝技术十年事.来自阿里一线专家作译图书精选. 阿里 淘宝 分享到: 共6个 直接下载 Storm 实战:构建大数据实时计算试读样章0 上传者:broadview2006      上传时间:2014-08-14 阿里巴巴集团技术丛书,大数据

20、淘宝技术这十年

淘宝技术这十年 淘宝技术这十年 作者介绍 子柳:本名赵超,2004年加入淘宝网,取花名子柳.历任开发工程师.项目经理.产品经理.测试经 理,2009年随着淘宝系统的大规模重构和人才的迅速扩张,创办了“淘宝技术大学”,培养内外部工 程师众多,人称“校长”.2011年将培训中的内容写成文章发表,遂一发不可收拾,总结了淘宝十年 的技术之路,乃成本书. 子柳 子柳,中国春秋时期鲁国政治人物,叔牙玄孙,武仲休曾孙,叔仲惠伯之孙. 叔仲皮生子柳.叔仲皮死,子柳之妻鲁人,丧服斩衰,头上用缪绖.叔仲衍请改成穗衰