优酷播放场景下的云控平台

简介: 针对优酷的多种播放渠道(移动端、PC 软件、OTT、H5 等),多种播放场景(直播、点播 等),需要一种可快速将相关配置下发实践并可观察对应播放体验指标变化的配置系统。这种配 置系统需要具备快速配置下发、实时数据反馈并结合优酷的播放场景配置改善播放体验的策略。

作者| 阿里文娱技术专家 弥少

一、背景与概要

针对优酷的多种播放渠道(移动端、PC 软件、OTT、H5 等),多种播放场景(直播、点播 等),需要一种可快速将相关配置下发实践并可观察对应播放体验指标变化的配置系统。这种配 置系统需要具备快速配置下发、实时数据反馈并结合优酷的播放场景配置改善播放体验的策略。
针对这种需求,我们开发了云控平台,云控平台除提供基础的配置能力外,结合优酷的播 放场景,重点在可靠性和实时性、AB 分桶、数据联动、易用性等方面有所改进,更贴近优酷 播放的业务场景。同时云控平台还支持带有策略决策和运营能力的专题场景,例如优酷的流控 场景等。

二、高可靠、高并发、高生效率

云控平台的基础能力之一就是配置能力,如何将配置实时并且可靠性地在端侧生效是配置 能力的重要目标。以往的配置下发平台要么使用拉模式要么使用推模式,都各有利弊。

1. 拉模式

优点:客户端可多次拉取,并且可采用短连接,拉取的效率较高。后台服务架构比较简单,容易实现。
缺点:依赖于拉取的时机,易造成生效时效不够高的问题。客户端通过轮询机制,会频繁拉取,浪费资源。

2. 推模式

优点: 灵活配置,可按需推送,触达率高。
缺点:需要在服务端与客户端之间实现长链接,比较消耗资源。 需要实现去重下发,防止相同的配置多次下发到端上。

3. 云控平台使用推拉结合的模式

云控平台通过提供两个接口来进行配置的下发和更新,通过启动时全量拉取配置与心跳时 变更配置推送配置,推拉结合的方式更快速有效地将配置更新到端上。在心跳接口,云控通过 识别出变更的配置项,只将变更配置项下发,大大减少了配置项的下发总量。
1)APP 启动时全量更新配置接口-拉接口;
2)APP 前台保活期间的心跳接口-推接口;

image.png

在生效率上,云控平台在 3 分钟可达 95%以上,3 小时可达 99%以上的生效率,满足业务 场景的需求。
在云控平台内部,底层使用一套规则引擎服务,为了提高引擎服务的性能,所有的配置项 都被会加载到服务器的内存中执行,在服务器内部将配置条件和匹配内容的通过 key-value 结构 进行存储,引擎服务经过配置的优先级来执行所有的配置条件,当有命中后,可快速获得匹配 对应的内容,并将配置的内容返回给端上。每个设备命中的配置项集合都会被设置一个 md5 值 下发,这个 md5 值既可让云控平台追溯每个设备命中的配置项集合,也可让云控平台知道这个设备的当次请求是否涉及配置变更,在心跳接口中可下发有变化的配置内容,提高云控平台的 心跳接口的性能和下发能力。考虑到实际配置的内容会越来越大,云控平台在初期设计的时候, 就考虑到了使用 CDN 的 URL 等多种格式下发的方式,后期可以无缝切换到 CDN 的 URL 来进 行配置下发。
目前优酷的移动三端、PC、Web 的播放业务已全面接入云控平台,已覆盖优酷的点播、直 播、下载等主要业务场景,云控平台服务峰值 QPS 达 10 万+。同时 OTT、APP 的上层业务也 正在接入中。云控平台经历了 2019 年七十周年国庆大阅兵、2019 年猫晚等大型项目的历练, 保障了流控、点播直播智能档、限速、P2P、H264/265 转码、HDR 等功能的顺利有效地进行。

三、AB 分桶

AB 分 6876 在互联网行业是一种测试新功能的有效手段。AB 分桶一般将设备请求的参数 做 HASH 分布,通过 HASH 结果做分桶分布,并在不同分桶上使用不同的配置,来测试新功能 对业务的影响。例如下图根据设备 ID 进行 10%的分桶匹配算法。

image.png

云控平台 AB 分桶也是依据将设备 ID 做 HASH 算法,根据 HASH 结果应用不同的配置来 进行。为了适应更复杂的业务需求,云控平台实现了一套多层多分桶的计算框架。

1. 多层多分桶计算框架

云控平台将配置项分为多个 namespace,每个 namespace 在逻辑上对应一个功能点,每个 namespace 内,又分为多个具体配置项 config。收到每次请求时,云控平台根据以下原则通过规 则引擎服务进行匹配:
1)单个 namespace 内,根据配置项的优先级进行匹配,最多命中一个配置项。
2)Namespace 可命中多个。
用户可以在不同的 namespace 上的 config 使用不同或相同的分桶算法,也就是说下图的分 桶 HASH 算法 1、2、3 既可以是一样的算法也可以是不同算法;这种方式的好处在于可以提供 给用户提供类似笛卡尔乘积的配置组合,如果选择了分桶 HASH 算法一致,则说明用户想让不 同 namespace 之间的配置带有某种关联性,否则就不想让不同 namespace 之间的配置带有关联性。

image.png

下面给出几个例子来说明:
例 1:namespace1 是控制 buffer 的,namespace2 是播放限速的,选择相同的分桶算法 10%, 则可以让 10%的用户一直命中 namespace1/config1+ namespace2/config1 的组合,可以用来验证 某一buffer 情况下播放限速的线上效果。
例 2:namespace1 是控制 buffer 的,namespace2 是播放限速的,选择不同的分桶算法 10%,可以用来验证不同的 buffer 配置与不同的起播档位两个配置的线上效果,因为使用了不同的分 桶算法,两个配置并没有关联性。
例 3:namespace1 是控制智能档的策略,namespace1 内有 config1 积极智能档和 config2 保 守智能档两个配置项,如果 config1 配置前 50%的分桶,config2 配置了后 50%的分桶,可以用 来验证不同智能档策略下的线上效果。
为了区分不同分桶的配置,云控平台提供了分桶区间热力图,可以直观的展现线上已配置的不同 namespace 的分桶前后关系,多层多分桶计算框架对于优酷线上验证复杂配置提供了有效的手段。

四、数据联动

数据联动功能是云控平台比较贴近播放场景的一项特色功能,云控平台通过将原始数据层 的数据经过离线ODPS 多维聚合和 BLINK 实时计算后,可以作为数据联动的供给源。在云控 平台的数据展示中,可以实时和离线地展示配置的命中情况(vv/生效率),配置对应的所有关 联播放核心指标的变化情况,并可实时和离线对比各个配置项的各维度指标的数据。

image.png

同时,在数据联动中,可以实现实时上报反馈和实时圈人的功能,可以将实时反馈上报的 数据加入到配置条件中。反馈机制通过实时数据处理与缓存来实现。
实时上报反馈的数据包括客户端的主动或被动行为。主动行为包括:用户切换清晰度、seek、 倍速播放、拖动等;被动行为包括:卡顿上报、耗时上报、起播上报等。
例如:某一配置与卡顿项相关联,在配置的条件中添加卡顿率大于多少则此配置就不生效,可以保证该配置不对卡顿率指标有负面影响。

image.png

圈人是指根据给定的条件从所有用户中圈出想要执行配置的人或设备。圈人分为离线圈人和实时圈人两块,离线圈人通过 ODPS 的离线任务实现圈人的功能,实时圈人通过 BLINK 的 实时计算实现,实时计算可以将多维的上报数据进行全链路关联后,作为配置的条件自动加入 到引擎的匹配过程中,可以更动态地控制匹配的执行,达到端、云闭环联动的效果,目前我们的实时数据联动的时效可以达到分钟级别,对于提升用户的播放体验起到了很好效果。

相关文章
|
6月前
|
小程序 JavaScript 开发工具
Uniapp 对接抖音短剧播放器 video-player 坑点解决
Uniapp 对接抖音短剧播放器 video-player 坑点解决
341 1
|
2月前
|
开发工具
uniapp, 短剧视频类App实现参考,支持滑动播放,仿抖音 仿陌陌 短视频 无限滑动播放 视频流
阿里云点播服务web播放器sdk,短剧视频类App实现参考。仿抖音 仿陌陌 短视频 无限滑动播放 视频流。无uniapp video 原生组件的层级、遮挡、覆盖问题,适合与不同功能视图组合使用,实现丰富的应用功能。
uniapp, 短剧视频类App实现参考,支持滑动播放,仿抖音 仿陌陌 短视频 无限滑动播放 视频流
|
6月前
|
存储 编解码 CDN
【视频媒体】深入了解直播视频流
【视频媒体】深入了解直播视频流
68 0
【自媒体直播】手机摄像电脑控制OBS多平台推流解决方案
【自媒体直播】手机摄像电脑控制OBS多平台推流解决方案
403 0
|
数据采集 编解码 搜索推荐
短视频直播系统,如何实现高质量直播场景
短视频直播系统,如何实现高质量直播场景
|
Web App开发 移动开发 编解码
熊猫TV直播H5播放器架构探索
本文来自熊猫TV音视频技术专家姜雨晴在LiveVideoStackCon 2017上的分享,并有LiveVideoStack整理成文。
3886 0
|
编解码 算法 前端开发
【干货】淘宝人生里的虚拟人像渲染技术(含直播回放)
本文根据4月20日淘系技术前端团队出品的「阿里淘系用户体验优化前端实战系列直播」——《淘宝人生里的虚拟人像渲染技术》整理而成。
【干货】淘宝人生里的虚拟人像渲染技术(含直播回放)
|
算法 前端开发 JavaScript
|
Web App开发 编解码 负载均衡
一对一语音直播系统源码如何解决音视频直播技术难点
直播作为实时性和互动性要求较高的音视频应用场景,存在非常多的技术难点,就连一对一的直播模式也毫不例外。比如低延迟、流畅性、回声消除、国内外互通和海量并发等问题,都是开发过程中的难点。但是,在开发过程中如果具备了优质的一对一语音直播系统源码,那么这些难点可能都会得到一定的解决。
一对一语音直播系统源码如何解决音视频直播技术难点
|
JSON 自然语言处理 算法
优酷直播实时美颜技术实践
随着移动设备的发展,美颜已成为多媒体内容生成链路中不可缺少的一种基本能力,尤其是在来疯直播秀场业务的场景下,主播的颜值就意味着生产力,直接影响主播及平台的收入。
优酷直播实时美颜技术实践
下一篇
无影云桌面