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 架构示意图 Lambda 架构:批流分离 实时数据源 批处理层 (Batch Layer) 流处理层 (Speed Layer) 离线视图 (准确) 实时视图 (近似) 服务层 (Serving Layer) 批流结果合并,对外提供统一 API
Lambda 架构的痛点: 维护两套代码逻辑(批处理 + 流处理)导致开发成本高、运维复杂;批流结果不一致时,排查难度大。在金融压力测试中,若批流视图出现偏差,可能导致风控策略误判。

2.4 Kappa 架构:流批一体的简化演进

Kappa 架构由 Jay Kreps(Kafka 创始人)提出,核心思想是:只用一套流处理引擎,通过数据重放(Replay)来模拟批处理。其设计要点如下:

  • 统一日志层:所有数据以不可变日志形式存储在 Kafka 等消息队列中,支持回溯消费。
  • 流处理引擎:Flink / Kafka Streams 等引擎从日志中消费数据,实时计算并输出结果。
  • 重放机制:当需要重新计算历史数据(如修正模型参数)时,只需重置消费偏移量,从指定时间点重新处理。
Kappa 架构示意图 Kappa 架构:流批一体 实时数据源 统一日志层 (Kafka / Pulsar) 流处理引擎 (Flink / Kafka Streams) 结果输出 / 服务层 重放 (Replay) 重放历史数据实现“批处理”效果
Kappa 架构在压力测试中的优势: 只需维护一套流处理代码,模型迭代时通过重放历史数据即可完成回测,大幅降低开发与运维成本。适合场景包括:实时 VaR 计算、动态压力情景生成、日内流动性监控。

2.5 架构选型建议

在金融压力测试特征实时计算项目中,架构选型需综合考虑以下因素:

评估维度 推荐 Lambda 推荐 Kappa
历史数据重算频率 低(日/周级重算) 高(模型频繁迭代)
延迟要求 秒级 + 离线准确 秒级,可接受近似
团队技术栈 已有 Hadoop/Spark 批处理 已有 Kafka + Flink 流处理
监管合规 需要全量历史可审计 日志可回溯,满足审计
运维复杂度 高(两套管道) 中(一套管道)
实战建议: 对于新建的金融压力测试平台,优先评估 Kappa 架构。若已有成熟的批处理基础设施,可采用 Lambda 架构作为过渡方案,并逐步向流批一体演进。本课程后续案例将基于 Kappa 架构展开。