1. B站的直播间作为整个APP中交互最为复杂的单页面之一,其承担的业务量已经不亚于一个小型APP。对比APP的结构会发现许多相同处,但与组成APP的各个独立Activity不同,直播间由各个独立的视图组成。 2. 业务逻辑基于MVVM的设计分为三层(Service即M层),理想状态下各个业务间的交互是内聚的,各业务间不会感知到其他业务的存在,View显示需要的数据和状态都由各自对应的ViewModel提供。 3. 现实情况中业务交互并没有那么理想,直播间中的一个View显示的数据会受到其他业务的数据、状态影响,因此一个View除了需要处理自己内聚的逻辑为还需要关心其他View的数据变化。
众所周知,B站在不知不觉间已经成为一家拥有相当体量的互联网公司。拥有自己的IDC的小破站,每年都会对以服务器为代表的硬件设备进行选型迭代。服务器选型评估指标有很多,其中性能是最重要的指标之一。服务器性能涉及服务器硬件、操作系统以及业务应用等多个方向,为准确评估服务器硬件性能,服务器硬件与操作系统层面的性能优化也是B站系统组工作重要的组成部分。这篇文章B站系统组就基于单路AMD Milan CPU服务器,粗浅的介绍一下服务器基础性能调优与评测的工作。希望能抛砖引玉,共同学习,将服务器性能调优与评测这个长线工作不断迭代更新下去。
随着短视频行业的蓬勃发展,全民UP主时代已经到来,用户需要的创作手法日新月异,对创作工具的要求越来越高。而音视频质量评估偏主观,复杂功能场景的组合爆炸,使得评测效能提升与传统的人工评测形成了巨大矛盾,因此需要与时俱进,搭建手段丰富且高效的质量评估体系。 我们的实施路径如下,通过行业交流与调研,快速确定评测方案的选型并开展落地 ,再针对本土化过程中遇到的问题,逐步探索形成现在的B站特色音视频质量评估体系。因篇幅有限,本文将着重说明画质在B站的评测实践,主要以生产端为例。
B站基于Elastic Stack的日志系统(Billions) 从2017建设以来, 已经服务了超过5年,目前规模超过500台机器,每日写入日志量超过700TB。 ELK体系是业界最常用的日志技术栈,在传输上以结合规范key的JSON作为传输格式,易于多种语言实现和解析,并支持动态结构化字段。存储上ElasticSearch支持全文检索,能够快速从杂乱的日志信息中搜寻到关键字。展示上Kibana具有美观、易用等特性。 随着业务系统的高速发展,日志系统的规模也随之快速扩展,我们遇到了一系列的问题,同时可观测业界随着OpenTelemetry规范的成熟,推动着我们重新考量,迈入下一代日志系统。
Lancer是B站的实时流式传输平台,承载全站服务端、客户端的数据上报/采集、传输、集成工作,秒级延迟,作为数仓入口是B站数据平台的生命线。目前每日峰值 5000w/s rps, 3PB/天, 4K+条流的数据同步能力。
B站每天都会接收数十万的视频投稿,在这大量的视频中,有一些稿件会成为热门视频。这些热门视频吸引了大部分用户的关注和播放,同时也会消耗很大部分的带宽资源。因此当作品热度上升之后,B站会对视频进行重新转码,此时会使用更高复杂度的转码系统方案如(画质可控的场景自适应转码系统),在保持画质不变的前提下,更好的去除数据冗余,以提高压缩比,降低码率,避免带宽资源的浪费。为了进一步提升转码系统性能,我们研发了一套视觉无损的深度学习前处理系统。该系统可以在原有场景自适应转码系统的基础上,带来15%左右的码率节省,与此同时,保持画面质量不变。
市面上已有lottie,svga,pag等优秀的矢量动画库,但是在B站业务场景下,并不能完美的解决自身业务痛点。B站拥有着一套自研的渲染引擎 Chronos,目前已支撑了移动端视频播放界面弹幕等视频特效业务,部分视频中的弹幕特效,以及大部分视频中的三连组件。Chronos 拥有对GPU接口的抽象和渲染管线,我们可以在Chronos基础上,完成一个矢量动画绘制模块,解决B站部分场景下特效动画的痛点。