2. 实时计算基础:概念、对比与架构演进
在金融压力测试场景中,风险指标(如 VaR、流动性覆盖率、压力损失)的时效性直接决定了风控决策的有效性。传统 T+1 批处理模式已无法满足高频交易、实时盯市和动态压力测试的需求。本章将系统梳理实时计算的核心概念、批处理与流处理的本质差异,以及两种主流架构——Lambda 与 Kappa 的设计哲学与适用场景。
2.1 实时计算的核心概念
实时计算(Real-time Computing)是指数据从产生到处理完成的时间延迟被压缩到秒级甚至毫秒级,使系统能够立即响应并输出结果。在金融风控领域,实时计算通常包含以下三个关键维度:
- 低延迟(Low Latency):从事件发生到结果可见的时间窗口,压力测试中通常要求 < 1 秒。
- 持续处理(Continuous Processing):数据流无界、不间断,系统需具备背压(Backpressure)处理能力。
- 状态管理(State Management):跨事件维护中间聚合结果(如滚动窗口 VaR、累计敞口),支持 Exactly-Once 语义。
金融场景提示: 实时计算并非追求绝对的“零延迟”,而是满足业务 SLA(Service Level Agreement)。例如,日内压力测试的延迟容忍度通常为 1~5 秒,而高频交易风控则要求微秒级。
2.2 批处理与流处理的对比
批处理(Batch Processing)与流处理(Stream Processing)是两种截然不同的数据处理范式。下表从多个维度进行对比:
| 对比维度 | 批处理 | 流处理 |
|---|---|---|
| 数据范围 | 有界数据集(历史全量) | 无界数据流(持续到达) |
| 处理延迟 | 分钟 ~ 小时级 | 毫秒 ~ 秒级 |
| 触发方式 | 定时调度(如每小时/每天) | 事件驱动(数据到达即处理) |
| 计算模型 | MapReduce / SQL-on-Hadoop | DAG / 窗口函数 / 状态算子 |
| 容错机制 | 任务重试 + 中间结果持久化 | Checkpoint + 状态快照 + 回放 |
| 典型引擎 | Hive, Spark Batch, MapReduce | Flink, Kafka Streams, Spark Streaming |
| 压力测试适用性 | 历史回测、归因分析、监管报表 | 实时盯市、动态限额、预警触发 |
关键结论: 批处理擅长处理“已知的、有界的、对延迟不敏感”的计算任务;流处理则适用于“未知的、无界的、对延迟敏感”的实时风控场景。现代压力测试系统通常采用“流批一体”策略,即同一套 SQL/API 同时支持两种模式。
2.3 Lambda 架构:批流分离的经典方案
Lambda 架构由 Nathan Marz 提出,旨在同时满足批处理的准确性与流处理的低延迟。它将数据管道拆分为三层:
- 批处理层(Batch Layer):存储全量原始数据,定期执行批量计算,生成准确的离线视图(如日终压力测试报告)。
- 流处理层(Speed Layer):实时处理新到达数据,提供低延迟的近似结果(如实时 VaR 估算)。
- 服务层(Serving Layer):合并批处理层与流处理层的结果,对外提供统一查询接口。
Lambda 架构的痛点: 维护两套代码逻辑(批处理 + 流处理)导致开发成本高、运维复杂;批流结果不一致时,排查难度大。在金融压力测试中,若批流视图出现偏差,可能导致风控策略误判。
2.4 Kappa 架构:流批一体的简化演进
Kappa 架构由 Jay Kreps(Kafka 创始人)提出,核心思想是:只用一套流处理引擎,通过数据重放(Replay)来模拟批处理。其设计要点如下:
- 统一日志层:所有数据以不可变日志形式存储在 Kafka 等消息队列中,支持回溯消费。
- 流处理引擎:Flink / Kafka Streams 等引擎从日志中消费数据,实时计算并输出结果。
- 重放机制:当需要重新计算历史数据(如修正模型参数)时,只需重置消费偏移量,从指定时间点重新处理。
Kappa 架构在压力测试中的优势: 只需维护一套流处理代码,模型迭代时通过重放历史数据即可完成回测,大幅降低开发与运维成本。适合场景包括:实时 VaR 计算、动态压力情景生成、日内流动性监控。
2.5 架构选型建议
在金融压力测试特征实时计算项目中,架构选型需综合考虑以下因素:
| 评估维度 | 推荐 Lambda | 推荐 Kappa |
|---|---|---|
| 历史数据重算频率 | 低(日/周级重算) | 高(模型频繁迭代) |
| 延迟要求 | 秒级 + 离线准确 | 秒级,可接受近似 |
| 团队技术栈 | 已有 Hadoop/Spark 批处理 | 已有 Kafka + Flink 流处理 |
| 监管合规 | 需要全量历史可审计 | 日志可回溯,满足审计 |
| 运维复杂度 | 高(两套管道) | 中(一套管道) |
实战建议: 对于新建的金融压力测试平台,优先评估 Kappa 架构。若已有成熟的批处理基础设施,可采用 Lambda 架构作为过渡方案,并逐步向流批一体演进。本课程后续案例将基于 Kappa 架构展开。