CDN 缓存空间调整优化方法
2021-10-12滕勇隽陈戈
[滕勇隽 陈戈]
1 引言
互联网CP(Content Provider,内容提供者)租用CDN(Content Delivery Network,内容分发网络)时,会向CDN 运营商提出KQI(Key Quality Indicator,关键质量指标)指标要求。在KQI 指标中,欠流率(因CDN 节点没缓存而需向源站实时获取的比率)是非常重要指标,这是由于欠流率未达标时,互联网CP 的业务质量及源站负载会受到影响。
现有CDN 节点缓存的内容是根据节点内容的访问热度来决定的,CDN 节点内部对所存储的内容根据内容访问热度进行排序,节点会定时将热度排序后面的内容删除,以腾出空间存储新的高热度内容。大CP 由于其服务的用户多,其内容热度往往比小CP 的热度高,因此大CP 的内容往往比小CP 的内容热度更高,出现大CP 较冷的内容也比小CP 最热的内容热度高。由于缓存的内容多少决定了内容的命中率,因此,在这种机制下小CP 欠流率容易不达标。
为解决该问题,现有的CDN 通过为各CP 划分专用资源的方式,例如vCDN(Virtual Content Delivery Network,虚拟内容分发网络),来解决欠流率问题。在划分专用资源的方式下,每个CP 会分配固定空间的存储,相互独立,不能共享。因此,这种机制下CDN 节点的复用率不高,容易造成资源浪费的问题。
2 提升CDN 欠流率的总体思路
CDN 欠流是由于CDN 节点内容缓存数量与用户请求的内容数量不匹配而形成的,提升CDN 欠流率最直接的方法是提升各CDN 节点的总缓存空间。但由于CDN 成本制约,提升CDN 欠流率最有效的方案应该是根据目标欠流率,合理为CP 内容进行合理缓存。
由于CDN 承载了多个CP 的业务,每个CP 也有不同类型的业务类型及内容,如视频点播业务、视频直播业务、静态页面等,因此,不同的CP 对欠流率有不同,通过不同业务及CP 的内容欠流率来调节CP 缓存是可行方案。
也应看到,当某CDN 节点存在大部分欠流率不达标CP 的情况,很可能表明该CDN 节点资源不足,通过调整不同CP 不同业务的欠流流很可能无法达到所有欠流率达标,这时应通过请求GSLB 将部分资源转移到其它节点,从而缓解该CDN 节点的缓存空间压力。
因此,提升CDN 欠流率的方法应满足以下要求:
(1)CDN 节点应具备判断CDN 缓存资源是否具备全部CP 欠流率的能力,当无法满足时,CDN 节点应通过CDN GSLB 过载,由GSLB 把流量调度到其他CDN节点;
(2)提升CDN 欠流率的方法应有普适性,可适用于不同类型的业务;
(3)提升CDN 欠流率的方法应易于实施,不影响现有CDN 的缓存算法;
(4)提升CDN 欠流率的方法应具备个性化配置能力,通过定义不同的欠流率为不同质量要求的业务提供不同等级的服务质量。
3 CDN 缓存空间调整方案
本文提出的一种缓存空间调整方法,主要通过缓存空间调度服务器及安装在CDN 节点的欠流率监测上报两个模块的协同完成,这两个模块交互接口如图1 所示。
图1 缓存空间调度系统示意图
缓存空间调度服务器根据内容分发网络CDN 节点以预定周期上报的各内容提供者CP 的欠流率,判断是否存在欠流率不达标CP。在存在欠流率不达标CP 的情况下,调整指定CP 的CP 热度变量。将指定CP 的下发给CDN节点,以便CDN 节点利用CP 热度变量对指定CP 的内容热度进行调整,以调度各CP 的缓存空间。
CDN 节点欠流率监测上报,如表1 所示。
表1 CDN 节点欠流率上报参数表
其中CP 热度变量计算方法如下:
CP 热度变量=(Target_Rate-Real_Rate)*HotdegreeX+HotdegreeX
CDN 缓存空间调整流程如图2 所示。
图2 缓存空间调度流程图
(1)根据CDN 节点以预定周期上报的各CP 的欠流率,判断是否存在欠流率不达标CP。
(2)发现CPx 的欠流率不达标。
(3)判断是否存在其它欠流率不达标的CP。若不存在其它欠流率不达标CP,则执行步骤4;若存在其它欠流率不达标CP,则执行步骤8。
(4)在欠流率达标的CP 中选择出欠流率最低的CPmin。
(5)分别计算CPx 和CPmin 的CP 热度变量。例如,若CPx 的热度为HotdegreeX,当前欠流率为Real_Rate,目标欠流率为Target_Rate,则CPx 的热度变量为:(Target_Rate-Real_Rate)×HotdegreeX +HotdegreeX
(6)相应地,也可利用上述公式计算CPmin 的热度变量。
(7)将CPx 和CPmin 的CP 热度变量下发给CDN节点,以便CDN 节点利用CP 热度变量对CPx 和CPmin的内容热度进行调整,以调度各CP 的缓存空间。
(8)经过预定时间间隔,判断CPx 当前的欠流率是否达标。若CPx 当前的欠流率仍未达标,则返回步骤3。若CPx 当前的欠流率已达标,则结束调度。
(9)向GSLB(Global Server Load Balance,全局负载均衡)单元发送流量调度请求,以便将CDN 节点上的部分流量调度到其它CDN节点。
(10)若存在多个CP 欠流率不达标的情况,表明CDN 节点当前的资源不足,这时可通过向GSLB 发送请求,以便将部分流量调度到其它CDN 节点,从而能够减少缓存空间需求,解决当前多个CP 欠流率不达标的情况。
4 应用效果
本文方案在CDN 应用中发现,当不是大部分CP 发生欠流率不达标情况下,通过本方案可快速降低CP的欠流率,适用于大部分的CDN 应用场景。