行业挑战
随着互联网业务的发展越来越多企业希望能构建基于实时数仓架构完成实时数据和商业洞察,当前有三种实时数仓架构: Lambda、Kappa 和基于 Hudi 或者 Iceberg 的数据湖批流一体模式。
此类实时数仓架构存在以下痛点:
- Lambda 架构需要维护两套离线和实时两套代码,且两套代码运行的结果可能存在差异;
- 基于 Hudi / Iceberg 的数据湖批流一体架构提升了中间层数据存储和计算能力,但是数据延迟无法达到秒级和毫秒级,无法应用到对时效性要求更高的分析场景;
- 传统批流一体部分解决了数据实时计算的问题,但是此架构无法支持高并发查询和分析,需要依赖其它异构存储引擎,架构偏复杂。
解决方案
- 通过 DM 或者 Flink CDC 将上游实时数据变更同步到 TiDB ODS 层;
- 使用 TiCDC 监听 TiDB ODS 层实时数据变更并发送给 Kafka;
- 使用 Flink 对 Kafka 数据进行流式和批量计算,并将中间计算结果存入 TiDB DW 层,完成批流 DW 层数据中间层建设;
- 再次使用 TiCDC 监听 DW 层实时数据并更并发送给 Kafka,在 Flink 中对 Kafka 数据进行流式和批量计算,并将最终结果存入 TiDB APP 层;
- 基于 APP 层数据和 TiDB HTAP 能力给业务系统提供高并发查询和统一视图等服务。
方案优势
- 毫秒级数据延迟:TiDB 拥有毫秒级数据落地能力,支持对数据延迟要求较高的业务。
- 简化架构:Flink 计算最终结果存储在 TiDB 中,同时支持高并发查询和数据分析。
- 更好的 MySQL 语法兼容:TiDB 兼容 MySQL 语法,可以更简单落地上游 DDL 变更,易用性更强。