大家好,我叫张观石,来自虎牙直播,虎牙直播是弹幕式的游戏直播平台,我在公司负责业务运维相关工作。看直播已经成为一种重要的娱乐方式,技术驱动娱乐是虎牙的slogan,我今天要分享的是运维技术如何驱动直播平台整体技术稳定性。
今天我会分享的几块内容。
- 首先会介绍下直播技术的总体架构和挑战;
- 然后给大家分享下我提炼的可靠性工程、稳定性保障工作的一个能力框架;
- 接着讲下在直播音视频的稳定性保障中的应用。包括几个核心指标和评估体系,如何度量直播的稳定性;
- 接下来会介绍如何提升可靠性的感知能力,可靠性下降了,故障来了,如何快速感知到,这包括了监控、告警、响应以及一些技术点;
- 再然后会讲下我对能力框架中的快速修复和保障能力的认识。快速修复能力、恢复能力是运维能力的体现,是缩短故障时长的关键点;
- 最后会再次总结下我对可靠性工程的能力框架和几点思考。
1.直播音视频传输的总体技术架构
首先讲下直播音视频技术的总体架构和挑战。
大家都看直播,简单来讲直播就是主播开播,观众看直播。
技术流程是主播设备安装直播软件,进行采集、编码、封装成为RTMP流,然后推流,为了看多个码率档位清晰度的需求要转码、如果有P2P还得进行切片,为了政策风险要截图鉴黄录制,要经过内容分发网络传输到离用户最近的节点,然后观众通过直播软件连接到边缘节点,把流拉下来,进行解码,渲染,这就看到直播的内容了。
虎牙很早就实现了混合云/多云的架构。虎牙直播有自己的传输网络,也有多家CDN音视频传输网络。
主播和观众的大概架构是这样的:一个主播可能上行推流到任何一条线路,观众可以通过任何线路去看这个主播的节目。这个架构就有点小复杂,组合很多。当然后台是可以调度的。作为运维的任务是如何在这种复杂场景下保证实时可靠性。
我们看一下单个主播直播的情况。
一个主播会推到一个CDN,然后在多云里面互相转推,在每家云里面有不同的运营商、不同的省市区域,这里面的链路比较长,整个过程是实时的。任何一个节点出现问题,都会影响全局或部分的观众。在实时、海量的情况下,怎么保障直播质量是有一定挑战的工作。
比如直播质量中最常见的卡顿,卡顿有很多种的原因,有可能是网络延时,有可能是丢帧或主播端就卡了。上面说的那些其实每家直播平台都是这样的,那么直播真正的技术挑战是在哪里?
直播平台技术栈中开播有10+种开播方式,推流方式4,5种,推流转推情况较复杂,各种码率音视频处理技术,比如H264,H265,各种音视频协议,各种码率档位等,采集设备效果不一,移动端版本迭代难等,CDN音视频技术不完全统一,当然国内看直播的观众,网络情况运营商情况,地区情况也是参差不齐,作为平台方要解决等。