3. 实时推理引擎架构:请求入口、特征计算、模型加载、打分输出、日志落盘

实时推理引擎是风控 Model Serving 的核心执行单元,负责将上游传入的实时请求转化为最终的风险分数。本章从架构视角拆解推理引擎的五大关键环节:请求入口、特征计算、模型加载、打分输出、日志落盘。每个环节的设计直接决定系统的吞吐、延迟与可观测性。

3.1 整体架构总览

推理引擎采用流水线(Pipeline)模式,将请求处理拆解为串行与并行的混合阶段。下图展示了标准实时推理引擎的内部模块与数据流向:

实时推理引擎架构总览 实时推理引擎架构总览 请求入口 HTTP/gRPC/消息队列 特征计算 实时特征 + 离线特征 模型加载 模型仓库 / 热加载 打分输出 分数 / 决策 日志落盘 异步写入 / 可观测性 架构要点说明 1. 请求入口与特征计算之间通常有协议转换与参数校验层。 2. 特征计算阶段会调用外部特征服务(如 Redis、HBase)获取离线特征。 3. 模型加载模块支持多版本模型共存,通过路由规则选择版本。 4. 打分输出阶段可同时返回分数、决策标签、置信度等字段。 5. 日志落盘为异步非阻塞,避免影响主链路延迟。

3.2 请求入口:协议适配与流量治理

请求入口是推理引擎的第一道关卡,负责接收外部系统的实时调用。常见的接入方式包括:

协议/方式 适用场景 延迟 吞吐
HTTP/REST 外部 API 调用、调试 中等(~5ms) 中等
gRPC 内部微服务间调用 低(~1ms) 高
Kafka / Pulsar 异步事件流、高吞吐场景 低(~2ms) 极高
工程建议:生产环境推荐gRPC + Kafka 双通道。gRPC 用于同步打分请求,Kafka 用于异步批量处理与离线重放。入口层需实现限流、熔断、鉴权等流量治理能力,防止突发流量打垮引擎。

3.3 特征计算:实时与离线的融合

特征计算是推理引擎中计算密度最高的环节。一个典型的风控请求需要聚合数十到数百个特征,包括:

  • 实时特征:从请求参数中直接提取(如 IP、设备 ID、金额)。
  • 离线特征:从外部存储(Redis、HBase、MySQL)中获取用户画像、历史行为统计。
  • 衍生特征:基于实时与离线数据组合计算(如近 1 小时交易次数、设备关联风险分)。

特征计算阶段通常采用特征工程管道(Feature Pipeline),按依赖关系分步执行:

特征计算管道 特征计算管道(Feature Pipeline) 参数提取 离线特征获取 衍生特征计算 特征拼接 特征校验 特征计算关键点 • 离线特征获取使用批量管道(Pipeline)减少网络 RTT。 • 衍生特征计算支持自定义 UDF 插件,便于扩展。 • 特征校验阶段检查空值、异常值,避免模型输入脏数据。

3.4 模型加载:版本管理与热更新

模型加载模块负责将训练好的模型文件加载到内存中,并提供高效的推理接口。核心设计要点包括:

  • 模型仓库:统一存储模型文件(如 ONNX、PMML、Pickle),支持按版本号、时间戳检索。
  • 热加载机制:模型更新时无需重启引擎,通过监听文件变更或 API 触发重新加载。
  • 多版本共存:支持 A/B 测试场景,不同流量路由到不同模型版本。
  • 资源隔离:每个模型实例独占内存与计算资源,避免相互干扰。
性能指标:模型加载时间应控制在 100ms 以内(含模型反序列化与预热)。生产环境建议使用共享内存(mmap)加载大模型,减少内存拷贝。

3.5 打分输出:结果封装与决策分发

打分输出阶段将模型推理结果封装为统一格式,并分发到下游系统。输出内容通常包含:

字段 类型 说明
score float 风险分数(0~1)
decision string 决策标签(pass / review / reject)
confidence float 模型置信度
model_version string 使用的模型版本
features_hash string 特征指纹,用于离线调试

输出结果通过回调(Callback)或消息队列发送给决策引擎、风控中台、监控系统等下游模块。

3.6 日志落盘:异步非阻塞的可观测性基石

日志落盘是推理引擎的最后一道工序,记录每次请求的完整处理链路。设计原则:

  • 异步写入:使用独立线程池或 RingBuffer 批量写入磁盘,不阻塞主推理链路。
  • 结构化日志:采用 JSON 格式,包含请求 ID、时间戳、特征快照、模型版本、分数、耗时等字段。
  • 日志分级:区分全量日志(用于离线分析)与采样日志(用于实时监控)。
  • 存储策略:按天分片,支持自动压缩与归档,保留周期通常为 30~90 天。
避坑提醒:日志落盘切忌使用同步 I/O 或阻塞队列。推荐使用 LMAX Disruptor 或 Kafka Producer 异步发送,确保日志写入延迟 < 1ms,不影响主链路 P99 延迟。

3.7 各环节延迟预算参考

以下为典型实时风控场景下,推理引擎各环节的延迟预算分配:

环节 预算(ms) 占比
请求入口(协议解析 + 鉴权) 2 10%
特征计算(实时 + 离线) 8 40%
模型加载与推理 6 30%
打分输出与回调 2 10%
日志落盘(异步) 2 10%
总预算 20 100%

实际部署时需根据业务场景调整预算分配。例如,特征计算密集的场景可适当增加特征环节预算,压缩日志落盘开销。