流媒体应用中CDN的基本架构
目前流媒体技术被广泛使用,很多视频的点播、直播业务以及网络广告等都应用了流媒体技术,这些给互联网提供商的服务器带来了巨大的压力。通过构建CDN网络将流媒体内容发布到最接近用户的网络“边缘”,使用户可以“就近取材”。在构建新型CDN网络架构时,需要考虑到流媒体业务快速发展带来的网络冲击,同时也需要考虑到互联网内容提供商最需要解决的问题。流媒体业务拓扑图:
一个视频从源站出发,经过内容存储中心以及各级节点最终到达各地用户时会消耗很长的时间,而用户时不希望等待这么长时间的。在规划CDN时就需要注意内容传输的时延问题。标准的CDN总体架构示意图:
从整体来看,分为内容库与流服务节点二级架构。具体来说,可以划分为内容库模块、流服务缓存模块、全局调度RR模块以及网络管理模块:
(1)内容库模块
包括源站、内容中心、区域中心等,作为CDN中的核心部分,提供的功能是对内容资源进行一系列的操作,如存储并管理内容资源、将内容分发给下级节点等,并提供内容在CDN中的多副本分布式存储,从而实现系统存储资源、计算资源以及宽带资源的合理利用。利用FTP实现内容注入,利用分布式文件存储系统Ceph来实现海量数据的存储以及利用Nignx来实现HTTP下载内容分发功能。
(2)流服务缓存模块
作为CDN中直接为用户提供流服务的模块,在面对用户请求时,将先在本地查找用户请求的内容,当本地名优命中是,则将请求转发到上级节点,并一边从内容服务器获取资源,一边对外提供服务。其中,缓存功能分担了内容库的压力,并加速了服务。采用多种开源软件相结合来设计流服务缓存模块。其中Squid来实现高速缓存,OSPF+LVS+Keepalived和Nginx+Lua协同实现本地负载均衡。
CDN边缘节点缓存策略一般都会遵循http标准协议,通过http响应头中的Cache-control: max-age的字段来设置CDN边缘节点数据缓存时间。当客户端向CDN节点请求数据时,CDN节点会判断缓存数据是否过期,若缓存数据并没有过期,则直接将缓存数据返回给客户端;否则,CDN节点就会向源站发出回源请求,从源站拉取最新数据,更新本地缓存,并将最新数据返回给客户端。
CDN缓存时间会对“回源率”产生直接的影响。若CDN缓存时间较短,CDN边缘节点上的数据会经常失效,导致频繁回源,增加了源站的负载,同时也增大的访问延时;若CDN缓存时间太长,会带来数据更新时间慢的问题。开发者需要增对特定的业务,来做特定的数据缓存时间管理。
(3)全局用户请求调度模块—增加调度策略的内容
RR主要用于完成用户的请求访问调度,为用户分配合适的流媒体节点提供服务。RR会根据CDN的网络拓扑结构、各个节点的负载情况等,将用户的视频请求重定向到最合适的流媒体节点。现有主流CDN中通过专用的负载均衡硬件(例如F5、Radware等)来实现的。提供了Round Robin等12种局域负载均衡算法和Global Availability等15种广域负载均衡算法,按照调度策略是静态配置还是动态生成,分为静态调度方法和动态调度算法。
在调度管理模块中,首先,基于DNS层面的调度,最终结果是将域名解析权完全交给RR/GSLB,利用BING+SQL来搭建DNS调度管理系统,RR会根据用户的HTTP请求找出可用的流媒体服务节点,并将HTTP请求转发给该节点,该节点为用户提供服务,利用开源Nginx来搭建HTTP的调度服务。
(4)网络管理模块
能够以用户体验为中心,对整个CDN中的节点进行监控,实时地掌握网络中各个节点的健康状况,及时处理故障节点,保障CDN的可靠性。一般采用Zabbix、InfluxDB来实现。
CDN的关键技术有负载均衡、路由调度、内存缓存、服务鉴权等,后续会继续给大家带来这些关键技术的分享。(来源:青榴实验室)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
评论