简介:为了帮助用户更好地了解和使用CDN产品,CDN应用实践进阶系统课程开课啦!前几天,阿里云CDN产品专家陈智城在线分享了《大文件下载及视频点播的CDN加速实践》议题,解读大文件下载和视频点播的业务场景、内容分发挑战及对应解决方案。本篇文章,将为你详述分享原文。

为了帮助用户更好地了解和使用CDN产品,CDN应用实践进阶系统课程开课啦!前几天,阿里云CDN产品专家陈智城在线分享了《大文件下载及视频点播的CDN加速实践》议题,解读大文件下载和视频点播的业务场景、内容分发挑战及对应解决方案。本篇文章,将为你详述分享原文。

关注阿里云边缘计算和CDN官方账号:阿里云Edge Plus ,免费获得讲师课件PPT

一、大文件下载和视频点播的内容分发挑战

对于下载类的场景来说,常见细分场景包括:手机应用商店、游戏应用商店以及游戏更新和手机操作系统更新等,而对于视频类的应用场景来说,主要细分场景包括短视频、长视频、在线教育、OTT机顶盒、广电传媒和音乐网站等等。

为什么会把下载类的应用场景和视频点播类应用场景放在一起去做比对呢?因为视频点播这个应用场景实际上也是一种大文件下载场景,这两个应用场景有着很高的业务相似性,也有很多共性问题,而它们之间的区别在于视频点播对于访问的性能会有更高的要求。

两个场景在内容分发方面所面临的挑战主要有三大类:

  1. 用户体验问题,主要体现在:国内运营商环境复杂,跨运营商访问效果差;用户分布广,跨地区访问时延高、速度慢;弱网环境下传输性能差,速度慢、卡顿严重等方面;
  2. 源站性能与成本问题,主要体现在:中心式部署的源站弹性扩展能力差,无法承受大规模突发流量以及中心式部署的源站带宽成本高昂;
  3. 业务安全问题,主要体现在:时刻面临着DNS劫持(例如被劫持了页面内容,被嵌入了页面广告等)、资源盗链(源站面临带宽成本上的损失)等安全威胁。

二、CDN内容分发网络架构

当下,CDN已经是成为了缓解网络拥塞、提高业务响应速度、提升用户体验的一种非常重要的技术手段,也是互联网基础设施当中不可或缺的重要组成部分。下面我们通过阿里云CDN的内容分发网络架构来说明典型的CDN内容分发网络都包含哪些组成部分:

(1)调度系统
用户的终端会发起各种应用访问,比如:点播和下载这两个应用场景。用户的访问请求会首先去做域名DNS解析,然后用户的域名DNS解析请求将会通过阿里云CDN的调度系统去处理;

(2)链路质量系统
链路质量探测系统的作用是去实时地监测缓存系统中的每一个节点和链路的实时负载和健康状况,然后反馈给调度系统,调度系统会根据用户请求中携带的IP地址信息去解析用户的运营商和区域归属,然后综合链路质量信息为用户分配一个最佳的接入节点;

(3)缓存系统
用户收到最佳接入节点的IP以后,就会去访问这个缓存节点,节点如果已经缓存了用户请求的资源,那么就将会直接将资源返回给用户;如果L1节点没有命中,会上溯到L2节点,如果L2节点也没有缓存资源,才会返回源站去拉取这个资源;某个资源首次拉取后将会在缓存系统中缓存下来,这样如果后续用户访问到同一个资源,就可直接从缓存系统去拉取资源,避免重复回源;通过分级缓存的这种部署架构可以达到提高内容分发效率、降低回源带宽以及提升用户体验的效果;

(4)支撑服务系统
阿里云CDN在内容分发之外也提供了支撑服务系统。第一是具备资源监测能力,可以对缓存系统上客户业务运行的状态进行监测,比如对CDN加速域名的QPS、带宽、http状态码等常见指标实现监控。第二是数据分析,用户可以分析CDN加速域名的TOP URL、PV、UV等数据。第三是配置管理系统,用户通过该系统可以下发如缓存文件类型、缓存时间、去参数缓存等缓存规则,以提升缓存系统的运作效率。


三、 CDN如何解决互联网内容分发所面临的问题?

下面,从用户体验、源站性能与成本以及业务安全这三个方面来看看CDN是如何解决问题的。

第一,用户体验问题

首先,CDN可以为用户提供诸多的就近接入的节点。
阿里云CDN建立了一张覆盖全球六大洲70多个国家的2800多个的节点,全网具备了130Tbps的带宽输出能力,基本上覆盖了国内以及做海外的主要运营商。依托丰富的资源节点覆盖,阿里云CDN能够让用户就近接入同运营商节点,解决跨运营商互联互通、远距离访问时延大等用户体验问题。

其次,提升用户体验的第二点是需要提供精准的调度能力,阿里云CDN在这里是提供了4项关键的优化措施:

1、持续更新的精准IP数据库:IP数据库的作用是在用户的DNS解析请求转发到了CDN调度系统时,调度系统会判断用户的地区和运营商归属,以此来为用户分配就近接入的同运营商CDN节点。为了确保IP数据库的数据处于最新的状态,数据库一直在持续地更新。
2、提供HTTPDNS服务(需要客户端兼容):采用HTTPDNS这项技术使得用户终端可以绕开运营商的local DNS,直接采用HTTP协议去访问调度系统,请求所需要访问的域名的最优接入节点,这样可以避免DNS劫持所带来的业务安全问题。
3、节点数据分析:CDN调度系统通过链路状态系统去实时地分析整个缓存系统中的所有节点和链路的健康状况,为用户选择最优的接入节点,避免因为接入节点质量不佳而影响到用户访问体验。
4、基于内容调度,提高访问命中率:在大文件下载和视频点播这两个应用场景上经常使用302调度这种基于内容的调度技术,302调度是一种中心调度方案,用户在请求某一个资源的时候,在完成域名DNS解析之后,用户请求将会先访问到中心调度系统上,然后中心调度系统将会解析用户请求需要访问的内容,再通过302重定向的方式为用户分配最佳接入节点。
通过采用以上4项优化措施,能够为用户提供更加精准的调度能力,从而让用户能够接入最佳的CDN节点。

CDN常见的三种调度方案简单对比如下图所示:

这里简单说明下这三种常见的CDN调度方式的优缺点:
(1)DNS调度是最常用和最通用的调度方案,缺点是存在DNS劫持的风险,调度的精确度也会差一些;
(2)302调度非常适合用在大文件下载和视频点播这两个应用场景,优点是可以提高调度的精确度,缺点是将会增加首包的时延(在大文件下载和视频点播场景下对首包时延不太敏感,而对调度精确度要求更高)
(3)HTTPDNS调度的优点是有较高的安全性(可以规避DNS劫持风险)和调度精确度,但是有个很大的缺点,需要客户端提供支持(例如在手机APP上嵌入SDK),通用性较差。

再次,提升用户体验的第三个优化点是对传输链路做智能优化

1、协议优化:通过调整拥塞算法、丢包探测算法等优化措施,对TCP协议栈的性能做了大幅度提升,尤其对弱网环境下的网络性能提升明显;
以下两张带宽利用率对比图,左边是标准TCP传输协议,在建立TCP连接之后,需要通过相对更长的时间去提升带宽利用率,一旦碰到丢包情况,带宽利用率会快速下跌,并且需要经历慢速爬坡阶段才能够逐步提升带宽利用率,尤其在弱网环境下,使用标准TCP协议的情况下,带宽利用率的下降会非常的严重。右侧是阿里云优化后的TCP协议,通过快速启动、主动拥塞探测和快速丢包恢复等技术优化措施,能够提供更高的带宽利用率,即使在网络条件相对差一些的情况下,也可以有比较好的优化效果。

2、连接加速:通过修改协议栈的 Handshake Timer 来实现快速重试,以弥补由于丢包导致的重试超时;
3、持久连接:在CDN节点间预先建立好 TCP 连接,并长时间保持不断开,这样在有新连接过来的时候就可以直接复用,减少TCP握手时延。

第二,源站性能、成本压力问题

通过提高缓存系统的效率帮助客户降低源站的性能和成本压力,主要包括六个方面的技术措施:
1、分布式部署:确保用户能够就近访问同运营商的节点,以此来提高访问速度,解决跨运营商访问慢、长距离回源时延高等问题;
2、多级缓存架构:多级缓存架构中的每一级都能够用来缓存用户请求的资源,多级回源收敛之后可以极大地降低回源流量;
3、内容预取:通过内容预取技术提前把源站的内容预取到CDN节点上,减少回源量和提高缓存命中率;
4、合并回源:配置若干个域名的回源请求与某一个域名(业务相同的情况下)相合并,以减少重复回源的流量;
5、去参数缓存:设置hashkey(缓存key)时,配置去掉资源URL后面的参数,以不带参数的URI作为缓存key,以提高缓存命中率;
6、流量控制:提供精细化的流量控制能力,支持单请求流控和全网流控,支持边缘流控和回源流控,能够有效降低客户成本。

下图中标记的序号代表了以上6个技术措施在CDN缓存系统上的作用位置:

这些技术措施综合起来可以帮助客户去有效地减少回源带宽、提升缓存命中率,从而降低源站的带宽压力、降低源站的带宽成本。

第三,业务安全风险问题

阿里云CDN通过可靠的安全防护措施,去帮助用户规避业务上的安全风险。
1、防盗链:可以选择使用Referer、UA、URL、IP等通用鉴权方式,也可以用EdgeScript来定制鉴权规则,支持边缘鉴权和中心鉴权,通过严格校验用户的资源访问请求来防止源站资源被盗用;
2、DNS防劫持:HTTPDNS技术使用HTTP协议访问阿里云的服务端,获得域名解析结果,可以绕过运营商的Local DNS,避免域名DNS劫持;
3、HTTPS传输加密:支持采用TLS协议来加密HTTP协议内容,防止明文数据暴露在互联网上,并且可以设置TLSv1.3、HSTS等高级功能。

最后,我们再整体回顾一下,阿里云CDN在大文件下载和视频点播这两大应用场景下提供了哪些的核心能力:
1、丰富的资源节点:能够为用户提供就近接入的同运营商CDN节点,解决长距离接入和跨运营商访问带来的延迟高和速度慢的问题
2、精准的调度系统:能够实时地获取CDN节点的健康状况,并根据用户的所在位置和运营商来分配最合适的接入节点,以便取得最佳接入效果
3、智能的传输链路:通过协议优化、连接优化等措施来降低总体时延、提高传输速度,尤其是提高弱网环境下的传输速度
4、高效的缓存策略:高效的缓存策略能够带来更高的用户命中率(命中就近节点上的缓存资源),从而提供更高的访问速度
5、可靠的安全防护:可靠的安全防护措施能够对用户的资源访问请求做严格的校验和加密,保护用户的资源和业务安全

如果对阿里云CDN产品应用进阶感兴趣,可以登录专题页面,了解在线教育、音视频、安全防护、游戏等其他场景下的最佳实践,听产品技术专家在线授课,解答疑惑:https://yqh.aliyun.com/live/cdn_industry

直播预告

CDN直播场场精彩
1月6日14:00,CDN开年巨献
阿里云CDN年度产品升级发布会

大文件下载及视频点播的CDN加速实践相关推荐

  1. 高并发大流量专题---5、CDN加速

    高并发大流量专题---5.CDN加速 一.总结 一句话总结: CDN就是多整几台节点服务器,选距离用户最近的服务器来给用户服务,实现的话可以用阿里云.腾讯云他们提供的功能,简单方便,妈妈再也不用担心我 ...

  2. 网站使用CDN加速的5个优势

    当前,我们生活在一个快节奏的时代,特别是5G等新技术的发展,更是带领我们的工作.生活走上更快的车道.企业不想被时代所抛弃,高效率就成为工作的重点,为了让用户在浏览企业网站时速度更快.获取信息的时间更短 ...

  3. 华为云CDN加速OBS桶文件最佳实践

    现在越来越多的行业使用OBS桶存储图片.视频.软件包等静态资源文件,并将OBS桶作为网站.论坛.APP.游戏等业务的存储源.在需要获取这些静态资源时,用户通过URL直接从OBS桶请求数据.OBS桶能够 ...

  4. 最佳实践:使用阿里云CDN加速OSS访问

    简介: 用户直接访问OSS资源,访问速度会受到OSS的下行带宽以及Bucket地域的限制.如果通过CDN来访问OSS资源,带宽上限更高,并且可以将OSS的资源缓存至就近的CDN节点,通过CDN节点进行 ...

  5. 做直播|流量大时需要CDN加速

    使用CDN加速与不使用CDN加速的直播,在访问速度和服务器稳定等方面都存在着一定的区别. 1.直播网站访问速度差异 当我们直播受众并不多的时候,普通的流量就可以满足需求.但如果想策划一场声势浩大,引流 ...

  6. 视频文件服务器加速,视频CDN,视频点播加速,视频点播CDN加速,CDN流媒体点播加速_速网云计算CDN服务商·卓越的互联网业务平台提供商...

    视频点播加速 视频点播流媒体点播加速服务是将源站大量的流媒体内容(视频.声音和数据等)通过良好的链路传输到速网科技流媒体专用存储设备中,并通过速网科技CDN网络本身具有的协同性能,同步分发到位于各地的 ...

  7. java 下载加速_一种基于Java的大文件下载加速方法与流程

    本发明涉及java/多线程技术领域,涉及一种加速文件下载装置,具体提供一种基于java的大文件下载加速方法. 背景技术: 现有的常用下载方式是基于浏览器的单线程下载.这种单线程下载的方式,是通过htt ...

  8. 十大免费CDN加速服务排行榜-国内外免费CDN服务总结

    CDN全称Content delivery network,中文内容分发网络,目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络"边缘", ...

  9. 视频点播cdn加速\直播cdn加速解决方案

    视频点播cdn加速\直播cdn加速解决方案 随着互联网的发展,短视频娱乐等越来越受到欢迎,很多视频媒体网站,要想保证用户的访问速度,就需要使用cdn加速.视频cdn加速可以分为点播cdn加速,直播cd ...

最新文章

  1. 待遇46K起,这几个公众号在招人!
  2. github访问不了_用ssh套娃翻到大陆公网给校园内网服务器装R包以及使用GitHub
  3. 解决 drupal8 提示“ settings.php ”设置未配置 问题
  4. iPhoneX设计稿适配Android,UI设计干货:关于IPHONE X适配问题
  5. 如何帮助企业优化商业模式?看精益数据分析的“欺”与“破”
  6. Android 切换系统语言源码分析
  7. php+反序列化代码执行漏洞,PHP反序列化漏洞
  8. Java中的继承与组合
  9. 电子商务概论_走进经管优质线上课堂(二)之电子商务概论
  10. whitepages 爬取_运营笔记:是时候了解蜘蛛爬取原理了!揭秘收录难题!
  11. 巨划算|¥9.9拼12节美国外教课程,让你家娃像美国孩子一样学习英语!
  12. Django 模板中使用 Ajax POST
  13. 【转】golang 结构体和方法
  14. position之属性
  15. 赵栋 201771010137 《面向对象程序设计(java)》第二周学习总结
  16. Atiti  attilax主要成果与解决方案与案例rsm版 v4
  17. Java - HttpClient 下载文件
  18. Mac OS下安装Photoshop CC 2017破解版
  19. [转载] 晓说——第17期:揭秘战争秘闻 朝鲜战争62年祭(下)
  20. C++编程 学习笔记(六)函数(续)

热门文章

  1. 总说手机没有“好壁纸”,Python一次性抓取500张“美女”图片,够不够用!
  2. java中时间入数据库格式转换_数据库中字段类型为datetime,转换成java中的Date类型...
  3. python实现链表反转_反转链表(Python)
  4. java cache缓存_为什么 Java 中“1000==1000”为false,而”100==100“为true?
  5. php程序yii是什么意思,Yii框架啥意思
  6. mysql ---- innodb-4-备份和恢复
  7. spring-security问题记录---Could not decode JSON for additional information: BaseClientDetails
  8. NOIP2018——总结油记
  9. python web开发-flask中response,cookies,session对象使用详解
  10. ningbooj--1655--木块拼接(贪心)