简介:为了帮助用户更好地了解和使用CDN产品,CDN应用实践进阶系统课程开课啦!前几天,阿里云CDN产品专家陈智城在线分享了《大文件下载及视频点播的CDN加速实践》议题,解读大文件下载和视频点播的业务场景、内容分发挑战及对应解决方案。本篇文章,将为你详述分享原文。
为了帮助用户更好地了解和使用CDN产品,CDN应用实践进阶系统课程开课啦!前几天,阿里云CDN产品专家陈智城在线分享了《大文件下载及视频点播的CDN加速实践》议题,解读大文件下载和视频点播的业务场景、内容分发挑战及对应解决方案。本篇文章,将为你详述分享原文。
关注阿里云边缘计算和CDN官方账号:阿里云Edge Plus ,免费获得讲师课件PPT
对于下载类的场景来说,常见细分场景包括:手机应用商店、游戏应用商店以及游戏更新和手机操作系统更新等,而对于视频类的应用场景来说,主要细分场景包括短视频、长视频、在线教育、OTT机顶盒、广电传媒和音乐网站等等。
为什么会把下载类的应用场景和视频点播类应用场景放在一起去做比对呢?因为视频点播这个应用场景实际上也是一种大文件下载场景,这两个应用场景有着很高的业务相似性,也有很多共性问题,而它们之间的区别在于视频点播对于访问的性能会有更高的要求。
两个场景在内容分发方面所面临的挑战主要有三大类:
当下,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建立了一张覆盖全球六大洲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调度方式的优缺点:
(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年度产品升级发布会
火热开播
点击直达发布间:https://yqh.aliyun.com/live/cdn_0106
原文链接:https://developer.aliyun.com/article/780846?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。