淘宝天猫 火...

『淘宝十年技术路』读书笔记

4952 29
2016-2-25 17:21:55 发表在 卖家交流| 查看全部 阅读模式

一、淘宝的核心技术(国内乃至国际的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所说的“在座的各位都是爱折腾的人”,我承认自己受之有愧,自己的身体一直不能保证毫无顾忌的拼斗,自己虽然每天坚持都去跑步,底子还是不行,想要成为一名武林中人,更漫长的路需要我坚持的走下去,意志力,我可以有。

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

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


全部评论29

推荐 2016-2-28 22:52:30 | 查看全部
感谢分享,学习了!!!                                       
推荐 2016-2-25 18:05:06 | 查看全部
maizi 发表于 2016-2-25 17:23
只在这有发帖权限

可以在任何版块发帖的,但回帖就有限制
推荐 2016-2-28 11:36:18 | 查看全部
感谢楼主认真讲解  学习了  对新手有很大帮助
maizi楼主
沙发 2016-2-25 17:23:47 | 查看全部
只在这有发帖权限
4楼 2016-2-25 21:40:49 | 查看全部
点赞 很好 很漂亮喜欢
5楼 2016-2-25 21:45:47 | 查看全部
写的太好了,学到了新东西
6楼 2016-2-25 23:38:55 | 查看全部
写的真是太棒乐
7楼 2016-2-26 13:41:50 | 查看全部
哇。。。涨知识
8楼 2016-2-26 16:22:47 | 查看全部
嗯嗯,很不错,感谢分享
9楼 2016-2-26 18:05:59 | 查看全部
这是所有淘宝人的精神,没有这个精神,不好做淘宝
10楼 2016-2-26 22:11:42 来自手机 | 查看全部
太好了;谢谢楼主分享
11楼 2016-2-26 22:41:17 | 查看全部
真的好难升级啊
12楼 2016-2-27 13:35:35 | 查看全部
学习了   非常不错
13楼 2016-2-27 14:52:25 | 查看全部
:Q:Q:Q
14楼 2016-2-27 19:01:21 | 查看全部
谢谢楼主的分享学习了
15楼 2016-2-28 11:09:25 | 查看全部
恩,好好普及了一下。
12下一页

回复

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

猜你喜欢
  • 淘宝这种直通车打法真的好强,就一天给我增加到88单!
    **** 本内容被作者隐藏 **** ...
    蹲坑哲学家|2026-06-17| 阅读 386|评论 23
  • 淘宝主图升级1440尺寸及6月30日整改期限
    淘宝主图近期有重大更新,6月30日前未修改主图,流量可能直接降权。 所有淘宝卖家需尽快自查,避免因主图问题导致店铺整体流量下滑。 最新规则要求所有主图及SKU图规格统一升级为1440×1440高清大图。6月30日为最后截止日期,逾期整改将触发限制,包括展现降低、权重 ...
    這次涐先走丶|2026-06-29| 阅读 30|评论 1
  • 拼多多6月份改版后新玩法
    六月份拼多多迎来了一次历史级的大改版。不管你的新链接还是老链接,在修改完成之后都需要等待24小时才能去报大促,查看你是否比价。如果因此再去动链接,还要等待24小时才能去报活动。针对这次改版,我研究了一套最新的玩法,就是我们的售价乘以3去上架,然后再去用限 ...
    真香定律|2026-06-16| 阅读 112|评论 1
  • 淘宝两个可以提高店铺权重的实用设置
    六月份淘宝改版以后,如果说你能把我说这两事做好的话,你的店铺将不用再发愁没有流量,没有转化了。 第一个:咱们店铺的这个层级与权益,他每周三个秒都会更新,你直接找到咱们这个成长攻略,把里面这个任务全部给他做完,你的店铺直接层级就可以冲上去了,平台也会 ...
    love88|2026-06-29| 阅读 0|评论 0
  • 【2026年巨献】ai万相台无界-付费推广矩阵,理论与实操相结合(一)
    大家好,我是赤壁哥,想想还是先给大家分享一下纯推广手法和思路,因为接近年底了,很多人还是对于起款包括起店铺还没有一套完整的思路,时间紧急,那赤壁哥今天就把这个实操流程分享给大家。 这套矩阵是适合推广那些短转化周期的品,因为我们这套矩阵就是以拿成交为结 ...
    火烧赤壁|2026-06-28| 阅读 0|评论 0
  • 淘宝电商不SD做基础销量的方法
    不用SD怎么去做基础销量?我相信这是很多卖家在刚刚上完链接之后最头疼的一个问题。今天给大家分享一个不用SD就能做出基础销量的办法。 到后台找到“营销”,底下有一个“营销托管”,点击进来,就到了这个页面。然后把这个商品添加进来。添加之后,会有单品设置和SKU ...
    摸鱼→成功|2026-06-10| 阅读 74|评论 1
  • 电商新手必懂:全标题半标题精准长尾词定义与用法
    突然发现,有些淘宝商家连基本的关键词都不会玩。全标题、半标题、精准长尾词、精准词和大词,到底是什么词? 很多商家问新品刚上架以后怎么补单,我应该选什么样的词去做?补单关键词主要是全标题、半标题、精准长尾词、精准词和大词。那这些词到底是什么样的词?虽然 ...
    zhaoqiaoqian|2026-06-17| 阅读 89|评论 3
  • 淘宝新品28天起爆流程与各阶段操作重点
    先搞懂:平台给你的28天,到底在考什么? 很多人以为新品上架,平台会直接给大流量——错!这28天是平台的「试探期」,就像HR招人的试用期,通过阶段性考核,才会给你更多资源。 核心逻辑就一个:你能不能把流量用明白。能就流量翻倍;不能,直接把你从流量池里踢出去 ...
    hot|2026-06-18| 阅读 154|评论 6
  • 2026年最新单品爆款周期性运营推广流程
    我们现在做店都是全店爆款打造思路或者全店矩阵打品思路,如果你还没有打法思路,那你今天可以学习一下,今天赤壁哥的内容是关于单品爆款周期性运营推广流程,也就是说,从刚开始你做完产品内功,上架链接,选择推广的计划,包括渠道,首先就是产品的基础成交期——中后 ...
    火烧赤壁|2026-06-03| 阅读 202|评论 0
  • 【运营的自我修养】2026年淘系整套运营系列(连载三)
    大家好,我是赤总,2026年了,没有以前那种激情的电商氛围了,都只忙自己的店铺,物是人非。 今天我给大家分享的一整套系列玩法,适用于所有类目,尤其是标品类目,如果你们有做标品类目的,一定要认真的看我这一整套运营流程,从一开始通过生意参谋分析一些行业的一些 ...
    火烧赤壁|2026-06-14| 阅读 202|评论 0
热帖推荐换一批
关灯 在本版发帖 返回顶部
快速回复 返回顶部 返回列表