另外,流媒体CDN加速通常网络规模都比较大,这意味着网络内的节点设备数量多,部署位置也比较低。当然这两项“多”都是相对于Web CDN来说的。因此,流媒体CDN加速进行负载均衡的颗粒度要求也比Web CDN高。在本书第5章中我们讲过,有两种GSLB实现方式,一种是基于DNS的,一种是基于应用层重定向的。基于HTTP重定向方式的负载均衡由于能够看到用户IP和请求的具体内容,因而能够实现更精细、更准确的调度。因此,流媒体CDN大多会选用HTTP重定向方式,有的是与DNS方式结合使用,有的是直接使用,更多相关知识:http://www.zhengdaole.com/。
CDN加速对于基于HTTP重定向的负载均衡系统,在本书第5章已经有了比较详尽的讲述,本章不再重复,如果开展CDN业务,需要了解CDN缓存。
对于流媒体服务CDN加速的选择,通常会基于一套考虑众多因素的算法,这里介绍一种基于增益模型的服务器选择算法的基本原理,读者可以通过这个算法的原理了解Cache选择过程中需要考虑的一些重要的因素,从而更容易理解其他算法。
基于增益模型的服务器选择算法的基本思路是以系统增益最大化为目标,若有多个候选Cache,则增益最大者获选。这里系统增益包含两个部分:
●用户接收媒体流获得直接增益,称为用户增益。
●避免网络资源过多消耗获得间接增益,称为网络利用率增益。
其中,CDN加速用户增益由媒体质量子增益、启动延迟子增益和网络消耗子增益构成,本书并不侧重讲解具体算法,这里只给出一个算法实例,对其他的算法只讲解原理。
这里,RevenueQ(v)、RevenueL(v)和Revenuer(v)分别是媒体质量子增益、启动延迟子增益和网络消耗子增益,几个v参数分别对应子增益的权值。而媒体质量子增益、启动延迟子增益和网络消耗子增益又与视频信号的峰值信噪比、网络往返延迟、媒体片段大小等因素有关。
网络增益,是指网络传输的消耗代价。由于网络带宽是一项竞争性资源,所以在Cache选择算法上需要考虑这个因素。比如,如果对一个用户请求来说,几个Cache的可用输出带宽有显著差别,则应该优先选择链路带宽较高的Cache:出用户增益和网络利用率增益后,我们定义Cache选择增益为:该注意,在Cache选择算法中,增益的计算依赖于对某些网络参数的测量,当然测量越频繁计算实时准确性越高,但网络参数的测量是要消耗资源的,比如增加了计算负担,增加了网络带宽占用。所以在设计算法的时候应该考虑参数测量的效率问题。所幸对于现在的IP网络而言,很多网络参数还是比较稳定的,包括链路有效带宽、环路延迟等,所以测量所带来的资源消耗尚可接受。
上面所述的Cache选择算法设计思路,既适用于选择对用户提供服务的Cache,也适用于选择父Cache。