1. 实时数据分析平台需求分析与架构目标

在动手搭建任何一套实时数据分析平台之前,最重要的一步不是选组件、写代码,而是把"业务到底要什么"翻译成"平台必须满足什么"。Databricks 提供了 Spark Structured Streaming、Delta Live Tables、Lakeflow、Unity Catalog、Photon 引擎等一整套能力,但这些能力只有在明确的需求约束下才能被正确组合。本章的目标是建立一套可落地的需求分析方法,把模糊的业务诉求转化为可度量、可验证的平台设计目标与关键指标。

一、从业务场景出发,而不是从技术出发

实时分析平台的起点是业务场景。常见的场景大致可以分为几类:实时风控与反欺诈、实时推荐与个性化、实时监控与告警、实时运营看板、IoT 设备遥测处理、实时计费与账务核对。不同场景对平台的要求差异极大。例如实时风控通常要求端到端延迟在数百毫秒到 2 秒之间,且对数据准确性要求极高,因为一次误判可能直接造成资金损失;而实时运营看板往往可以接受 10 秒到 1 分钟的延迟,但对吞吐量和并发查询能力要求更高。

因此第一步是明确"谁在用、用来做什么、做错或做慢会怎样"。建议用一句话描述核心场景,例如:"为风控团队提供交易事件的实时特征计算与规则判定,端到端延迟不超过 2 秒,单日处理 3 亿笔交易,误判率低于 0.1%。"这句话里已经包含了用户、用途、延迟、吞吐量和质量约束五个关键要素。

二、五类核心需求维度

把业务诉求拆解为可度量的需求,通常需要覆盖以下五个维度:

  • 延迟要求:区分数据采集延迟、处理延迟、写入延迟和查询延迟。端到端延迟是它们的总和,不能只看其中一段。常见分级为:亚秒级(<1s)、秒级(1–5s)、分钟级(1–5min)、准实时(5–60min)。
  • 吞吐量:包括峰值事件速率(events/s)、平均速率、日增量数据量(GB/天)、并发查询数(QPS)。峰值通常是平均值的 3–10 倍,必须按峰值设计。
  • 数据源类型:消息队列(Kafka、Kinesis、Event Hubs)、CDC 变更流(Debezium、Delta CDF)、文件落地(S3、ADLS、GCS)、API 拉取、数据库直连。不同源的接入方式、顺序保证和幂等策略不同。
  • SLA 与可用性:平台可用性目标(如 99.9%)、数据新鲜度承诺、故障恢复时间(RTO)、可接受的数据丢失窗口(RPO)。
  • 成本约束:月度预算、单位数据处理成本(元/百万条)、存储与计算的比例、是否允许弹性伸缩带来的成本波动。

这五个维度不是孤立的。提高吞吐量往往需要更多计算资源,从而推高成本;降低延迟可能需要放弃微批而改用连续处理,进而影响吞吐和成本。需求分析的本质是在这些约束之间找到可行解,而不是每一项都取最优。

三、把需求转化为平台设计目标

需求是"业务要什么",设计目标是"平台要做到什么"。二者之间需要一次翻译。例如业务说"看板要实时",翻译为设计目标就是"从事件产生到 Delta 表可查询的端到端延迟 P95 ≤ 5 秒"。业务说"不能丢数据",翻译为"在 Kafka 保留期内,平台需保证至少一次处理语义,并通过幂等写入实现端到端精确一次"。

设计目标应当满足 SMART 原则:具体、可度量、可达成、相关、有时限。下面给出一份示例性的设计目标表,用于说明如何把需求落到指标上。表中数值为教学示例,实际项目需根据业务重新测算。

需求维度业务诉求设计目标(示例)验证方式
延迟风控判定要快端到端 P95 ≤ 2s,P99 ≤ 5s埋点时间戳差值统计
吞吐大促期间交易激增峰值 50,000 events/s,持续 30 分钟压测 + 监控指标
数据源交易、用户、设备三类流Kafka 三主题,CDC 接入用户库接入清单核对
SLA风控不可长时间中断可用性 99.9%,RTO ≤ 15min,RPO ≤ 1min故障演练
成本预算可控单位处理成本 ≤ 0.8 元/百万条账单与用量核算

四、关键指标与容量估算

设计目标确定后,需要进一步估算容量,判断目标是否现实。容量估算的核心是"数据量 × 处理复杂度 × 冗余系数"。以示例场景为例:日均 3 亿笔交易,峰值系数取 5,则峰值约 17,400 events/s;每条事件平均 1KB,则峰值吞吐约 17MB/s,日增量约 300GB。若保留 90 天,热数据约 27TB,加上 Delta 表的多版本和索引开销,实际存储可能达到 40–50TB。

计算侧,若每条事件需要 3 次特征关联和 1 次规则判定,单核处理能力按 5,000 events/s 估算,则峰值需要约 4 个核心用于处理,但考虑到反压、状态管理和容错开销,实际建议预留 3–5 倍余量,即 12–20 个核心。这些数字不是精确值,而是用于判断"这个目标是否可行、成本是否可接受"的初步依据。

容量估算时,务必区分"平均"和"峰值"。很多平台在平均负载下运行良好,一到峰值就出现延迟飙升和积压,根本原因就是按平均值做了资源规划。

五、需求到架构目标的映射关系

下面这张图把本节的核心逻辑可视化:左侧是业务场景与五类需求输入,中间经过需求翻译与容量估算,右侧输出平台设计目标与关键指标,并最终约束到 Databricks 的架构选型上。图中同时标出了各维度之间的相互影响关系,帮助理解为什么需求分析不能孤立地看某一项。

需求分析 → 设计目标 → 架构约束 映射图 业务场景 实时风控 / 推荐 / 监控 IoT 遥测 / 实时计费 运营看板 / 反欺诈 谁用 · 做什么 · 做错会怎样 五类核心需求 延迟要求 亚秒 / 秒 / 分钟 / 准实时 吞吐量 峰值 events/s · 日增量 · QPS 数据源类型 Kafka · CDC · 文件 · API SLA 与可用性 可用性 · RTO · RPO 成本约束 预算 · 单位成本 · 弹性波动 需求翻译 + 容量估算 SMART 目标 · 峰值系数 冗余系数 · 成本测算 判断目标是否可行 平台设计目标与关键指标 延迟目标 端到端 P95 ≤ 2s,P99 ≤ 5s 吞吐目标 峰值 50,000 events/s,持续 30min 数据接入目标 Kafka 三主题 + CDC 用户库 SLA 目标 可用性 99.9%,RTO ≤ 15min,RPO ≤ 1min 成本目标 单位成本 ≤ 0.8 元/百万条 Databricks 架构约束 Structured Streaming · Delta Live Tables Photon · Unity Catalog · Lakeflow 选型由目标反推,而非先选组件 拆解 量化 输出 约束 相互制约 成本权衡 需求分析的核心:在延迟、吞吐、数据源、SLA、成本五个约束之间找到可行解,再反推 Databricks 组件选型与资源配置 图中数值为教学示例,实际项目需根据业务重新测算

六、常见误区与检查清单

在需求分析阶段,有几个高频误区值得警惕。第一,只问"要多快"而不问"多快算够"。延迟目标过高会显著推高成本,很多场景 5 秒和 500 毫秒对业务价值没有区别。第二,忽略峰值。按平均值规划资源,大促或故障恢复时的流量尖峰会导致严重积压。第三,把数据源当成静态清单。数据源会新增、会变更 schema、会调整分区策略,需求分析时要预留扩展位。第四,SLA 只写可用性不写数据质量。数据延迟到达、重复、乱序都是实时场景的常态,必须明确平台如何处理。

可以用下面这份检查清单快速自查需求分析是否完整:

  1. 是否用一句话说清了核心场景、用户、用途和失败后果?
  2. 延迟是否拆分为采集、处理、写入、查询四段,并给出 P95/P99 目标?
  3. 吞吐是否区分平均与峰值,峰值系数是否合理?
  4. 数据源是否列出类型、协议、顺序保证、schema 变更频率?
  5. SLA 是否包含可用性、RTO、RPO 和数据质量承诺?
  6. 成本是否给出月度预算和单位处理成本上限?
  7. 是否做过容量估算,并判断目标在预算内是否可行?
  8. 设计目标是否可度量、可验证,并有明确的验证方式?
需求分析不是一次性工作。业务量、数据源和 SLA 会随业务演进而变化,建议把上述指标纳入监控,当实际值持续偏离设计目标时,触发需求复审和架构调整。