CDN全称为Content Delivery Network即内容分发网络,是一个策略性部署的整体系统,主要解决由于网络带宽小,用户访问量大、网点分布不均匀等导致用户访问网站速度慢的问题。
CDN具体实现是通过现有的网络中,增加一层新的网络架构,将网站的内容发布到离用户最近的网络节点上,这样用户可以就近获取所需的内容,解决之前网络拥塞、访问延时高的问题,提供用户体验。
源站:发布内容的原始站点。添加、删除和更改网站的文件,都是在源站上进行的;另外缓存服务器所抓取的对象也全部来自源站。对于直播来说,源站位主播客户端。
缓存服务器:是直接提供给用户访问的站点资源,由一台或数台服务器组成;当用户发起访问时,他的访问请求被智能DNS定位到离他较近的缓存服务器。如果用户所请求的内容刚好在缓存里面,则直接把内容返还给用户;如果访问所需的内容没有被缓存,则缓存服务器向邻近的缓存服务器或直接向源站抓取内容,然后再返还给用户。
智能DNS:整个CDN技术的核心,主要是根据用户的来源,以及当前缓存服务器的负载情况等,将其访问请求指向离用户比较近且负载较小的缓存服务器。通过智能DNS解析,让用户访问同服务商下、负载较小的服务器,可以消除网络访问慢的问题,达到加速作用。
客户端:发起访问的普通用户。对于直播来说,就是观众客户端。
直播CDN主要流程:
1、主播开始进行直播,向智能DNS发送解析请求
2、智能DNS返回最优CDN节点IP地址
3、主播端采集音视频数据,发送给CDN节点,CND节点进行缓存等处理
4、观众端要观看此主播的视频,向智能DNS发送解析请求
5、智能DNSf返回最优CDN节点IP地址
6、观众端向CDN节点请求音视频数据
7、CDN节点同步其他节点的音视频数据
8、CDN节点将音视频数据发送给观众端
网络延时:从主播端采集,到观众端播放之间的时间差(仅考虑网络传输的延时)。
光在真空中的速度约为300,000km/s,普通光纤工程上一般认为传输速度是200,000km/s
北京到上海 1,200km 往返时延:12ms
北京到纽约 11,000km 往返时延:110ms
赤道周长 40,000km 往返时延:400ms
在节点较少,网络情况较好的情况下,网络延时也是最小,加上一定的缓存,可以控制延时在1s~2s左右。节点多,网络差的情况下,网络延时会对应的增大,延时可以达到15s以上。
网络抖动:数据包的到达顺序、间隔和发出时不一致。
比如发送100个数据包,每个包间隔1s发出,结果第27个包在传输过程中遇到网络拥塞,造成27不是紧跟26到达的,而是延时到87后面才达。直播中,这种抖动的效果实际上跟丢包是一样的,因为不能依照接收顺序把内容播放出来,否则会造成失真。
网络抖动会造成播放延时对应增大,如果网络中抖动较大,会造成播放卡顿等现象。
网络丢包:数据包的传输不可能百分之百的能够完成,从而造成在数据的传输中出现空洞,造成丢包。
CDN直播中用到的RTMPHLSHTTP-FLV等协议都是在TCP的基础之上。TCP一个很重要的特性是可靠性,即不会发生数据丢失的问题。为了保证可靠性,TCP在传输过程中有3次握手。首先客户端会向服务端发送连接请求,服务端同意后,客户端就开始发送数据,每次发送一批数据,得到服务器的“收到”确认后,继续发送下一批数据。TCP为了保证传到,会有自动重传机制。如果传输中发生了丢包,没有收到对端发出的“收到”信号,那么就会自动重传丢失的包,一直到超时。