之前提到过,腾讯云和阿里云的云主机低配版本出口带宽都很低,腾讯云为1Mb/S,阿里云有高速流量,带宽也不过5Mb/S。导致页面打开缓慢,影响体验。碰巧近期公司也有业务需求,我就趁机测试了一下CDN内容分发网络的加速效果,给大家分享一下。
什么是内容分发网络?
内容分发网络(Content Delivery Network,CDN),是在现有 Internet 中增加的一层新的网络架构,由遍布全国的高性能加速节点构成。这些高性能的服务节点都会按照一定的缓存策略存储您的业务内容,当您的用户向您的某一业务内容发起请求时,请求会被调度至最接近用户的服务节点,直接由服务节点快速响应,有效降低用户访问延迟,提升可用性。
CDN 有效地解决了目前互联网业务中网络层面的以下问题:
1、用户与业务服务器地域间物理距离较远,需要进行多次网络转发,传输延时较高且不稳定;
2、用户使用运营商与业务服务器所在运营商不同,请求需要运营商之间进行互联转发;
3、业务服务器网络带宽、处理能力有限,当接收到海量用户请求时,会导致响应速度降低、可用性降低。
正常的WEB请求过程:
使用CDN加速后的WEB请求过程:
详细说明如下:
1、用户向 www.test.com 下的图片资源(1.jpg)发起请求,会先向 Local DNS 发起域名解析请求;
2、当 Local DNS 解析 www.test.com 时,会发现已经配置了 CNAME www.test.com.cdn.dnsv1.com,解析请求会发送至 Tencent DNS(GSLB),GSLB 为腾讯云自主研发的调度体系,会为请求分配最佳节点 IP。
3、Local DNS 获取 Tencent DNS 返回的解析IP(即DNS接入节点IP地址)。
4、用户获取解析 IP;
5、用户向获取的 IP 发起对资源 1.jpg 的访问请求;
6、若该 IP 对应的节点缓存有 1.jpg,则会将数据直接返回给用户(10),此时请求结束。若该节点未缓存 1.jpg,则节点会向业务源站发起对 1.jpg 的请求(6、7、8),获取资源后,将资源缓存至节点(9),并返回给用户(10),此时请求结束。
测试场景:下载加速
腾讯云官网介绍,下载加速适用于各类文件下载的加速,如游戏安装包、手机 ROM 升级、应用程序包下载等。
腾讯云 CDN 依靠海量弹性带宽储备,具备突发性超大流量承载能力,可对这些相对较大的文件下载进行加速分发,保证下载服务的稳定性,任何区域的终端用户都可获得极速流畅的下载体验。
在腾讯云环境进行测试
为体现效果,将出口带宽为1Mb的腾讯云服务作为测试源,并上传测试用的文件。为方便操作,部署宝塔。上传速度:
测试用HTTP下载链接:
http://tl.guotiejun.com/Moba.zip
在未使用CDN加速的情况下,下载速率为125.6KB,折合1000Kb,1Mb带宽打满。
单独使用迅雷下载,峰值速率为123KB/S:
同时使用迅雷、FTP和浏览器进行下载,三者抢占带宽,总下载速度为130KB左右:
在腾讯云控制台页面,选择内容分发网络,增加域名管理配置:
提交后可以看到当前状态:
可以看到分配的CDN加速域名信息,也是实现原理中GSLB的递归查询域名,用于给客户端返回各地不通的CDN接入节点IP地址信息。
因为我用的是万网域名,所以此时需要在万网后台配置CNAME解析。
完成后查看域名管理状态:
配置完成后,在不同区域测试解析值,返回IP地址信息不同,均为各地对应的CDN节点IP地址。
在内容分发网络中点击刷新预热,增加记录值如下:
随后再进行下载测试,发现资源数量增多,并且速度有明显提升。
再更换一个域名解析,测试效果:
配置刷新预热:
首次下载发现速度和之前一样:
再次测试下载,发现10M的带宽打满。
将源指定到阿里云进行测试
前面的测试说明腾讯云对本地资源加速有效果,那么资源不在腾讯云的情况如何呢?我又在阿里云主机创建一个网站,首先创建域名解析,将cdn.guotiejun.com解析到服务器106.15.33.75。
然后在阿里云主机创建一个网站http://cdn.guotiejun.com/