大型互联网架构演变历程(读《淘宝技术这10年》有感)

1.  淘宝技术这10年

1.1.  淘宝现状

高并发已经成为当前互联网企业面临的巨大挑战!例如2015年“双十一”全球狂欢节正式落下帷幕,天猫最终交易额也达到了创纪录的912.17亿元!参与交易国家和地区达到232个,双十一支付宝最高峰每秒处理的交易笔数是8.59万笔,在线人数峰值达到4500万。

 

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

l  拥有全国最大的分布式Hadoop集群(云梯,2000左右节点,24000核CPU,48000GB内存,40PB存储容量)

l  全国分布80+CDN节点,能够自动找寻最近的节点提供服务,支持流量超过800Gbps

l  不逊于百度的搜索引擎,对数十亿商品进行搜索,全球最大的电商平台

l  顶尖的负载均衡系统,顶尖的分布式系统,顶尖的互联网思想,功能多样运行极其稳定

l  丰富的生态产业以及先进的数据挖掘技术

l  ……很多很多


1.2.  淘宝技术演变,摘自《淘宝技术这十年》

l  马总在2003年4月7日秘密叫来阿里巴巴的十位员工,来到杭州一个隐秘的毛坯房,要求他们在一个月左右的时间内做出一个C2C网站。结果当然还是直接买的快,一个基于LAMP架构的网站,原名是PHPAuction,老美开发的一个拍卖网站。当然必须要做修改才能用。

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

l  很显然MySQL无法撑得起如此大的访问量,数据库瓶颈出现了。幸好阿里的DBA队伍足够强大,他们使用Oracle替代了MySQL。Oracle那时就已经有了强大的并发性访问设计——连接池,从连接池取连接的耗费比单独建立连接少很多。但是PHP当时并没有官方提供支持语言连接池特性,于是多隆前辈用Google(不会是Baidu)搜到了一个开源的SQL Relay,于是数据库软件方面的瓶颈暂时解决了。

l  随之而来的是面临硬件性能瓶颈,阿里买了EMC的SAN存储设备,加上Oracle高性能RAC,硬件容量也暂时没问题了。

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

l  淘宝请了Sun的高级工程师来帮忙做Java架构。那么他们是如何做到修改编程语言而不改变网站使用呢——模块化替换,今天写好了A模块,另开一个新域名,将连接指向该模块,同时别的模块不变,等到全部模块完成的时候,原域名放弃。Sun公司坚持使用EJB作为控制层,加上使用iBatis作为持久层,一个可扩展且高效的Java EE应用诞生了。

l  送走Sun的大牛们之后,阿里的数据存储又遇到了瓶颈,于是忍痛买了一台IBM小型机,也就有了IOE(IBM + Oracle + EMC)这样的传说

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

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

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

l  考虑到未来的发展,这样的设施架构只是勉强可以应付现在的要求。于是,CDN技术派上用场了,一开始使用商用的ChinaCache,后来使用章文嵩博士搭建低耗能CDN网络,淘宝网的性能越来越好了。

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

l  淘宝在2007年之前,使用NetApp的商用存储系统,但是仍然不够应付迅速增长的趋势。同年Google公布了GFS的设计思想,参照它的思想,淘宝也开发了自己的文件系统——TFS每个用户在TFS上拥有1GB的图片存储空间,这些都得益于TFS集群的文件存储系统以及大量的图片服务器。淘宝使用实时生成缩率图,全局负载均衡以及一级和二级缓存来保证图片的访问优化与高效访问。

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

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

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

l  ...

l  Dubbo是阿里巴巴内部的SOA服务化治理方案的核心框架,每天为2000+ 个服务提供3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。Dubbo自2011年开源后,已被许多非阿里系公司使用。


2.  技术发展历程总结

2.1.  单节点架构


2.2.  集群架构

2.3.  集群+分布式架构


 

 

高并发网站技术架构的演变


 

 

 


全部评论

相关推荐

02-07 12:06
已编辑
华侨大学 测试开发
最近看到很多 92 的,甚至是硕士,开始往测开赛道卷,说实话有点看不懂。先把话说清楚,大厂里的测开,绝大多数时间干的还是测试的活,只是写点自动化脚本、维护测试平台、接接流水线,真正像开发一样做系统、做架构、做核心平台的测开少得可怜,基本都集中在核心提效组,而且人很少,外面进去的大概率轮不到你,我想真正干过人都清楚。很多人被洗脑了,以为测开也是开,和后端差不多,只是更简单、更轻松、还高薪。现实情况是,测开和开发的职业路径完全不一样。开发的核心是业务和系统能力,测开的核心是稳定性和覆盖率,前者是往上走,后者天花板非常明显。你可以见到很多开发转测开,但你很少见到干了几年测开还能顺利转回开发的。更现实一点说,92 的高学历如果拿来做测开,大部分时间就是在做重复性很强的杂活,这种工作对个人能力的放大效应非常弱。三年下来,你和一个双非的,甚至本科的测开差距不会太大,但你和同龄的后端、平台开发差距会非常明显。这不是努不努力的问题,是赛道问题。所谓测开简单高薪,本质上是把极少数核心测开的上限,当成了整个岗位的常态来宣传。那些工资高、技术强的测开,本身就是开发水平,只是挂了个测开的名。普通人进去,99% 做的都是项目兜底型工作,而不是你想象中的平台开发。测开不是不能做,但它绝对不是开发的平替,也不是性价比最优解。如果你是真的不想做开发,追求稳定,那测开没问题。但如果你只是觉得测开比后端容易,还能进大厂,那我劝你冷静一点,这只是在用短期安全感换长期天花板。有92的学历,如果你连测开这些重复性工作都能心甘情愿接受,那你把时间精力用在真正的开发、系统、业务深度上,回报大概率比卷测开要高得多。想清楚再下场,别被岗位名和话术带偏了,就算去个前端客户端也是随便占坑的,测开是一个坑位很少赛道,反而大面积学历下放,不用想也能知道会是什么结果,我想各位在JAVA那里已经看到了
小浪_Coding:工作只是谋生的手段 而不是相互比较和歧视
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务