关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

CDN对流媒体和应用分发的支持及优化

发布时间:2017-05-26 21:50:07
        此文是根据马涛在【QCon高可用架构群】中的分享内容整理而成。

1.CDN系统工作原理

1.1 DNS解析方式

客户网站使用CDN加速应用或其他下载类资源:

客户域名: example.com

客户加速域名: cdn.example.com

CDN 厂商加速域名: cdn.com

CDN 厂商 CNAME 域名: example.com.cdn.com

 

CDN对流媒体和应用分发的支持及优化

上图是不使用CDN加速的情况。解析DNS是由客户的权威服务器完成的。要使用CDN加速,客户需要在自己的权威 dns 中配置:cdn.example.com => example.com.cdn.com,然后用户只需要将需要加速的文件挂上cdn.example.com就可以自动使用CDN系统加速了。

用户请求客户页面的流程如下:

www.example.com => 解析返回客户 http server ip

页面中嵌入的 cdn.example.com => 解析返回 CDN 的域名 example.com.cdn.com => 经过 CDN 厂商 + DNS 调度后, 返回指向某个特定的 IP(这个过程可能经历了多次 CNAME 跳转)。

用户通过建立 http 连接, 请求服务器下载资源。

下面的图,是加入了CDN系统的请求流程,因为中间加入了CNAME跳转,在客户端就可以无缝同时访问多个服务器展示信息。

 

CDN对流媒体和应用分发的支持及优化

优点:

最通用的方法

最简单的方法
        缺点:

功能限制: 只能根据域名解析 ip 地址, 不能进行额外的优化

容易被影响: 不遵守 DNS 解析 TTL 的代理服务器, DNS一些常见的劫持问题这是传统的CDN加速方式,也是市面上最常见的方式。优缺点很明显,这里我就简单列举出来。

1.2 非DNS解析方式

客户通过嵌入SDK, 不经过传统 DNS 解析方式来使用 CDN 资源. 例如:HttpDns。

客户在自己的程序中嵌入一个查询模块,任何查询域名的操作都经过该模块代理完成。协议可以是自定义的, 加密可以单独控制, 查询的内容也可以定制化。刚好周一分享过 HttpDns Lib 的内容(可关注本公众号,查看历史文章),我这里也就一笔带过了。

优点:

功能强大: 可以根据资源, 甚至其他信息来允许调度程序进行额外的优化工作

传输协议灵活: 可以是标准的自定义 tcp/udp 协议, 也可以是 http 协议

不容易被影响: 报文可以加密, 协议为自定义协议, 不容易被劫持和缓存
        缺点:

不兼容传统协议

很多客户程序不兼容, 例如: 浏览器, 第三方应用

需要额外实现解析的服务程序目前很多视频播放软件都是采用第二种方案进行,因为这种方案可以对资源进行准确定位,提高资源命中率。

对大家来说,CDN系统是一个比较透明的系统,这也是为什么很多人可能不知道CDN系统的原因。那么下面,我来简单介绍下,CDN厂商自己的CDN系统架构。

1.3 CDN 系统架构

CDN对流媒体和应用分发的支持及优化

/template/Home/Shiwaix2/PC/Static