B站离线多机房架构实践

本文介绍了B站为解决单机房容量瓶颈,选择多机房方案来扩展离线集群。文章详细阐述了面临的带宽瓶颈和网络抖动问题,以及如何通过单元化架构设计降低带宽消耗和网络稳定性影响。文中提到了作业放置、数据复制、数据路由等核心环节的实现,并探讨了跨机房流量分析和未来展望。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

01 背景

随着B站业务的高速发展,业务数据的生产速度变得越来越快,离线集群规模快速膨胀,既有机房内的机位急剧消耗,在可预见的不久的将来会达到机房容量上限,阻塞业务的发展。因此,如何解决单机房容量瓶颈成为了我们亟待解决的问题。

目前,针对机房容量问题的解决方案业界主要有以下两种:

1) 集群整体搬迁至更高容量的机房(scale up) 。该方案是一种纵向扩容方案,即将现有集群搬迁至容量更大的机房,从而提供集群扩展的空间。现实中,集群迁移一般不能影响业务的发展,即保证不停机,因此,迁移过程中需要两个规模相近的集群做全量迁移,或者需要一个具有一定规模的过渡集群,分批次迁移;对于大规模(tens of thousands)集群来说,迁移的经济成本巨大;另外,迁移后的新机房会有再次达到容量上限的风险。

2) 多机房方案(scale out) ,即一个机房容量有限,扩展为多个机房,同时对既有架构进行一定的改造,保证用户视角仍像是一个机房。此举可依据业务需要,采用灵活的方式增量扩容,从而一定程度上避免容量冗余问题。然而,该方案会存在跨机房数据交互,而机房间网络带宽一般也存在瓶颈;同时,网络的抖动或断网可能造成跨机房业务出现异常。因此,该方案需要考虑/解决网络带宽不足及网络抖动/断网问题带来的影响,技术成本较集群整体搬迁方案要高。

就我们目前自建机房的情况来看,中短期暂无清退既有机房(全部搬迁至新机房)的计划,从长期来看也会存在多个机房;另外,比起方案2的技术成本,我们更难接受方案1的经济成本和容量风险。因此,方案2是我们解决机房容量问题首选方案。

02 多机房方案

2.1 面临的问题

上文提到多机房方案面临带宽等网络问题,多机房方案的设计受其制约。

带宽瓶颈

离线场景主要是批处理场景,是对海量历史数据进行离线分析/处理的场景,该场景对延迟不敏感,但由于其处理数据量巨大对网络带宽等资源消耗较大;另外,生产场景中作业数量一般较多且执行时间不受控,若两个机房的主机只是简单叠加在一起做为一个集群来用,可能会存在大量的跨机房互访,产生大量的随机流量打满有限的跨机房带宽, 此时除离线自身受影响外, 还可能对其它跨机房业务造成影响 。因此,如何防止跨机房随机流量打满跨机房带宽是多机房方案要解决的一个重要问题。

网络抖动&连通性

跨城网络会受供应商服务质量影响(或施工影响)造成抖动(或断网), 与机房内CLOS架构的网络质量相比会低很多。若两个机房的主机当做为一个集群来用,如图1 HDFS示例,当网络抖动时,不但会导致跨机房读写延迟增加,还会影响DN的IBR等过程,造成服务性能和稳定性下降;当网络出现严重问题造成断网时,会导致异地机房数据不可用,还会导致异地机房DN失联,造成大量Block低于预期副本数,触发NN大量补副本等问题。因此,如何降低网络抖动及网络连通性问题带来的影响是多机房方案要解决的另外一个不可忽视的问题。

图1 HDFS 架构

2.2 设计选型

如上所述,多机房的主要矛盾是跨机房网络带宽不足、稳定性差与离线海量数据处理任务高效产出之间的矛盾,解决该主要矛盾面临的核心问题是如何减少跨机房带宽的消耗,以及如何降低网络稳定性问题带来的影响。

经调研,单元化架构是为解决多地多中心问题演进而来的部署架构,其中,单元是指一个能完成所有业务操作的自包含集合,在这个集合中包含了业务所需的所有服务,以及分配给这个单元的数据 [1-2] 。按照单元化的思路,在多机房场景中,每个机房可以作为一个单元,每个单元内提供作业执行所需要的全部服务以及数据,保证作业在单元内完成,从而解决上述多机房面临的核心问题;单元化拆分后任何一个单元的故障只会影响局部,不会造成整体瘫痪;在选定采用单元化思想来设计了多机房方案之后, 多机房方案的核心问题就限定在了如何决定作业与数据放置,以及如何让作业访问距离近的数据,来降低跨机房带宽的消耗及网络稳定性问题带来的影响。

带着上面的核心问题,我们调研了业界大厂的多机房解决方案 [3-7] 。这些方案在计算层面为防止Shuffle等中间结果数据造成跨机房流量,每个机房均独立部署了计算集群,在该层面均符合单元化思想;但在存储存面存在分歧,如图2所示,依据数据和异地机房的数据副本是否属于同一组NameSpace (NS),大体可以分为多机房单集群方案和多机房多集群方案。

图2 多机房方案分类

[3-5] 采用了多机房单集群方案,该方案中采用Block级的数据副本,数据和数据副本同属于一组NS,无数据一致性问题,但因NS只能在其中一个机房,无法有效应对网络连通性问题,且Namenode异地副本管理(BlockPlacementPolicy)和相关工具(Mover, Balancer等)改造成本较大,另外该方案可扩展性也受单集群规模制约。[6-7] 采用了多机房多集群方案,整体符合单元化思想。

其中 [6] 应用于云梯迁机房场景,它首先在同机房中通过Fast Copy将文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值