B 站小电视全链路性能和效率优化实践 (b站小电视12450)

B 站小电视全链路性能和效率优化实践 (b站小电视12450)

QCon 软件开发大会 上,我们邀请到了 bilibili 多屏业务部 / 资深工程师 郭利兵老师云视听小电视性能和效率优化实践 》话题,在正式演讲之前,我们专门策划这篇文章,介绍郭老师团队在这方面的经验,提前预告话题的重点内容。

首先介绍下小电视,小电视的全称是云视听小电视,就是 bilibili 的电视版,如下图,可以在电视观刷 B 站视频。

首先我们为什么要做性能优化呢?那肯定是我们的性能还不够极致,和业界标杆对比还有差距;为什么我们要做效率优化呢?在降本增效的大背景,降低成本,提升效率是每个互联网公司的必修课。今天的主要和大家分享下我们在过去一年对小电视的全链路的优化实践,包括客户端,后端以及 CDN 相关的优化思路和优化成果,我将从以下几个方面进行分享:

那么到底要优化成什么样呢?这是我们启动优化的第一步,明确优化目标。

从用户的角度来看,我们的性能目标就是快而且流畅,具体多快,怎么流畅,有哪些指标可以衡量呢?

性能优化的目标有了,具体指标怎么定呢,结合小电视当前的性能现状,参考业界的标杆,制定了如下目标:

效率优化的目标是什么呢?简单说就是省钱,小电视的最大成本就是带宽成本,省钱重点重带宽成本入手,业界通用的衡量指标是单 DAU 的带宽成本。

定完目标之后,接下来就是链路梳理,了解当前的数据流向,才能针对性的做优化,如下是多屏的全链路数据流,用户启动到浏览,到播放,播放会经过 CDN 再从 CDN 到源站,性能上我们希望启动,浏览和起播要快,效率上我们希望要省,如何省呢,接下来我们从启动,播放和 CDN 这些方面来拆解目标。

目标明确之后,结合我们的数据链路,接下来我们把目标拆解成一个个可落地执行的小目标,首先是启动时长的拆解。

首先我们需要分享小电视启动耗时都花在哪儿,才能针对性的做优化,如图 App 启动时主要分任务加载和首页加载两部分,那我们可以分别从这两方面进行优化,将启动视时长的目标拆解成客户端和后端两部分,共同达成启动时长降低 3 秒 内的目标。

首帧起播时长主要由以下三部分耗时组成,我们将起播时长优化目标拆解如下:

性能指标拆解完了,接下来我们拆解效率指标,我们上面说了提效对于我们当前阶段来说,就是节省带宽成本,带宽成本每月在千万 +,节省带宽成本同时不能降低 DAU,还得保持业务的增长,只能降低单位带宽成本。

哪些因素会影响单位带宽成本呢?如图是影响 DAU 成本的关键因素,根据这些关键因素我们把目标拆解如下:

App 启动时长优化常用的策略有延迟加载,合并任务,串行改并行等,我们也不例外,但是在具体执行优化之前,我们梳理了当前启动的所有任务

首先我们得梳理启动过程中调用哪些服务端接口,经过梳理从 App 启动到用户首页加载完成,调用了 20+ 个后端接口,耗时最高的几个接口为: 首页推荐接口 用户的个性化接口 以及 分区接口 ,这三个接口 TP 90 都在 ,所以我们重点优化这几个接口的性能,主要的思路如下:

谈到效率优化,一方面是降低成本,另一方是提升单位成本的效率,降本方面我们主要通过降低带宽成本,主要是优化 CDN 的带宽成本,效率方面我们通过算法来优化码率和画质,先看看我们 CDN 降本的工作。

上图是我们的视频播放请求路径,用户请求先到边缘节点,边缘节点如果没数据回源到源站,这里有两部分成本用户请求 CDN 产生的带宽成本以及,CDN 回源产生的带宽成本,这也是视频网站成本的大头,我们调研了下回源带宽的成本没有太大空间,但是用户到 CDN 的成本可是挖掘挖掘,如下策略。

不同机型使用不同默认清晰度 低端机型默认使用较低的清晰度 ,一方面低端机型播放高清视频存在卡顿,另一方面也能降低响应的 VV 码率从而减低带宽成本。

针对不同用户使用不同默认清晰度 登录用户默认较高清晰度 ,一来提供用户登录率,二来降低默认视频的播放码率。

投屏清晰度调整 ,投屏到第三方清晰度调整成 720p,一来是提高小电视的 DAU,二来也降低带宽成本。

视频码率是指视频文件在单位时间内的数据传输速率,也叫比特率 (bits per second,bps),降低码率也就是降低单位时间内的数据传输大小,这不会影响视频质量吗?我们要做的就是如何通过降低单位时间内的传输数据同时还能保证不影响视频清晰度,如何做的呢,主要是通过视频压缩,使用先进的视频压缩算法, 比如阿里窄带高清的算法,以及 bilibili 自研的 bilihevc 算法对视频进行编码优化

联合视频云团队通过增强算法提升 1080P、4K 的画质,主要通过 HDR 技术以及局部增强等技术, 同样是 1080p,增强后效果显著。

经过半年的优化主要成果如下:

在做性能和效率优化时,首先要明确目标,确定指标,梳理数据链路,寻找可优化点,再把指标拆分到每一个链路上,总能在看似无能为力的地方挖掘新的突破点。

郭利兵:毕业于大连理工大学,9 年互联网海量系统研发经历,参与过美团点评团购券系统的搭建和治理,哔哩哔哩多屏后端系统的领域拆分和微服务化,同时在稳定性治理上有较多实践。

收官之战!2023 年最后一场会议—— QCon 全球软件开发大会·上海站 ,将于 12 月 28-29 日在上海·中优城市万豪酒店举办。

此次大会策划了 GenAI 和通用大模型应用探索、AI Agent 与行业融合应用的前景、LLM 时代的性能优化、智能化信创软件 IDE、LLM 时代的大前端技术、高性能网关设计、面向人工智能时代的架构、构建本土编程语言生态的实践、性能工程:提升效率和创新的新方法、LLM 推理加速和大规模服务、现代数据架构演进、建设弹性组织的经验传递、SaaS 云服务弹性架构设计、大模型研究进展与产业应用展望等专题。

大会现已进入 9 折优惠报名 ,现在购票 立减 ¥680 。咨询购票可联系票务经理 18514549229(微信同手机号)。更多大会相关资讯可扫码上方二维码了解,或点击 「阅读原文」 即可查看,12 月,我们上海见!

声明:本文来自用户分享和网络收集,仅供学习与参考,测试请备份。