一、概述
直播业务具有实时性强,复杂度高,排查链路长,影响面大等特征,线上问题如果不能立刻排查处理,分分秒秒都在影响用户的观看体验、主播的收入。
但各端的问题可能都只是表象,例如,一个看似简单的画面卡顿问题,可能涉及到编码器配置、网络带宽分配、服务器负载等多个方面,各个团队经常在等待合作方的反馈,一整套流程下来,一个线上问题的定位可能要消耗掉数小时的人力。
我们迫切的需要一套高效的跨端实时排障系统!
为此我们采取了以下措施:
这些措施带来了显著的成效:
二、技术方案详解
1. 方案设计

如上图所示,整体全链路排障建设可以分为数据采集、数据处理&存储、可视化工具建设3大块。
在开始介绍实现方案之前,需要简单介绍一下OpenTracing,它是业内实现分布式链路追踪系统通常会采用的方案,我们在后续的埋点和上报组件设计也对它进行了一些参考。OpenTracing定义了追踪数据所需要的操作和数据结构,帮助开发人员实现分布式追踪的能力。OpenTracing里面有两个比较核心的概念,简单说明一下:
Trace:Trace代表一条追踪路径,它由多个Span组成,存在一个唯一ID
Span:Span代表追踪路径中的一个时间跨度,包括操作名称、开始时间、结束时间等信息,由SpanID作为标识。由多个 Span 可以形成一条追踪路径。Span还定义了父子、跟随两种关系。在Span上下文中,记录和维护了Trace的ID和当前Span的ID。
下图是OpenTracing的模型图,它描述了由多个Span组成一条追踪路径:
