初创
- 淘宝PV页面访问量在十几亿到二十几亿,因此即便访问淘宝首页页面服务器也有成百上千台,这过程用到的负载均衡技术LVS(Linux Virtual Server 由淘宝章文嵩博士开发)
- 一个页面加载网页资源并发数有限,淘宝经过不一样域名绕开这个限制,至关于访问不一样的网页。不一样地区之间访问也会很是缓慢,这能够经过CDN(Content Delivery Network即内容分发网络的做用)。淘宝在全国各地创建数十个甚至上百个CDN节点,经过一些手段保证你访问的资源站点离你最近的CDN节点。保证了大流量的分散以及各地访问的加速
- 这样又会致使一个问题,当上传一张图片如何在各节点都上传上相同的图片,这涉及到内容分发与同步的相关技术。淘宝开发了分布式文件系统TFS(TaoBao File System)
- 通过上面三部终于加载完成淘宝首页,首页输入关键字,好比“毛衣”,点击搜索,进入分词库分词,而后由一千多台搜索服务器完成搜索。
- 对于已买过的宝贝,能够经过已买到查看当时的快照,这是为了防止商家对商品作出承若的否定。这样的快照确定很是多,对他的保存和快速调用不是简单的事,其中淘宝用到了Tair(淘宝自行研发的分布式KV存储方案)
- 访问行为数据的记录,产生的日志可能很是庞大,达到TB级也正常,这时要解决快速、及时、同步地传输这些日志,淘宝开发了TimeTunnel,用于进行实时的数据传输,而后交由后端系统进行计算报表
- mysql第四版,存储引擎MyISAM,这种存储引擎在写数据的时候会把表锁住
- 行癫初期数据分库分表作了个数据路由框架DBRoute,统一处理数据的合并、排序、分页等操做。但对容灾的需求没有达到
- 以后用spring替换了EJB
- 对商品详情这种大数据量字段,从商品表移出到单独的表,后又放入缓存系统,直到如今放入文件系统TFS中
- 淘宝网使用GraphicsMagick进行图片处理,采用了面向小对象的缓存文件系统,前端有LVS+Haproxy将原图和其全部的缩略图请求都调度到同一台Image Server(图片服务器)
- 淘宝缓存从ESI到基于Berkeley DB的TBstore,又专门为用户系统写了个TDBM,抛弃了Berkeley DB的持久化功能,以后参考memcached改进推出TDBM2.0,再以后将TDBM、TBstore合并推出Tair(TaoBao Pair的意思,Pair即Key-Value数据对)。Tair做为一个分布式系统,由一个中心控制节点和一系列的服务节点组成,咱们称中心控制节点为Config Server,服务节点是Data Server。
分布式时代
- 系统进行了服务化拆分,集群和分布式又带来不少问题
- 为了解决服务间调用,写了HSF同步调用框架和notify异步调用消息中间件
- 有了HSF和Notify的支持,在应用级别中,整个淘宝网的系统能够拆分了,还有一个制约系统规模的更重要的因素,就是数据库,也必须拆分
- TDDL就是为了解决分库分表分布式状况下致使的各类问题而生
- 再要解决集群session问题,考虑用cookie或tair解决
- 以后开始作开放平台,须要解决路由、数据规范和受权,当时尚未oauth2,直到2011年才支持
- 以后逐渐尝试新兴技术Hadoop和Memcached
- 后面主要是一些做者心路历程和一些牛人列传
总结
- 看了这本pdf,你会了解淘宝架构的演变,了解系统演进的过程。
- 它让我理解了淘宝大多所用的技术为何不是如今最流行的,在那个年代,他们是技术的先锋,也只有在流量到达了那个级别,迫切须要解决这样的需求,才演变出了如今阿里内部各类架构和中间件体系
- 想看具体的pdf内存,下面我留了连接
连接:https://pan.baidu.com/s/1M57ptoxXGuGwiVrLCwhl4w
提取码:m4k0前端