2. 风险拦截模型 Serving 架构总览:在线推理、离线批处理与实时流处理

保险风险拦截模型从训练完成到生产环境落地,需要根据业务场景的延迟要求、数据特征和计算成本,选择不同的 Serving 架构。本章从架构视角出发,系统梳理三种主流推理模式:在线推理、离线批处理和实时流处理,并对比其适用场景、技术栈与部署要点。

2.1 三种架构核心对比

维度 在线推理 (Online) 离线批处理 (Batch) 实时流处理 (Streaming)
延迟要求 毫秒级(< 100ms) 分钟~小时级 秒级(< 10s)
数据源 API 请求(单条) HDFS / 数仓(批量) Kafka / Pulsar(流式)
典型场景 投保实时核保、欺诈拦截 日终风险评分、批量续保审核 行为埋点实时预警、动态定价
计算模式 同步请求-响应 异步分布式任务 持续微批处理
资源特征 GPU/CPU 常驻,弹性伸缩 按需拉起,任务结束后释放 长运行,有状态处理
模型更新 蓝绿部署 / 金丝雀发布 版本快照切换 热加载 / 状态迁移

2.2 在线推理架构(实时核保与欺诈拦截)

在线推理是保险风险拦截中最核心的 Serving 模式,直接面向投保请求、理赔申请等实时交互场景。架构以 API Gateway 为入口,经过 特征工程服务 和 模型推理引擎,最终返回风险评分与决策建议。

关键指标: P99 延迟 < 50ms,吞吐量 > 1000 QPS,支持模型热更新。
在线推理架构(实时核保) 投保客户端 API Gateway 特征工程服务 模型推理引擎 特征存储 (Redis) 模型版本管理 返回风险评分与决策 说明:在线推理要求特征服务与模型引擎同机房部署,避免跨网络调用增加延迟。

在线推理关键组件

  • API Gateway: 负责鉴权、限流、请求路由,支持 gRPC 与 HTTP/2 协议。
  • 特征工程服务: 实时拼接用户画像、保单信息、第三方数据,完成特征标准化与缺失值填充。
  • 模型推理引擎: 使用 Triton Inference Server 或 TorchServe 加载模型,支持 GPU 加速与动态批处理。
  • 特征存储: 高频特征缓存至 Redis,减少重复计算;低频特征从 HBase 或 MySQL 读取。

2.3 离线批处理架构(日终风险评分与批量审核)

离线批处理适用于对延迟不敏感、数据量大的场景,如每日凌晨对全量保单进行风险重评估、批量续保审核。架构以 任务调度中心 为驱动,通过 分布式计算引擎 完成大规模特征工程与模型推理。

最佳实践: 离线批处理建议使用 Spark MLlib 或 XGBoost4J-Spark,将模型推理嵌入 DataFrame 的 UDF 中,避免数据倾斜。
离线批处理架构(日终风险评分) 任务调度中心 HDFS / 数仓 Spark 分布式计算 结果表 / ES 模型文件 (HDFS) 说明:离线批处理通常使用 Spark ML Pipeline 加载 PMML 或 Native 模型, 推理结果写入 Hive 分区表或 Elasticsearch 供下游查询。

离线批处理执行流程

  1. 任务触发: 调度中心(Airflow / DolphinScheduler)按 Cron 表达式触发日终任务。
  2. 数据加载: 从 HDFS 或数据仓库读取待评估保单宽表,分区裁剪避免全表扫描。
  3. 特征工程: 使用 Spark SQL 完成特征聚合、窗口计算,生成模型输入向量。
  4. 模型推理: 加载预训练模型(XGBoost / LightGBM / DNN),通过 mapPartitions 批量推理。
  5. 结果落地: 风险评分写入结果表,高风险保单触发告警或人工审核流程。

2.4 实时流处理架构(行为埋点实时预警与动态定价)

实时流处理介于在线与离线之间,适用于需要秒级响应但数据量持续涌入的场景,如用户行为埋点实时风险预警、基于驾驶行为的车险动态定价。架构以 消息队列 为缓冲,流处理引擎 完成状态管理与模型推理。

避坑提示: 流处理中的模型推理必须考虑状态一致性,避免因数据乱序或重复消费导致评分错误。建议使用 Flink 的 Exactly-Once 语义与事件时间处理。
实时流处理架构(行为预警与动态定价) 行为埋点 / IoT Kafka / Pulsar Flink 流处理引擎 预警 / 定价服务 状态后端 (RocksDB) 模型热加载 说明:Flink 通过 ProcessFunction 集成模型推理,利用广播状态(Broadcast State) 实现模型热更新,无需重启作业。状态后端使用 RocksDB 避免 OOM。

流处理架构关键设计

  • 消息队列: 使用 Kafka 作为数据缓冲,设置合理的分区数(建议为 Flink 并行度的 2~3 倍)。
  • 状态管理: 使用 Flink Keyed State 存储用户会话特征,如 30 秒内点击频次、设备指纹等。
  • 模型推理: 在 ProcessFunction 中调用模型,支持 ONNX Runtime 或 PMML 引擎,避免 Python 进程通信开销。
  • 结果输出: 高风险事件直接写入告警 Topic,动态定价结果更新至 Redis 供在线服务读取。

2.5 架构选型决策矩阵

决策条件 推荐架构 理由
延迟要求 < 100ms,单条请求 在线推理 同步响应,直接返回风险评分
数据量 > 1000 万条/天,无实时要求 离线批处理 分布式计算,成本低,吞吐高
数据持续流入,秒级预警 实时流处理 有状态处理,支持窗口聚合
混合场景:在线 + 离线 Lambda 架构 批流分离,兼顾实时与全量
统一批流,减少维护成本 Kappa 架构 全部走流处理,离线回放历史
实战建议: 保险风险拦截项目初期建议优先实现在线推理(覆盖核心投保流程)与离线批处理(日终全量评估),待数据管道成熟后再引入实时流处理。避免一开始就追求全量实时,导致架构复杂度过高。