五、设计目标与设计难点
我们多维实时数据分析系统分为三大模块:
难点主要在前两个模块:实时计算引擎和实时存储引擎。
千万级/s的海量数据如何实时接入,并且进行极低延迟维表关联; 实时存储引擎如何支持高并发写入、高可用分布式和高性能索引查询,是比较难的。
这几个模块的具体实现,看一下我们系统的架构设计。
六、架构设计
前端采用的是开源组件Ant Design,利用了Nginx服务器,部署静态页面,并反向代理了浏览器的请求到后台服务器上。
后台服务是基于腾讯自研的RPC后台服务框架写的,并且会进行一些二级缓存。
实时数仓部分,分为了接入层、实时计算层和实时数仓存储层。
接入层主要是从千万级/s的原始消息队列中,拆分出不同行为数据的微队列,拿看点的视频来说,拆分过后,数据就只有百万级/s了; 实时计算层主要负责,多行行为流水数据进行行转列,实时关联用户画像数据和内容维度数据; 实时数仓存储层主要是设计出符合看点业务的,下游好用的实时消息队列。我们暂时提供了两个消息队列,作为实时数仓的两层。一层DWM层是内容ID-用户ID粒度聚合的,就是一条数据包含内容ID-用户ID还有B侧内容数据、C侧用户数据和用户画像数据;另一层是DWS层,是内容ID粒度聚合的,一条数据包含内容ID,B侧数据和C侧数据。可以看到内容ID-用户ID粒度的消息队列流量进一步减小到十万级/s,内容ID粒度的更是万级/s,并且格式更加清晰,维度信息更加丰富。
实时存储部分分为实时写入层、OLAP存储层和后台接口层。
OLAP存储层利用MPP存储引擎,设计符合业务的索引和物化视图,高效存储海量数据;
|