视频 CDN 融合资源的调度策略探索落地

背景介绍

随着 B 站直播常量用户带宽需求增多,结合自身的直播流模型,进一步推动了 CDN 边缘节点的基建工作,这些节点具有很大的异构性,能力差距大,价格不一,计费方式不同。如何利用这些异构资源,在保障稳定性的前提下,在成本和质量之间做好动态平衡,是我们需要解决的问题。

调度体系设计

整体调度架构体系设计如下,采用分治思想,问题拆解,分层解决

每一层都有一个要解决的核心问题:

  • 成本调度层:
  • 按照资源质量与带宽单价将CDN 边缘节点分类为多个资源池。
  • 对于SLO 质量强保障的资源,根据 CDN 边缘节点的不同计费方式和单价,结合用户需求,计算出每个边缘节点的可用带宽;
  • 对于SLO 质量弱保障的资源,采用启发式策略规划+基于业务质量的动态调整。
  • 资源调度层:根据不同业务的需求带宽,将成本调度计算出来的每个边缘节点的可用带宽分配给不同业务。
  • 业务调度:业务更细粒度的调度策略,如:直播按流名调度、点播按稿件Id调度。决定了每个用户在访问某个流名/稿件时,应该访问的边缘节点。
  • 智能调度网关层:作为整个调度系统的策略输出,对接不同业务,给予不同策略的节点覆盖列表

本文主要介绍成本调度层、资源调度层。

成本调度层

资源计费方式介绍

目前B站 CDN 边缘节点分为以下几种计费方式:

  • 月95
  • 按照每月的流量使用情况结算费用。对于某个服务器,每五分钟进行一次流量统计, 记录这个五分钟内的流量峰值,将每五分钟内的流量峰值记录下来,取30天内最高的5%的峰值作为计费的依据。即将30天内的流量使用情况按照从高到低排列,取排名前5%的峰值作为计费基准。
  • 日95月平均
  • 通过计算每日的95峰值带宽,然后求全月的平均值来进行计费。
  • 包端口:在某带宽上限内使用的实际带宽,收费价格一致。

核心思想

我们按照资源质量与带宽单价分类为多个资源池,根据资源池类型不同,采取不同的资源规划策略。

对于资源 SLO 质量强保障的资源,根据节点不同的计费方式,充分利用带宽,提升带宽复用率;

对于资源 SLO 质量弱保障的资源,在保证用户 SLO 质量的前提下,尽可能提高资源利用率;

策略模型

输入

  • supply:B站所有边缘 CDN 节点的最大能力、计费方式、所在区域、运营商
  • demand:全国不同区域、运营商的用户需求带宽(不区分业务)

输出

  • 每个CDN边缘节点可以使用的最大带宽(成本线+冲顶资源)
  • 每个CDN边缘节点覆盖哪个区域+运营商的用户
  • 当天可以用于冲顶的CDN边缘节点列表;

处理逻辑

区域借调

解决问题:区域内供需不均衡

下图分别为用户分布和边缘节点资源分布,可见边缘节点在一些区域的能力非常冗余,而其另一些区域能力过度欠缺。这种分布不匹配的状况导致一部分区域的边缘节点资源利用率打不上去,另一部分区域的边缘节点资源利用率过高。

我们将这个问题归类为最大流问题。

目的:将资源充足的区域的节点借调到资源不够的区域。

输入:全国所有区域的资源供给情况。

输出:区域A应该借给区域B多少资源。

执行完借调策略后,我们可以得到每个边缘节点可以覆盖的区域,全国供需基本已经达到一个相对均衡的状态,即:每个区域的supply >= 该区域的demand。

成本规划适用于SLO 质量强保障的资源

基于所有边缘CDN节点的最大能力、计费方式、所在区域、运营商数据进行建模,目标函数是最小化所有边缘CDN节点的带宽费用总和。由于不同节点的单价不同,在大于保底利用率的前提下,按照单价梯度控制节点资源的带宽利用率;同时充分利用 95 计费节点的冲顶时间。

启发式资源规划适用于SLO 质量弱保障的资源

核心:在保证用户SLO的前提下,尽可能提高资源利用率

  • Integrated:
  • 收集多轮的SLO、资源利用率的反馈数据,使用 contextual bandit算法,给出资源池预期全局资源利用率;
  • Dispatching:
  • 资源池内的节点进行升/降线,目的是让整个资源池的资源利用率等于integrated模块给的”预期全局资源利用率“。
  • 节点升降线原则:SLO差的节点降线;SLO好的节点升线。

资源调度

核心思想

在成本调度的基础上,定量的进一步对节点的冲顶资源和非冲顶资源做业务级别的划分;

目标:

  • 满足互斥性:每个CDN边缘节点资源大部分分给同一个业务
  • 满足覆盖性:大区内每个业务都有尽可能多的节点去承载

策略模型

输入

  • demand:晚高峰和非晚高峰时期,不同业务、区域、运营商的用户带宽
  • supply:成本调度的输出数据

输出

每个CDN边缘节点可以给不同业务(如:点播、直播、动态加速等,目前直接入了直播业务,正在建设点播业务的接入)使用的最大带宽。

处理逻辑

详细处理逻辑如下:

1.  demand按 业务*区域*运营商划分(目前业务只有直播)

2.  将supply按可用资源从大到小排序(目前supply只是直播资源池)

3.  开始装箱

在直播的落地效果

  • 带宽复用率提升43.5%:

  • 同大区覆盖率提升32.61%:
  • 新策略灰度前同大区覆盖率:

  • 新策略上线后同大区覆盖率:

  • 启发式资源规划,在保障直播业务SLO指标数据情况下,动态调整资源带宽利用率,资源池的卡顿率突刺明显下降:

-End-

作者丨仲昭雪、苏顾云、王喜


这是一个从 https://www.bilibili.com/opus/1025864968860336129 下的原始话题分离的讨论话题