共计 6628 个字符,预计需要花费 17 分钟才能阅读完成。
2014 年 BIGO 公司成立,2016 年全面出海,如今 BIGO 三大核心产品直播 Bigo Live,短视频 Likee 和视频通讯 imo 已服务全球 150 个国家 4 亿用户,业务飞速发展的同时,产品对音视频传输和审核的高实时性要求,海量数据计算规模,尖端的机器学习研究应用以及广泛的用户地区分布给 BIGO 计算平台带来许多独特的技术挑战,本文将从全球计算平台的角度分享其中的技术思考。
1. 多视角的宏观技术挑战
首先从计算基础设施视角看,用户地区全球分布的特点驱动 BIGO 在全球建设了近 100 个 IDC,进而业务计算需要在多个 IDC 间进行合理规划与布局,其次多地区不同运营商的网络服务质量参差不齐,无法满足高品质音视频传输和其他服务的要求,需要自己动手构建 BIGO 的全球基础网络。
从大数据计算的视角看,数据规模以每年 3 倍速度增长,2019 年 BIGO 的 HDFS 存储规模已经达到 100PB,逐步碰触到 hadoop 开源系统的技术盲区,暴露出一系列计算瓶颈和稳定性问题。大数据的另外一个视角是数据中台,数据赋能业务的水平对增长,留存和成本指标的影响日渐增大,成为业务竞争力的要素之一,如何提升数据化运营水平,更好的运营数据资产,最优化数据成本的工作优先级显著提升,而数据赋能因业务属性的不同而存在明显差异,没有成型的方法与路径可循,需要 BIGO 探索出自身的数据中台建设之路。
从机器学习的视角看,视频推荐,内容生产,内容审核,自然语言处理的水平提升极其依赖机器学习技术,其机器学习的核心推动力是更高精度的算法模型,强大的算力以及丰富实时的特征信号,机器学习平台层面如何支持复杂模型结构的高效训练和预估,如何支持万亿级别参数,如何实时记录和计算特征,如何保证 online learning 流程的稳定可靠,如何支持 100 个算法工程师的并行研究,如何有效利用 CPU/GPU/ASIC 异构硬件算力都是需要攻克的前沿技术课题。
从基础架构的视角看,计算的全球布局带来了应用系统的碎片化治理难题,这要求分布式服务治理体系,自动化交付能力,在线数据管理和应用单元化切分的技术标准抬升一个层次,所以 BIGO 正在基于 CNCF 技术生态构建一套 BIGO 的全球化服务架构标准。另外 BIGO 业务催生了多样化的分布式数据存储模型,研发和维护多个分布式存储系统的代价非常高,有没有可能通过一套通用的存储架构范式来把底层的复杂技术组件化?譬如数据持久化,一致性和可用性设计,高性能单机存储引擎,从而使得不同业务场景能根据需要配置出合适的定制存储系统是我们正在探索的技术方向。
从推荐平台的视角看,推荐已然是直播和短视频产品流量分发的中枢,推荐在 BIGO 直播和短视频中接入的流量分发场景超过 50 个,将推荐能力通过平台化做到多场景可插拔具有重要意义,一方面更多场景接入推荐能力可以提升产品整体流量分发效率,另一方面也让复杂的推荐系统研发效率大幅提升,成本大幅下降。
2.BIGO 为什么不选择依赖云服务?
在展开介绍技术前得先回答一个技术路线选择的问题,那就是近年来以 AWS 为代表的云计算服务成为很多创业公司的选择,而 BIGO 为什么从创立开始就没有依赖云服务来构建其技术体系,而是选择了自我研发这条更为艰难的路。
如果回到 2015 年 BIGO 创立的时间点,业务拓展刚刚开始,在资金和人力并不充裕的情况下选择自研其实是非常艰难的决定,不过从 BIGO 当下业务情况看,回顾当初这个选择却又显得相当自然,从根本上是基于三个现实的考虑,不得不赞赏当时 BIGO 技术决策者的远见卓识。
1)公共云服务无法满足 BIGO 对技术的高要求和定制能力
拿 Bigo Live 直播业务来举例,视频流要在 500ms 内完成视频的上传,编码,审核,PK 场景的多路视频合并和全球下发,这严重依赖和用户分布高度匹配的 CDN 节点覆盖,依赖定制的网络路由算法,依赖独特的视频编解码算法,还依赖弱网环境下传输协议和系统内核的高度优化这一系列前沿技术定制能力,而这些能力是公共云服务无法在成本和效率约束下提供的。
2)可持续掌控的技术领先优势
欢聚集团最早定义了直播行业的产品形式和技术标准,BIGO 创始团队从欢聚集团分离出来时自然而然继承了欢聚集团的技术领先优势,并深刻认知到技术在直播和短视频行业竞争中的重要性,所以从开始就在战略层面明确了 BIGO 要持续掌控音视频领域的技术领先优势,其实这 5 年来 BIGO 在海外业务上的高歌猛进的确和其技术优势是分不开的。
3)计算成本大幅下降
在全球几万台服务器的规模下,BIGO 自研的技术方案的单用户成本还不到云服务技术方案的 50%,这不仅大大提升了 BIGO 全球化业务的利润空间,还获得了商业竞争策略上的主动性。
3. 全球计算布局
既然 BIGO 明确了从上到下自研的技术策略,首先要考虑的就是全球机房和计算的布局。BIGO 全球近百个 IDC 被划分为 4 个逻辑计算层次,业务计算任务会根据延迟,网络质量,吞吐量和成本的综合指标要求来确定其部署层次。
图 1: BIGO 全球计算布局
1) 前端节点放置在最靠近终端用户的地方,提供高品质接入
2) 地区级可用区部署复杂的业务后台应用,譬如音视频编解码,数据库,存储,推荐,搜索和广告的在线服务
3) 大区计算中心主要部署内容审核以及其他近线计算,取得在延迟和成本的平衡
4) 全球联合计算中心则部署模型训练,数据分析,数据挖掘等高吞吐量计算任务,通过整合全球 2 - 3 个大集群进行联合计算任务调度
4. 全球基础网络系统
再来介绍下 BIGO 全球的基础网络系统,由于 BIGO 全球 IDC 的多个运营商的服务能力参差不齐,需要 BIGO 自己动手建设全球基础网络系统 BGNS(Bigo Global Network System),为上层应用提供可靠和高效的网络传输服务,其中包含一系列自研的核心技术,也是 BIGO 音视频传输技术领先行业的技术底座。
1) 透明路由系统(BAS):虽然 IDC 之间提供了专线连接,但是各区域各运营商的专线质量参差不齐,还是偶尔会发生丢包,中断和抖动的情况,为了能够快速感知并切换网络路径, 透明路由系统 BAS 运用流量分析与调度算法能快速感知网络故障,然后将网络流量分流到更优路径,当专线网络故障恢复后又将流量自动恢复到原有路径,做到了对上层业务的完全无感知。
2) 公网专线系统(BVTS):专线有时也会完全中断,造成较长时间不可用,针对这种情况 BIGO 基于公网构建了虚拟专线网络系统 BVTS,BVTS 与专线网络完全隔离, 在专线不可用的场景下仍然能接管网络传输,为业务提供更高一级的可靠性保证
3) 用户质量探测和调度:当一级的 BAS 和二级的 BVTS 系统来保障服务器间的网络质量后, 终端用户的接入选择就成为网络接入”最后一公里”的问题,为此我们通过少量用户主动探测边缘节点的反馈数据, 最终还原出全球终端用户视角看到 BGNS 各节点服务质量状况,然后实时分析用户网络状况和运营商服务质量变化, 及时调整终端用户的接入点并平滑切换。
4) 城域网的波分多环:城域网内核心和边缘节点间互访流量巨大,多供应商多线路的管理成本较高,BIGO 通过波分复用技术在海外允许使用 darkfiber 的区域构建了同城传输网络,具备了毫秒级的故障自愈能力,同时提供超大的网络容量。
5) BGP 跨区调度:由于不同国家运营商接入全球互访方式的多样性,BIGO 借助自身的全球骨干网和出口网络灵活调整覆盖区域的接入点,达到成本和质量最好平衡。
5. 多集群联合计算架构
到 2021 年 BIGO 大数据存储规模将达到 EB 级别,再考虑到用户在全球多地区分布的特点,中心化的大数据集群管理模式已经无法在吞吐量,网络传输和计算成本上获得最好的整体收益,且单集群规模过大后系统稳定性问题突出,据此 BIGO 正在建设跨大区的多集群联合计算架构。
图 2:BIGO 多集群联合计算架构
首先在存储层部署多个 HDFS 存储集群,并提供统一的存储视图,存储客户端通过请求联合路由服务来定位 HDFS 集群,这样的架构设计获得了集群粒度的扩展能力,多个集群可以提供出 EB 级存储规模,而且集群数量可以灵活配置,集群的软件版本也可以非同步升级,另外的好处是可以将冷热数据存储采用不同的数据存储结构,譬如为冷数据引入 Erasure coding 可以节省 50% 的存储成本。
上层 GlobalScheduler 负责全局计算任务调度,它会根据计算任务依赖的数据位置来调度任务到对应集群,任务提交者在大部分情况下不需要感知数据物理位置,当然这需要对业务数据进行合理规划,尽量避免跨集群的数据依赖。
6. 工业级机器学习平台
机器学习是视频推荐,内容理解,内容生产,内容审核场景下的核心技术能力,而机器学习的能力提升依赖更高精度的算法模型,强大的算力,丰富实时的特征信号以及高效的算法试验,BIGO 工业级机器学习平台主要面向后面三个目标来建设。
在 2019 年 BIGO 完成了训练和预估能力的重大升级,以阿里开源的 XDL 技术成果为基础结合一系列技术创新,将模型训练的参数规模从百亿扩充到万亿的水平,支持了 TB 级模型的训练,分发和预估,支持了 RNN,Attention,Transformer 和胶囊网络等复杂模型结构,构建了 online learning 需要的实时样本流,另外还创新性的提出了子图交替训练的模式,在 CV 领域上线了模型并行训练的能力,算法效果在这些基础能力升级打开了效果优化的天花板,持续获得指标提升。
2019 年的另一条工作线是异构计算的极致性能优化,通过 Graph Optimization,kernel fusion,CPU/GPU 混合调度,TensorRT 应用,混合精度等技术手段将训练速度整整提升了 5 倍,在线预估延迟从 100ms 下降到 15ms,达到行业领先水平。
来到 2020 年,机器学习平台最重要的目标是将算法的有效试验效率做到极致,希望在统一的平台上支持 100 个模型并行生产和试验,并支持图像,语音,推荐的多领域模型,这是极有难度的工作,需要从相对聚焦的训练预估技术领域扩展到算法原始数仓建设,样本和特征管理,模型交付与服务,多租户 workspace 隔离,资源配额管理的更广阔技术范围,行业内并没有成熟的经验可借鉴,TFX 的设计理念不错但在工业场景应用的距离还很遥远,又一次只能自己动手了。
7. 碎片化服务的治理
全球化部署面临碎片化服务的治理难题,区域性的互联网应用通常只需在 2 - 3 个 IDC 部署,而 BIGO 的全球化应用大多需要在 5 -10 个 IDC 部署,这对分布式服务治理,自动化交付,在线数据管理,单元化切分提出了更高的技术要求,否则会严重拖慢产品的升级迭代速度,针对这些挑战 BIGO 正在进行一些前沿的技术实践:
1) 应用无状态化:在线应用通过架构改造不依赖任何本地存储,可以随时被停止和可重入,于是可被灵活的调度,同时这也使得应用描述更简单,可以轻易的构建一键克隆生产环境的能力,研发和测试的并行度可获得 5 倍以上的提升
2) 容器化:将应用交付通过容器标准化,并让计算和物理资源的绑定关系可灵活调整,获得计算分配的极大灵活性
3) 统一在线数据视图:为全球应用提供统一的在线数据视图,当离线计算的结果数据需要交付到在线服务时,平台会根据数据消费者的订阅来负责数据的全球分发,在线服务只需要监听自身的数据变化完成本地加载即可
4) 自动化交付:基于 Kubernetes 的应用治理能力让软件,数据,配置的交付过程全自动化,每一次交付的过程会历经 test->staging->product A-> … ->product N 的灰度发布过程,每一步交付都可以停止和回滚
5) 单元化切分:为了优化成本并让应用在地区间进行灵活的容量配置,我们让在线服务只加载本区域的用户数据,将应用切割成较小的部署单元
8. 可插拔的推荐能力
推荐已然成为移动场景下流量分发的中枢,Bigo Live 和 Likee 两款产品中就有 50 个场景通过推荐来优化流量分配效率,但多个场景的推荐系统有 80% 的框架,服务以及数据可以共享,我们正在实践通过平台化使推荐成为可插拔的能力,一方面能更快更好的赋能产品留存,内容消费,营收等核心业务指标优化,另一方面也能大幅提升推荐系统研发效率,降低研发成本。
图 3:BIGO 推荐平台架构
BIGO 推荐平台分为三层:
1) 基础架构层:提供标准化的计算调度,资源管理,分布式服务治理,持续交付,试验平台,分布式参数服务的基础能力,这层的组件或服务是业务逻辑无关的
2) 业务架构层:提供推荐领域多种召回,预估,粗排序,重排序业务子系统,通常以服务化的形式在多推荐场景共享
3) 内容聚合层:提供场景化的内容聚合逻辑定制,聚合层首先调用多个业务架构层的服务获得内容数据,然后执行不同场景下定制的聚合,过滤和重排序逻辑,大部分推荐场景的接入和迭代只需要在业务聚合层就可以完成
其中基础架构层和业务架构层的服务一般由工程架构团队来研发和维护,而内容聚合层的研发完全开放给算法工程师,以后甚至可开放给产品和运营,这种专业化的分工倍数的提升了效率。
9. 可灵活选择可用性和一致性的分布式存储
BIGO 的业务场景对分布式存储的需求相当多样化,正在使用和研发的就有文件存储,对象存储,键值存储,表格存储,关系型数据库,图数据库,其中在分布式存储系统设计上的设计难点就是可用性和一致性选择,在 BIGO 跨地区和跨大区部署的情况下则需要更加严谨的考量和更加灵活的调整,根据不同数据中心的网络质量,不同场景下延迟,数据可靠性,可用性和一致性的要求来综合设计存储系统架构,BIGO 为此研发了一个分布式存储系统通用架构范式。
图 4:BIGO 分布式存储系统架构
如上图所示,Data View 面对业务提供多种访问 API,一致性模型和 CRDT(Conflict-free Replicated Data Types) 能力,Data Durability & Replication 主要负责数据的持久化和复制,通用的分布式日志,而存储引擎层是对已经持久化的数据进行单机数据组织。
通用架构为不同数据模型的存储系统提供了统一框架,可共享大量复杂的底层技术能力,另外还为不同场景提供了灵活选择可用性与一致性能力,就像是一个可拖拽的进度条,这是分布式系统设计领域前沿的技术创新,在通用架构的基础上研发定制分布式存储变得简单了很多。
10. 全球时钟服务
在 BIGO 音视频传输优化,基于时序的事务处理,分布式日志分析的场景下要依赖全球 True Time 服务,业界最常用的解决方案是接入网络授时服务如 NTP,通过测试发现 BIGO 的碎片化的 IDC 直接接入 NTP 会将时钟误差累积到 100 毫秒级别,单机视图还存在时间跳变的问题,无法满足业务需求;另一个方案是依赖全球多机房部署原子钟和 GPS 构建双层架构,配合 Marzullo 变种算法来提供 7ms 时间区间服务,该方案强依赖原子钟硬件很难广泛实施。
于是 BIGO 结合自身的业务场景基于外部 NTP 网络时间源,内部 UTC 时间源集群,多 PTP 集群的方案来构建了一套独特的全球 True Time 服务,最终我们获得了一个 99.99% 场景下集群时钟误差都在亚毫秒精度的时钟服务,且随着 ping 值减少同机房的精度能进一步提升。
图 5:BIGO 全球 True Time 服务架构图
11. 写在最后
BIGO 作为中国互联网全球化的探索者,在直播和短视频的行业上取得了不错的成绩,过去 5 年 BIGO 吸纳了行业中优秀的技术成果,也在全球化业务背景下提出了 BIGO 自己的技术解决方案,可为后来者提供一些参考。面向未来审视,全球直播和短视频业务对技术的要求越来越高,譬如支持更精细的本地化策略,手机端和云端的联合计算模式探索,数据化运营能力提升,利用高端硬件算力赋能视频内容生产,支持更深入的视频内容理解,这些问题对计算平台都提出了更高的要求。
本文从宏观视角给大家介绍了 BIGO 基础设施,工业级机器学习,全球联合离线计算,全球化服务治理,分布式存储方向的关键技术挑战与成果,后续我们还会对更多具体的技术主题展开分享我们的技术实践方案,譬如《BIGO 全球基础网络的实践》《深度学习中的极致算力优化》《机器学习平台如何支持 100 个模型并行生产》《全球联合离线计算中心设计》,《BIGO 万亿级消息队列的升级》《BIGO 碎片化应用治理之路》《可插拔的推荐系统平台》等主题,敬请关注。