2. 实时拦截系统架构
实时拦截系统是保险风控的核心战场。当用户提交投保、理赔或核保请求时,系统必须在毫秒级内完成风险判定并返回决策。本章从整体架构、数据流、决策引擎、规则引擎与模型引擎五个维度,拆解一套生产级实时拦截系统的设计原理。
2.1 整体架构图
实时拦截系统采用分层解耦架构,从上到下依次为:接入层、决策编排层、引擎层与数据层。各层职责清晰,通过异步消息与同步 RPC 协同工作。
架构要点:接入层负责协议转换与流量缓冲;决策编排层是“大脑”,决定走规则还是模型;引擎层执行具体计算;数据层提供高速缓存与持久化。四层之间通过超时熔断与降级策略保障稳定性。
2.2 数据流
一次实时拦截请求的完整数据流分为 6 个阶段,每个阶段都有明确的输入输出与耗时约束。
| 阶段 | 输入 | 处理逻辑 | 输出 | 目标耗时 |
|---|---|---|---|---|
| 1. 请求接入 | HTTP POST / JSON | 参数校验、签名验签、反爬 | 标准化请求对象 | < 5 ms |
| 2. 上下文构建 | 请求对象 + 设备指纹 | 关联用户画像、历史行为、黑名单 | 完整特征上下文 | < 20 ms |
| 3. 策略路由 | 特征上下文 | 根据产品线、渠道、金额路由到对应策略 | 策略 ID 列表 | < 2 ms |
| 4. 规则执行 | 特征 + 策略 ID | 命中规则集,计算风险标签 | 规则命中结果 | < 10 ms |
| 5. 模型推理 | 特征向量 | ONNX/TensorRT 推理,输出风险分数 | 模型分数 + 解释 | < 30 ms |
| 6. 结果聚合 | 规则结果 + 模型分数 | 加权融合、阈值判定、决策输出 | 拦截/放行/人工 | < 3 ms |
性能红线:全链路耗时必须控制在 100 ms 以内,其中模型推理不超过 30 ms,规则执行不超过 10 ms。超出阈值的请求直接降级为“放行+异步复核”。
2.3 决策引擎
决策引擎是编排层的核心组件,负责将规则引擎与模型引擎的输出进行融合决策。它不直接执行计算,而是扮演“裁判”角色。
- 策略路由:根据请求的
product_code、channel、amount三个维度,从策略配置中心拉取对应的策略 ID 列表。 - 并行调用:规则引擎与模型引擎同时执行,决策引擎等待两者返回(或超时)。
- 融合逻辑:支持三种模式——一票否决(规则命中直接拦截)、加权评分(规则标签 + 模型分数加权)、级联决策(先规则后模型)。
- 结果回写:将决策结果、命中规则、模型分数写入消息队列,供离线分析使用。
# 决策引擎核心伪代码
def decide(context: FeatureContext) -> DecisionResult:
# 1. 策略路由
strategy = strategy_router.route(context.product_code, context.channel)
# 2. 并行执行规则与模型
rule_future = executor.submit(rule_engine.evaluate, context, strategy.rule_ids)
model_future = executor.submit(model_engine.predict, context.features)
# 3. 等待结果(带超时)
rule_result = rule_future.result(timeout=0.01) # 10ms
model_result = model_future.result(timeout=0.03) # 30ms
# 4. 融合决策
if rule_result.hit_block_rules:
return DecisionResult(action="BLOCK", reason=rule_result.hit_rules)
score = model_result.score * strategy.model_weight + rule_result.risk_score * strategy.rule_weight
action = "BLOCK" if score > strategy.threshold else "PASS"
return DecisionResult(action=action, score=score)
2.4 规则引擎
规则引擎负责执行由风控专家配置的“if-then”逻辑。它要求高吞吐、低延迟,并支持热更新。
- 规则结构:每条规则包含条件(Condition)、动作(Action)、优先级(Priority)。条件支持 AND/OR 嵌套。
- 执行模式:采用 RETE 算法或线性扫描,根据规则数量选择。少于 500 条时线性扫描更快。
- 热更新:规则存储在 Redis 或配置中心,引擎定期拉取版本号,增量更新规则树。
- 常用规则类型:
| 规则类型 | 示例 | 响应时间 |
|---|---|---|
| 黑名单匹配 | 身份证号命中黑名单库 | < 1 ms |
| 频次控制 | 同一 IP 1 分钟内请求 > 10 次 | < 2 ms |
| 金额阈值 | 投保金额 > 100 万且年龄 < 25 岁 | < 0.5 ms |
| 设备异常 | 设备指纹为模拟器或 Root 设备 | < 1 ms |
| 关联网络 | 手机号与 3 个以上身份证关联 | < 5 ms |
避坑指南:规则引擎不要做复杂计算(如字符串正则解析、循环遍历大列表)。复杂逻辑应前置到特征工程阶段,或交由模型引擎处理。规则引擎只做“是与非”的快速判断。
2.5 模型引擎
模型引擎负责加载预训练的机器学习模型(XGBoost、LightGBM、DNN 等),并提供高性能推理服务。它是实时拦截系统的“智能大脑”。
- 模型部署:使用 ONNX Runtime 或 TensorRT 将训练好的模型转换为推理格式,加载到 GPU 或 CPU 内存中。
- 特征输入:接收来自上下文构建阶段的特征向量(通常为 100~500 维浮点数)。
- 推理输出:输出风险概率(0~1)以及可选的 SHAP 解释值。
- 版本管理:支持 A/B 测试,同一请求可同时调用新旧两个模型,对比效果。
生产建议:模型引擎必须配置 预热(Warm-up)机制,在服务启动时用模拟数据推理一次,避免冷启动导致首次请求超时。同时开启 模型版本灰度,新模型先承接 5% 流量,观察无异常后再全量切换。