前言
本文为爱奇艺智能内容中台系列稿件的第一弹,接下来我们还会陆续为大家带来爱奇艺在智能内容生产、运营上的一系列探索,敬请期待。
无人值守系统是爱奇艺内容中台的一个重要智能化组件。
首先,对于业务密度大、流程长、依赖服务多的业务系统而言,在实际运行当中,故障的出现是一种常见现象,某种程度上是一种常态。所以故障出现后,能及时发现、及时处理是对线上运行业务系统的必然要求。常规的方式是报警+人工介入,这种方式导致了必须有人值守,而人工介入的时效性不好保证,同时人工成本也必然增加。
爱奇艺内容中台同样面临上述问题,尝试通过技术手段解决系统复杂性带来的问题,是本系统的基本思路,也是中台智能化的重要方向。对比传统的监控系统,我们需要更智能化的服务来完成监控的同时,兼顾故障智能化处理,同时又方便其他处理手段介入。无人值守系统是在上述背景下由爱奇艺内容中台研发团队设计研发的智能化开放式故障值守系统。
一、无人值守的目标
无人值守系统的目标是辅助业务系统达到流程自动化、结果可信赖、无需人工值守。
在项目设计之初,我们的初衷是:在爱奇艺中台节目生产过程中不需要人工盯盘来保障节目生产流程正常、上线准时。在出现问题的时候及时发现、自动修复、风险预警、通知人工处理等以保障节目准时上线。
基于系统的目标,需要系统具有如下能力:
二、整体架构介绍
概括起来,基本思路是:首先实现业务系统运行情况的监控功能,将业务运行数据和异常收集到无人值守系统,在此基础上,通过对数据的实时智能分析,实时发现系统运行故障和业务数据异常情况。然后交由故障和业务异常处理模块进行异常的智能处理,从而达到自动化异常和故障处理,最终实现无人值守和系统智能化恢复的目的。
系统运行流程介绍:
- 采集生产环节数据到无人值守系统,这里主要通过爱奇艺的中台数据中心采集。业务系统投递数据到中台数据中心,无人值守系统从中台数据中心采集数据。
- 由决策引擎对采集的数据进行实时分析,根据SLA、异常、阈值等配置分析出异常数据,形成单独的事件。
- 将事件投递到事件处理引擎Beacon。
- 事件处理引擎根据不同事件配置的处理流程进行处理。事件的处理流程完全配置化,支持故障修复、报警通知、故障恢复检测、故障统计等。
- 训练引擎使用中台数据中心的离线数据训练系统故障分析模型,模型数据再提供给决策引擎用于决策。
三、核心模块介绍
下面逐一介绍系统的核心功能模块:
3.1 运行数据实时采集模块(基于中台数据中心)
通过爱奇艺内容中台团队实现的OLTP基础组件(中台数据中心),实时采集各个功能模块的运行情况和业务数据进度和状态。OLTP基础组件(中台数据中心)给爱奇艺内容中台实时分析处理提供支持,中台运行的各类数据可以很方便的投递到该组件,并且提供了数据的监听和查询功能,能支持TB集海量数据的管理和维护。中台数据中心系统会在后续的系列文章中详细介绍,这里不再展开。
数据采集流程:
下面以专业内容生产过程(PPC)为例:
制作投递:制作服务运行过程中,将制作状态、成片生产状态,投递中台数据中心。
运营流生产投递:运营流生产过程中将视频流生产状态、音频生产状态、字幕生产状态投递中台数据中心。
审核投递:审核系统将审核状态、审核时间等信息投递中台数据中心。
发布投递:发布系统将码流发布状态兜底中台数据中。
中台数据中心获取到数据后,发送数据变更通知到RMQ队列,无人值守系统监听数据变更,将数据拉取到无人值守系统。从而获取节目从制作到最终发布的运行数据,完成数据采集。
3.2 决策引擎
基于采集的数据,实时分析系统和业务运行情况,决策引擎主要提供如下功能:
错误探查:实时探测系统和业务错误,对错误进行统一管理,发送事件。
超时预警:基于业务节点的SLA配置,对超时业务行为进行探测和统一管理,发送事件。
可配置化策略:主要包括业务功能无人值守接入的配置和业务功能的SLA配置、权限配置、统计通知配置等。
决策引擎的运行就是服务边工作边收集进度及系统运行信息,不断check服务进度是否正常、是否有异常状况或者超时状况,旨在能够在出问题时的第一时间发现问题。
按照下图的逻辑继续工作:
服务模块启动后,发现失败或者超时后,通知失败和超时事件给外部,同时,检测系统业务单元的运行进度,判断进度是否正常,不正常的通知进度滞后事件给外部。
上面介绍了逻辑流程,下面介绍服务模块的运行逻辑:
服务模块的主要概念:
数据源:数据源主要是中台数据中心,播控的部分数据从RMQ采集。数据源的数据由业务系统投递到中台数据中心。
Process:完成数据从数据源采集到无人值守系统,不同的业务分别有不同的process,不同的业务会有不同的采集处理方式。
Filter:完成数据的过滤,采集过来的数据有些是系统不需要的,有些字段是不需要关心的,filter负责把无效的数据过滤掉。
Transform:数据的转换,统一转换成决策需要的数据结构。
规则模块:规则的执行,承接transform过来的数据,执行配置好的规则,输出成功、失败、开始三种规则结果。
决策模块:决策模块是做超时判断的,超时判断和普通的成功、失败不同,需要不停比较当前时间和进度来判断任务是否超时。
延迟消息模块:通过延迟消息,定时未来某个时间来校验业务的运行是否超时。
Sink回写:超时、超预期上线时间等结论回写数据源。
服务模块运行按照上面概念的顺序运行,运行中发现的事件投递给外部。下图:
3.3 事件处理引擎Beacon
事件处理引擎Beacon是自研的接收决策引擎的事件并进行流程化处理的模块。对不同的事件,处理方式千差万别,例如,常见的转码异常有50多种,按照不同的处理方式分成好多组,每组有不同的处理流程,通知不同的研发人员,通知模块内容也不一样。有些事件有标准化的治愈方式,而有些没有治愈方式,需要通知业务人员。针对这样多样化的需要,无人值守的事件处理设计了专门的事件处理引擎(Beacon)。该引擎支持流程的配置化和定制化,预留了抽象度较高的业务对接接口、处理能力扩展方式和流程配置方式。将支持新业务的代价降到了最低。
常见的故障是通过事件的形式发给Beacon处理引擎。
基本架构:
事件处理引擎主要有以下几个部分:
上下文功能:流程执行过程中,上下文参数的获取和保存。上下文的保存和获取实现在Step基类中。
执行引擎:简单可靠的执行引擎,包含了流程执行、执行延迟、执行日志等基础功能,可以执行索引Step类型对象。
流程配置:JSON格式的流程配置,包括Step,StopStrategy,StepAction,WaitTimeAfter等概念,流程按照StepIndex的顺序执行。
Step:步骤,步骤是组成流程的单元,每一步会执行配置的StepAction和StopStrategy。
StopStrategy:流程终止判断策略,Step类的子类,继承了上下文功能。根据配置的状态,判断事件处理的最终形态,比如故障是否恢复的判断。
StepAction:要执行的动作,Step类的子类,比如发邮件、发消息、调业务接口等都可以包装成StepAction。
WaitTimeAfter:本步骤执行完成后,到执行下一步骤的等待时间。
邮件等通知功能对接:对接企业邮件系统等,这是通知功能的基础组件。
业务功能组件:业务功能组件是组成处理流程的基本组件,是系统处理能力的载体。流程处理引擎要支持新业务问题的处理,需要在业务功能组件池进行扩展,从而扩展无人值守的处理能力。
下面是一个简单的流程配置例子**:**
实际使用过程中,针对特定的事件,配置故障处理Action和治愈判断的StopStrategy,从而实现故障自行恢复和治愈。这里故障实际是事件的一种,最后系统能并根据运行数据分析出故障数量和治愈百分比。
四、机器学习应用:生产时间预估
根据无人值守系统的目标设计,无人值守系统要提供对生产过程的预期管理,以实现业务运行可预期的目的。基于采集到的数据,应用机器学习技术,训练各种预测模型,提供业务运行耗时方面的各种预测能力,改进无人值守体验。
说明:无人值守系统的预测模型只适用于资源稳定,或者资源有保障的任务,不考虑资源变动对运行耗时的影响。
下面针对其中的生产时间预估进行说明:
问题类型分析:无人值守系统可以获取丰富的视频生产历史数据,期望形成特征向量,以历史数据计算训练模型,为编辑预估视频生产完成时间。
特征分析:排除空值数据,筛选有价值特征。
比如:类别特征:
'businessType', "channel", 'cloudEncode','trancodeType', "priority", "programType",
"serviceCode", "needAIInsertFrame", "needAudit","bitrateCode", "platform", "resolution"......
数值特征:'duration’
类别特征取值分布分析
算法选择:
训练数据去除异常值,采用XGBoost回归模型。
XGBoost:实现了GBDT算法并进行了算法和工程上的许多改进,(GBDT(Gradient Boosting Decision Tree)梯度提升决策树)。所以叫X (Extreme) GBoosted。
它的基本思路是将基分类器层层叠加,每一层在训练的时候,对前一层基分类器样本,调整不同的权重。测试时,根据各层分类器的结果的加权得到最终结果。所有弱分类器的结果相加等于预测值,然后下一个弱分类器去拟合误差函数对预测值的残差(这个残差就是预测值与真实值之间的误差)。
五、业务系统反馈
无人值守系统为所有对接的业务系统生成业务系统运行情况日报,并推送给业务系统,其中数据主要包括错误、故障统计数据和明细数据,以及是否满足SLA等信息。业务系统基于无人值守反馈的运行数据进行业务改进和系统优化。基于这种方式推动业务系统持续升级改造。
下面是运行情况日报的内容示例:
六、上线效果
在爱奇艺,无人值守系统已经覆盖了爱奇艺内容中台的重要生产环节,对每天几十万的节目生产提供了可靠性报障,无人值守率达到了99%以上,累积发现问题3000多个,自动化处理2800个以上。极大的节约了人力成本,提供了系统运行稳定性和节目按时上线率。
七、未来方向
未来,希望基于无人值守的采集数据提供更多智能化分析,主动发现业务系统的问题,提前预警,提前解决。
另外,系统目前只是针对点状事件进行值守,未来会以节目为整体进行值守和问题处理,提供由点到线,再到面的全方位值守服务。比如以节目为粒度,提供断点续转,后来居上等更加智能化的能力。