观看视频基本上成为了网民每天都在做过的事情,也都会遇到视频卡顿,不能访问的情况,有些时候是本地端设备或网络的问题,有时候确是网络配置不当引起的,如果能明白视频网站的访问原理,就可能会避免一些访问不畅的问题。
众所周知,大型视频网站访问量巨大,用户数量巨大,占用带宽流量巨大,单一的服务器或者群集服务器很难满足用户的访问需求的,因此在不同范围内进行内容分发就成为了必然选择,这就是CDN。CDN解决用户集中访问时的单一出口问题,按照就近原则解决了时延问题,给视频访问者带来了较好的体验,那么具体是如何实现的呢?
视频访问调度过程
如上图,观看视频的大致步骤:
①页面访问请求,这里可以看到视频介绍信息,视频网站的DNS调度系统将根据用户的DNS返回一个最优的服务器来供用户访问页面,比如用户DNS属于电信用户,那么返回的页面服务器为电信服务器,同网访问较快;
这里有企业自建CDN的,用户DNS就必须用企业指定的DNS,该DNS在视频网站进行备案,进行策略调度,将页面访问请求调度到企业自建的CDN页面,实现页面流量控制。非全镜像的则页面访问还是由视频网站调度到合适的页面访问。
②通过上面请求后,可以较快速度访问到视频页面,在点击需要观看的视频后,IP调度系统根据用户的源IP地址返回最优的CDN视频服务器地址给用户,比如用户IP地址为广州天河区电信,如果天河区有该视频网站的CDN节点,就返回给节点的服务器地址给用户,如果没有,就将离天河区较近的电信CDN节点返回给用户;
企业自建CDN的,企业会有一段IP专门用来访问视频网站的调度服务器,这段IP需要在视频网站备案,进行策略调度,该段IP进行视频访问请求时,会将企业的CDN视频服务器地址返回,实现视频流量控制。
③根据返回的视频地址,进行视频访问。
如果是访问比较冷门的视频,该CDN节点并没有预先缓存,这个时候该CDN节点就按照既定策略进行该视频的拉取,就是从其它cdn节点进行缓存到自己服务器的上,这就叫做回源。
直播跟点播是完全不一样的,因为各CDN节点不可能事先有缓存,直播源站在收到视频画面后向一部分CDN节点进行推送,这部分节点可以继续向另外的CDN节点推送,这个是主动推流,另一种是用户放问时,按照上面的点播程序,所在cdn节点没有内容,主动向其他cdn节点拉取视频的过程,这个是被动推流。
影响直播体验的主要在于直播起播延时和直播内容延时。
直播起播延时——从发出指令,到显示画面,所消耗的时间。
直播内容延时——用户端播放的画面和现场画面的时间差。
显然,并发流量大的直播是非常考验平台的。
通过上面的描述,我们可以清楚了视频访问的过程,如果视频页面打开很慢,可以通过更换DNS进行改善,如果访问视频很慢,有时候也可能是当地的IP段被调度到较远的CDN节点,出现了调度错误,这个可能需要ISP和视频网站间进行协调解决。