剖析阿里云CDN科技的优化之路
发布时间:2021-12-22 10:06 所属栏目:122 来源:互联网
导读:CDN的用途 目前,CDN主要是分几个方向发展,比如静态内容的分发、视频流媒体的分发、动态资源的加速、源站保护等,其中最基本的是用来做静态内容分发。阿里CDN现在最大的用途是用作淘宝所有图片的分发。视频流媒体的分发功能使用,发展速度也非常之快。CDN一
CDN的用途 目前,CDN主要是分几个方向发展,比如静态内容的分发、视频流媒体的分发、动态资源的加速、源站保护等,其中最基本的是用来做静态内容分发。阿里CDN现在最大的用途是用作淘宝所有图片的分发。视频流媒体的分发功能使用,发展速度也非常之快。CDN一些特色功能的应用,如动态资源的加速,还有SSL的接入、SPDY的接入等。CDN还有一个功能是源站保护,它可以通过各种安全防御,实现源站流量的减少。 二、CDN的加速原理 CDN最大的特色在于加速。那么,CDN是如何实现各种“加速”,发挥“加速”功用呢?如下图所示,CDN有很多节点,通过域名实现就近接入。当用户发起一个请求后,CDN会回源取,然后把文件就近缓存在那个节点的服务器上。假设北京的用户到北京节点只需4毫秒,后面写了一个90%的请求其实都直接命中到了服务器,那么还有10%的流量回到了二级cache节点。而二级cache节点也是同样的缓存服务器,假设它的命中率也是90%,那么最终只有1%的流量到源站。如果纯粹回到源站可能需88毫秒,而通过访问CDN就会大大缩短时间,甚至4毫秒就可以让用户拿到一个文件。这是CDN实现加速的基本原理。 三、阿里CDN分布 CDN加速的载体在于节点,阿里CDN节点分布可谓星罗棋布,如下图所示。阿里CDN服务器原先主要用于淘宝图片的分发,在全国32省(市、区)均有服务器,有200多个节点,在一线城市运营商均有机房,甚至在外国也有30余个节点分布,以提供国外用户的加速服务。 2016222102301076.jpg (579×390) 四、阿里CDN应用 这两天,我去拜访了一些客户。他们把阿里云的CDN与业界其他一些比较有名的商业CDN进行比较统计,得出的结论是:阿里云CDN的平均延迟大概能有10%到20%的下降。 从去年开始,阿里云整个团队的开发方向就转向做对外服务。从2013年开始,阿里云CDN的服务能力已经远超阿里云自用的能力。就像阿里云一些PE所说,阿里云CDN团队基本上可以坐在那里喝着茶看着双十一的流量就可以了。 现在阿里CDN的目标是:做到能够快速、安全、易用,能帮用户减少成本。 下面是CDN的一些关键组件: l IP库 l 调度系统 l 缓存系统 l 刷新系统 l 日志系统 有时,CDN上的缓存文件更新了,我要把它删掉。刷新需要全网分发,而全网的每一台机器,每一个cache节点全部要刷,因为我不知道文件存在哪里,都是广播的,而现在,阿里云按调度频道来刷,就能减少一定量的刷新。另外,阿里云增加了合并功能。比如,现在有100个URL过来刷新,可以合并为一次提交到Cache服务器,从而减少刷新的QPS。此外,Swift支持正则和目录刷新,只需提交一个请求就可以刷很多内容。现在从统计数据上看,全球节点99%以上能做到1分钟的刷新。 目前,阿里云阿里内部已经实现了海量日志搜集与分析系统。原来阿里云也是用syslog来搜集日志,在40G跑满时,syslog丢包非常严重。特别是在对外商用以后,日志需要计费,对可靠性要求非常高,所以后来就开发了一个传输日志和实时分析系统。同时,内部也做了一些优化,比如合并功能,多条日志合并后再发到日志服务器上,使用LZO进行流式压缩,最终收集到中心。现在阿里云可以做到产生的日志10分钟传到OSS上以供下载。这个速度在业界来说是非常快的。现在,阿里云整个CDN的量级大概每天有几百T的访问日志,最终都会导入到阿里云ODPS上进行大数据分析,比如用户行为分析。 阿里CDN针对TCP协议栈的做了优化,比如说阿里云做了基于时间序的丢包发现机制,TCP的包是有序号的,阿里云按照序号来查看,如果发现高序号的TCP的ACK,但是低的没有发过来。阿里云会以更快的一个重传机制来确保阿里云低序丢失的包能够快速发过来。结合自适应的初始窗口等单边优化措施,最终阿里云将小对象的平均RT降低20%以上。 这个功能是页面内容优化,就是按照前端优化准则进行自动化的内容调整。比如说减少页面中请求的数量。阿里云会做一些静态资源文件合并。还有就是尽可能减少页面大小,阿里云会主动删除页面空白符,还有一个智能Gzip,通过主动发起JS异步请求,进行探测,即使没有Accept-Encoding头也会主动做压缩。CDN这边也在跟前端的同学一起来做,比如做一个UA的数据库,去保存每一个User Agent对应的分辨率,不同的分辨率选择不同尺寸的图片。 CDN其实不仅仅是静态内容的HTTP加速,还可以做TCP协议的加速。如上图所示案例显示,阿里云最近发现台湾用户访问淘宝页面非常慢,特别是从国内到国外这个链路是比较差的。阿里云在台湾有节点,香港有节点,上海有节点,台湾到上海延时有200毫秒,台湾到香港是20毫秒,香港到上海60毫秒。阿里云发现,从台湾、香港再回来反倒更短,所以做了CDN之间的路由优化,对TCP连接进行加速。这个图最终会有很多节点,就是一个有向图,阿里云在每一个CDN节点上做相互节点之间的网络探测,检测整个网络的丢包率和延时,构建出一个有权值的表格,然后阿里云去计算最短路径。 流媒体这个业务跟图片有很大的区别。图片的文件大小只有30到50K,但是视频的平均文件大小可能会到500K到2M。首先,流媒体对于CDN节点的流量冲击会非常大,基于传统的DNS调度有缓存时间,一般有5到10分钟的延时,甚至有一些节点都调不走。阿里云这边就设计了一个中心式的,基于HTTP协议的调度方法。当请求某个URL的时候,CDN根据节点的负载会直接返回资源或者302重定向,作精确调度。几乎就没有延时时间,甚至可以在每个节点的机器间相互调度。 这是7层攻击的一个案例,经常有一些用户说,你们怎么防攻击的流量算我钱,实际上防攻击不是免费的。这是我昨天截的图,这是7层的攻击,突然间针对原来那个小站有15万QPS的攻击流量,它的响应大小是15KB。可以看到只要打开安全功能,CDN已经挡了99%以上的攻击,并保证它的正常服务,帮用户节省了17Gbps的流量费用。 (编辑:ASP站长网) |
相关内容
网友评论
推荐文章
热点阅读