1. 实时数仓与离线数仓的分层对比,Lambda 与 Kappa 架构在实时数仓中的取舍?
对比实时数仓与离线数仓在分层架构上的差异,并说明 Lambda 与 Kappa 两种架构在实时数仓建设中各自适用什么场景、如何取舍?
- 实时与离线在分层、时效、计算模型上的差异
- Lambda 双链路在一致性、维护成本上的问题
- Kappa 单流链路的能力边界与适用条件
分层差异:离线数仓按 ODS/DWD/DWS/ADS 静态分层,以批处理 T+1 加工,数据可任意回刷重算;实时数仓同样沿用四层思想,但 ODS 常以 Kafka Topic 承载原始变更流、DWD/DWS 由 Flink 流式加工并落到 Doris/StarRocks/Hologres 等 OLAP 引擎,分层需适度压缩,因为流式重算能力有限,中间层过多会放大端到端延迟与运维复杂度,结果层多以明细宽表与指标表形式提供即时查询。
Lambda 架构并行维护实时(Kafka→Flink→OLAP)与离线(Hive/Spark)两套链路:实时层保证低延迟,离线层保证准确与可回刷,但两套代码两套口径,开发与运维成本高,必须持续对账;Kappa 架构只用一套流引擎,数据重算通过 Kafka 消息重放完成,口径天然统一、架构简单,但流引擎承担全量计算,对长周期聚合与复杂批任务能力受限,且依赖消息保留时长与重放吞吐。实践中多采用"Kappa 为主、离线链路兜底"的混合方案,或用批流一体(Flink 批模式执行同一 SQL)统一计算逻辑。
回答分两层:先讲清分层差异的本质(时效与计算模型不同导致的分层落地差异),再讲架构取舍的维度(一致性、成本、复杂度),最后给出工程实践中的混合方案,避免非此即彼的结论。