Big Data 17 min read

Building a Real-Time Data Warehouse for B站 Game Business

To meet Bilibili’s rapidly expanding game business, the team built a unified real-time data warehouse using Hologres and Flink that replaces the traditional Lambda stack, delivering high-throughput writes, low-latency processing, seamless offline-online integration, global deployment, and real-time support for operations, advertising, and risk analytics.

Bilibili Tech
Bilibili Tech
Bilibili Tech
Building a Real-Time Data Warehouse for B站 Game Business

实时数据仓库是近年来数据技术领域内的一大发展潮流。构建一个能够实现高吞吐量写入与更新、端到端全链路实时处理以及低延迟、高并发的实时数据仓库,一直是众多企业面临的重大挑战。随着B站游戏业务的快速发展,对数据的实时应用需求也日益增加。单点式实时指标计算模式已难以支撑日益复杂的实时业务需求,因此,构建一个稳定、高效的实时数据仓库变得迫在眉睫。

建设实时数仓的主要原因包括:

游戏业务对数据实时性的需求愈发迫切,需要实时数据来辅助决策制定;

实时数据建设缺乏统一规范,导致数据可用性不足,难以形成完整的数仓体系,造成资源的极大浪费;

离线数仓与实时链路相互独立,难以统一对外服务

如今,Hologre实时数仓体系已建设完成,它全面支持了运营、广告、算法等多元化业务场景的实时化需求,成为B站游戏数据应用的重要基石。本文将主要介绍我们在架构选型、方案设计、技术细节等方面的探索。

在架构中引入了Hologres后,我们对传统的Lambda架构进行了优化,将原先所需的消息中间件、缓存、Hbase等组件进行整合,统一使用Hologres+Flink进行实时数据的全链路构建,不仅大大降低了运维成本,也实现了存储层面的流批一体化设计,实现了离线-实时数据间的无缝衔接,全面推进了离线指标的实时化。

数据从SLS (Log Service)、RDS (Relational Database Service) 等组件流入Hologres,通过Flink读取holo表的增量binlog进行层间数据模型构建,同时实现实时全量维表的自更新,最终数据流入应用层服务于实时运营、风控、广告等方向。

传统实时数仓往往会面临离线与实时数据的数据孤岛问题,实时数据与离线数据很难做到相互结合,这是不同组件间的底层数据存储模式不同带来的痛点。Hologres与MaxCompute底层数据相互打通,数据可以通过直读模式进行结合,针对这一特性,我们对离线指标所需的所有明细层都进行了实时化构建,使其可以满足秒级的实时明细查询,并可通过直读模式与离线表直接进行join计算,实现了大部分的离线指标实时化。

B站游戏有着全球化部署的策略,我们在国内海外分别部署了Hologres实时数仓,以满足对全球游戏数据的实时观测,通过将计算好的指标回传国内,实现国内-海外数据的一站式查询。

Flinkreal-time data warehousebig data architectureData architecture case studyGame business dataHologreOLAP engine
Bilibili Tech
Written by

Bilibili Tech

Provides introductions and tutorials on Bilibili-related technologies.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.