开发者社区> livevideostack> 正文

乐视云如何炼成弹性支撑百万级别直播流

简介: 在观看视频直播中,难免因打断错过精彩片刻。
+关注继续查看

在观看视频直播中,难免因打断错过精彩片刻。乐视云 “月光宝盒”可以完美解决直播过程中任意时间段时移回看,并在直播结束后提供瞬时秒回功能,快速将直播信号转为点播信号进行分发,大幅提升了直播观看体验,也同时给直播运营提供了更多的可能。本文来自乐视云投稿,详细介绍了乐视云是如何做到弹性支撑百万级别直播流的。


文 / 刘斌


项目背景


在观看视频直播中,难免会发生因为各种打断而错过一些精彩片刻的情况,这个时候,如果我们能快速穿越回去,会是怎样一种体验?乐视云“月光宝盒”可以完美弥补遗憾,让精彩不再错过。 


640?wx_fmt=png&wxfrom=5&wx_lazy=1


项目挑战


“月光宝盒”是乐视云直播 PaaS  平台的一个重要服务,可以完美解决直播过程中任意时间段的时移回看,也可以在直播结束后,提供瞬时秒回功能,快速将直播信号转为点播信号进行分发,大幅提升了直播观看体验,也同时给直播运营提供了更多的可能。月光宝盒历经三次产研迭代,见证了直播流由万增至百万的快速增长,一路上我们遇到了哪些挑战?直播流的分配策略是如何进化的?源站的切片、索引存储需要做出哪些升级?以及在持续迭代过程中如何确保平滑升级等等问题, 接下来我们将从“月光宝盒”三次大的版本迭代中做出解答。


月光宝盒 V1.0


直播 PaaS 平台由原支撑乐视集团业务的直播后台技术部蜕变而成,已经持续服务于乐视网、乐视电视、机顶盒、乐视体育、乐视音乐等超过 5 年时间, 早期的直播流量在万级别(注:直播流 ID 个数,可以理解为一个直播流就是一路信号),直播信号通常以 7*24 小时长直播为主,发布会、演唱会等短直播为辅(注:这类短直播无直播内容时,通常会配置一个指定的备片来持续代替直播信号源,以提升断流时用户播放体验),因此在 V1.0 架构中,这阶段的直播生产调度分配算法采用简单的配置策略,将直播流与设备组进行关联绑定,直播流对应的切片与索引采用简单的本地存储。直播、时移回看、打点录制均在该组设备中并行提供服务。


640?wx_fmt=png

V1.0 架构图


注:

  • 绿色表示直播流长期处于使用状态。

  • 紫色表示直播信号暂时中断,但源站配置了播放备片功能,会播放备片信号,提高直播断流体验。


640?wx_fmt=png

附:左图为正常直播信号,右图为直播信号中断时播放的备片。


随着直播 PaaS 平台的开放,海量直播流的接入,而商业直播的需求主要以秀场、发布会等间隔较短的直播为主,此时如果仍按照原有均衡分配直播流策略,每个直播都分配单独服务器,会导致服务器数量成倍增加,资源成本陡增,为解决这个问题,月光宝盒架构也升级至 V1.1。


月光宝盒 V1.1


在 V1.1 版本中,直播流均按需生产,为了确保客户所接入的流量安全,调度会同时分配给主备两台设备来生产该流,在主节点故障时自动执行主备切换,确保对用户播放无感知。


随着业务的快速增长,日活直播快速上升,平台对直播源站集群进行了扩容,但由于直播流分配策略会优先与时移数据绑定(注:该策略为确保全程回看数据在同台设备连续),因此在实际运行的过程中可能会出现比较严重的偏压问题,会导致比较明显的热点问题,需要通过集群上报流监控状态判断是否需要对备流进行迁移,以实现集群的再均衡。


640?wx_fmt=png

v1.1 架构图


注:

  • 虚线箭头表示发生偏压时,部分直播流发生迁移。

  • 绿色表示正在播放的直播流。

  • 红色表示直播流即将被迁移。

  • 黄色表示直播流被迁移后。


通过流迁移的方式我们缓解了热点问题,但这种方式有一定的滞后性,我们需要新的架构来解决这个问题,在介绍新架构方案前,首先快速介绍下直播业务里面用到一些协议和文件,HLS(Http Live Streaming)是由 Apple 公司定义的用于实时流传输的协议,HLS 基于 HTTP 协议实现,传输内容包括两部分,一是 M3U8 描述文件,二是 TS 媒体文件。M3U8 文件是用文本方式对媒体文件进行描述,由一系列标签组成。


随着业务持续增长,整个直播集群的存储压力会变得比较突出,因此需要尽快消除 IO 瓶颈。在此背景下,我们首先将 TS 切片迁移到了 LeS3(乐视云对象存储系统), 但对于视频索引的存储仍然按照主备方式管理,所以下一步重点就变成了寻找存储 M3U8 的索引集群存储解决方案,由于不同直播流对切片设置大小不一(通常设置在 2~10s),譬如北京其中一个集群最大峰值写入约在 3w 左右,业务属于写多读少,对于传统主从 RDS 来说,单机无法承受,需要做分库分表,而分库分表有很多弊端,比如对业务侵入太多、应用不友好,普遍的采用 Proxy 方案不但对技术有要求,而且还有非常多的局限性,视频直播需要灵活的扩展性,而分库分表对再扩容的成本非常高,会为业务埋下隐患。这期间我们接触到了 TiDB,其支持多活、无单点、支持横向扩容特性且兼容 MySQL 等特性与我们的业务需求非常吻合,加之 TiDB 安装部署、监控等细节做得非常到位,我们决定测试看看效果。


月光宝盒 V1.2


经过一周左右对TiDB的常用场景测试、压测,测试结果比较符合预期,从存储容量、QPS、响应时间来看,均可支持我们“快速穿越执行时移回看”的需求。测试期间也跟官方的同学进行技术交流,确定了后续生产环境中如:部署架构、设备选型、表结构及索引优化。在生产环境的 TiDB 生产集群上线后,我们将线上原有直播流的 HLS 回看的索引在原 V1.1 架构进行本地存储外,同步复制至 TiDB 中,以便于真实生产环境中来验证TiDB的稳定性。观察一月多,运行平稳,期间我们做部分故障演练,如将PD、TiKV、TiDB中某一台重启,并未出现服务不可用或丢数据的情况!接下来对北京一个直播集群月光宝盒服务进行了试点改造,采用灰度切流方式逐步将直播流的时移、回看、秒回请求切至TiDB ,运行稳定。目前全国各地直播集群的月光宝盒服务跑在TiDB服务之上。


640?wx_fmt=png

v1.2 架构图


附一张 TiDB 在月光宝盒 V1.2 中的架构图:


640?wx_fmt=png


总结回顾


前面已将“月光宝盒“历经3个阶段详述,最后我们再用一张表做下简单的回顾。


640?wx_fmt=png


上线效果数据说明


通过将 M3U8 数据统一存储到一套 TiDB 集群,大幅度简化直播源站的结构,从源头解决负载偏压、扩展的问题,同时 TiDB 很好的解决了这类写多读少的业务场景,具体体现如下:


  • 单机 HLS 设备生产性能提升 200%。

  • 简化直播流分配调度策略,消除集群内偏压问题。

  • 简化直播源站结构,消除上下游关联系统耦合。

  • TiDB 天然的高可用提升了系统的可用性。

  • 依赖 TiDB 的负载均衡,优雅的解决了直播流量弹性扩展的问题。


现状及计划


目前月光宝盒 v1.2 已持续稳定的服务于标准直播、移动直播、直播CDN等三大业务线,其中北京一个核心直播集群的 TiDB 峰值 写入 QPS 达到 2.5W 左右,经过 CDN 及 HLS_Consumer 的双重缓存后读请求峰值约在 5k 左右,下一步我们会将直播内部的一套数据分析系统也迁移到 TiDB中。

大家对“月光宝盒”研发技术感兴趣,也可以关注乐视云公众账号,感兴趣同学达到一定数量后,我们会举办一些线下活动进行技术分享。


单个直播集群对应的 TiDB 集群总体配置如下:


640?wx_fmt=png


最后再次感谢 PingCAP 的同学贡献的 TiDB,太赞了!期待后续持续合作!


作者:刘斌,乐视云工程师,主要参与乐视直轮播、商业直播 PaaS 架构设计迭代


公司介绍


乐视云计算有限公司(以下简称乐视云)是新乐视上市体系中核心业务版块之一,负责新乐视体系所有基础设施服务和云计算服务。乐视云围绕视频云和物联云两大方向开展业务,致力成为领先的家庭互联智能娱乐云技术提供者,以物联云为核心创造更智能的家居社区解决方案。


乐视云在视频行业有强大的技术储备,在视频领域中的点播、直播、分发、媒体技术、视频内容理解等方面处于行业领先地位;而物联云将围绕家居安全、智能互联、环境健康等方面提供全部解决方案。


2015年到2017年的2年间,乐视云曾成功服务于除新乐视外上万家企业客户,如熊猫TV、战旗TV、快手、人人网、凤凰网、百度视频、OPPO等大型企业;在广电领域,乐视云先后与中国蓝TV、天府TV、四川网络广播电视台等广电企业建立开放型战略合作,促进新型全媒体产业融合。2016年曾融资10亿人民币,是乐视生态第四个独角兽。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
支撑千万级实时并发,阿里云助力快速提升视频直播可靠性
如果您计划使用阿里云的视频直播产品进行一场在线直播,并且此次直播活动对您非常关键,想最大程度避免直播中出现任何质量问题,本文将为您介绍较为通用的提升直播可靠性的方案。
318 0
EMQ
车联网平台百万级消息吞吐架构设计
本文将主要介绍如何针对百万级消息吞吐这一需求进行新一代车联网平台架构设计。
229 0
百万级QPS,支撑淘宝双11需要哪些技术
又到一年双11,相信大部分同学都曾经有这个疑问:支撑起淘宝双11这么大的流量,需要用到哪些核心技术?性能优化系列的第二篇我想跟大家探讨一下这个话题。
502 0
声网:如何自研支撑百万用户的毫秒级实时音视频系统?
大规模实时音视频(RTC)是疫情时代火热的在线课堂、直播、电话会议等的技术基础,但对于多数工程师来说,自研 RTC 系统的架构设计在客户端、服务端、运维、测试和质量监控上仍存在很多难点。因此我们整理了 QCon 全球软件开发大会(2021)北京站上,声网 Agora 行业架构师董海冰分享的三部分内容:RTC(实时音视频)的基础概念、场景及特点分析;自研 RTC 的架构设计和难点;展望 RTC 未来,帮你扣开实时音视频系统架构设计的大门。以下为老师分享的正文。(下文以董海冰老师第一人称叙述)
429 0
多数据中心的百万级消息服务实战
多数据中心的百万级消息服务实战
125 0
在线教育流量暴涨 阿里云PolarDB分钟级扩容保障教育平台不“卡顿”
疫情期间,停课不停学,在线课堂成为首选模式,由此带来流量洪峰。2月17日,开学第一天,包括学习通、慕课网等在内的多家在线教育平台出现“卡顿”和“死机”,而阿里云数据库通过分钟级扩容,保障了沪江教育、猿辅导、VIPKID、洋葱学院等多家教育平台的平稳。
239 0
精准容量、秒级弹性,压测工具 + SAE 方案如何成功突破传统大促难关?
本次课程介绍在 SAE 场景下,如何借助压测工具与 SAE 弹性能力来应对大促的实践。主要包含 3 部分要点:传统大促面临的挑战、SAE 大促方案以及快速压测验证。
7092 0
淘宝业务稳定性保障实战——诺亚(Noah)自适应流控
诺亚(Noah) 自适应流控 是一种面向结果(保护系统资源不过载)的声明式解决方案,基于反馈控制算法,避免了基于Load限流无法确定性的保障系统稳定,解决了人工静态限流配置疏漏或过时的痛点,大幅提升应用抵抗流量冲击的能力。在过去的一年中,诺亚(Noah)保障了大量业务应用系统,已有数万容器大规模部署;稳定性上最高可提升20倍于业务负载流量的上限QPS;最高可提升100%的资源利用率;同时优化了体验与效率。本文通过详细对比诺亚(Noah)自适应流控与基于Load限流两种系统保护方法,来说明诺亚(Noah)的优势,以及采用面向结果的声明式解决方案的实战经验。
1549 0
+关注
livevideostack
LiveVideoStack是专注在音视频领域的技术社区媒体,成立于2017年初,通过LiveVideoStackCon等技术大会、技术培训、高质量技术内容及咨询服务,推动相关开源项目与最佳实践普及和传播,帮助技术人成长,解决企业发展中的技术难点。
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
服务百万级企业的技术运营之道
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载