3. 决策引擎架构设计:模块化架构与核心职责

授信决策引擎是额度模型与评分策略落地的核心执行单元。一个生产级的决策引擎必须支持高并发、低延迟、可编排、可观测。本章将拆解其模块化架构,明确每个模块的职责边界与协作关系。

3.1 模块化架构总览

决策引擎采用微内核 + 插件化设计,核心模块包括:规则引擎、模型引擎、变量工厂、决策流编排。四个模块通过标准化的上下文对象(DecisionContext)传递数据,形成完整的决策流水线。

决策引擎模块化架构总览 决策引擎模块化架构总览 规则引擎 Rule Engine 模型引擎 Model Engine 变量工厂 Variable Factory 决策流编排 Flow Orchestrator DecisionContext 数据总线 输入:申请数据 / 征信 / 行为 输出:额度 / 利率 / 拒绝原因 说明:决策流编排模块负责调度规则引擎、模型引擎、变量工厂的执行顺序与条件分支 所有模块通过 DecisionContext 共享变量、中间结果与最终决策

3.2 各模块职责详解

模块名称 核心职责 典型组件/技术 性能要求
规则引擎 执行 if-then 逻辑规则,如黑名单、多头借贷、反欺诈规则 Drools、EasyRules、自研 RETE 网络 单规则 < 1ms,千条规则 < 10ms
模型引擎 加载并运行评分卡、XGBoost、神经网络等模型 PMML、ONNX、Paddle Serving 单模型 < 5ms,支持模型热更新
变量工厂 从原始数据衍生加工特征变量,如年龄、收入比、近 3 月查询次数 Groovy 脚本、SQL、C++ 高性能计算 单变量 < 0.5ms,支持变量血缘追踪
决策流编排 定义规则、模型、变量的执行顺序、条件分支、循环与终止 DAG 调度、状态机、JSON/YAML 配置 编排开销 < 1ms,支持可视化拖拽

3.3 规则引擎:决策的“第一道防线”

规则引擎负责执行确定性逻辑,通常用于快速拒绝高风险申请或触发人工审核。其核心能力包括:

  • 规则匹配:基于 RETE 算法或线性扫描,将输入数据与规则条件匹配。
  • 优先级与冲突解决:支持规则优先级排序,当多条规则同时触发时按 salience 或 LIFO 策略执行。
  • 规则热部署:在不重启引擎的情况下动态增删改规则,支持灰度发布。
  • 决策日志:记录每条规则的命中情况、输入输出,用于事后审计与调优。
实践建议:规则引擎适合处理“硬性边界”逻辑,如年龄 < 18 直接拒绝、命中黑名单直接拒绝。对于需要概率评估的场景,应交给模型引擎处理,避免规则爆炸。

3.4 模型引擎:量化风险的“大脑”

模型引擎负责加载和运行机器学习模型,输出评分、概率或分类结果。生产环境中的模型引擎需要解决以下关键问题:

  • 模型格式标准化:使用 PMML、ONNX 或 Paddle 格式,屏蔽底层训练框架差异。
  • 模型版本管理:支持 A/B 测试、冠军/挑战者模式,实时切换模型版本。
  • 特征对齐:确保训练时的特征工程与线上变量工厂产出的变量完全一致。
  • 性能优化:通过模型量化、剪枝、批处理等手段降低推理延迟。
模型引擎内部执行流程 模型引擎内部执行流程 特征向量输入 模型加载器 推理引擎 评分/概率输出 模型仓库 版本管理 说明:模型引擎支持 PMML/ONNX 格式,通过模型加载器从仓库拉取指定版本 推理引擎执行前向计算,输出评分或概率,同时记录模型版本号用于审计

3.5 变量工厂:特征加工的“中央厨房”

变量工厂是决策引擎中计算密度最高的模块。它从原始数据(如申请表单、征信报告、行为日志)中衍生出模型和规则所需的特征变量。变量工厂的设计要点:

  • 变量分类:基础变量(年龄、性别)、衍生变量(收入负债比)、聚合变量(近 3 月查询次数)、时序变量(额度使用率趋势)。
  • 计算模式:支持在线实时计算(如 SQL 查询、Groovy 脚本)和离线预计算(如 T+1 特征宽表)。
  • 变量血缘:记录每个变量从哪个原始字段、经过何种计算逻辑产生,便于排查问题。
  • 空值处理:定义变量缺失时的默认值、填充策略或拒绝策略。
关键指标:变量工厂的 P99 延迟应控制在 20ms 以内,单次决策涉及的变量数通常在 50~500 个之间。变量计算失败不应阻塞整个决策流,应支持降级或默认值兜底。

3.6 决策流编排:串联一切的“指挥中心”

决策流编排模块定义了规则、模型、变量工厂的执行顺序与条件分支。一个典型的授信决策流可能包含以下阶段:

  1. 变量准备阶段:调用变量工厂计算所有所需特征。
  2. 反欺诈规则阶段:执行黑名单、设备指纹、多头借贷等规则,命中则直接拒绝。
  3. 评分卡模型阶段:调用模型引擎计算信用评分。
  4. 额度定价阶段:基于评分和规则结果,计算授信额度与利率。
  5. 后处理阶段:记录决策日志、触发人工审核或补充材料通知。

决策流编排支持以下高级特性:

特性 说明 应用场景
条件分支 根据中间结果选择不同执行路径 高评分走自动通过,低评分走人工审核
并行执行 无依赖的模块同时执行 同时计算多个模型评分
循环/重试 对失败节点进行有限次重试 外部征信接口超时重试
超时熔断 超过时间阈值后终止当前路径 防止单个模块拖垮整体决策

3.7 模块间协作:DecisionContext 数据总线

所有模块通过 DecisionContext 对象进行数据交换。DecisionContext 是一个线程安全的键值对容器,包含以下核心数据域:

  • inputData:原始申请数据,如身份证号、手机号、收入等。
  • variables:变量工厂产出的所有特征变量。
  • ruleResults:规则引擎的命中记录与中间结论。
  • modelScores:模型引擎输出的评分、概率、分类标签。
  • finalDecision:最终决策结果,包括额度、利率、拒绝原因码。
注意:DecisionContext 的设计必须避免大对象复制,建议使用引用传递或共享内存。在高并发场景下,需注意线程安全与内存泄漏问题,推荐使用对象池复用 Context 实例。

3.8 架构设计最佳实践

基于生产环境的经验,以下实践可显著提升决策引擎的稳定性与可维护性:

  • 模块解耦:每个模块只依赖 DecisionContext,不直接调用其他模块的内部 API。
  • 配置驱动:决策流、规则、模型版本、变量定义全部通过外部配置管理,支持热更新。
  • 可观测性:每个模块输出详细的执行日志、耗时指标、命中统计,接入 Prometheus/Grafana 监控。
  • 灰度发布:新规则或新模型先在小流量上验证,通过后再全量上线。
  • 降级与熔断:当外部数据源或模型服务不可用时,自动降级到备用策略或默认决策。

通过以上模块化架构设计,授信决策引擎能够灵活应对不同产品线、不同风险等级的额度模型评分需求,同时保持高性能与高可用性。