3. 决策引擎架构设计:模块组成、输入输出层、规则执行层、数据存储层

决策引擎是信贷策略编排的核心执行单元,其架构设计直接决定了策略的响应速度、可维护性与扩展性。一个生产级的决策引擎通常采用分层解耦的架构模式,将数据接入、规则计算、结果输出与持久化存储分离为独立模块。本节从模块组成、输入输出层、规则执行层、数据存储层四个维度展开架构设计详解。

3.1 决策引擎模块组成总览

决策引擎由以下核心模块构成,各模块通过标准化接口通信,形成可插拔的组件体系:

模块名称 职责说明 关键组件
输入适配层 接收外部请求,完成协议转换、参数校验与数据标准化 API Gateway、请求解析器、字段映射器
规则执行层 编排并执行策略节点,驱动规则链、决策表、评分卡、模型调用 策略调度器、规则引擎(Drools/自研)、表达式计算器
数据存储层 持久化决策上下文、规则元数据、运行日志与结果快照 关系库、缓存、对象存储、时序库
输出适配层 封装决策结果,触发后续动作(拒绝、通过、人工审核、外部通知) 结果组装器、事件发布器、回调处理器
监控与治理层 采集运行时指标、告警、链路追踪与灰度切换 Metrics Collector、Tracer、Feature Flag
架构原则:输入层与输出层完全对称,规则执行层无状态设计,数据存储层按读写分离与冷热分层规划。任何模块的变更不应影响其他模块的接口契约。
决策引擎模块组成架构图 决策引擎模块组成架构图 输入适配层 API Gateway / 请求解析 规则执行层 策略调度 / 规则引擎 数据存储层 关系库 / 缓存 / 对象存储 输出适配层 结果组装 / 事件发布 监控与治理层 指标 / 链路 / 灰度 架构要点: • 输入层与输出层对称设计,规则执行层保持无状态,便于水平扩展。 • 数据存储层按读写分离与冷热分层规划,缓存层优先承载高频上下文查询。 • 监控治理层横切所有模块,通过统一指标暴露运行时健康度。

3.2 输入输出层设计

3.2.1 输入层:标准化请求与上下文构建

输入层负责将外部异构请求(HTTP、RPC、MQ)转换为引擎内部统一的决策上下文(Decision Context)。核心设计要点包括:

  • 协议适配:支持 RESTful、gRPC、消息队列三种接入方式,由 API Gateway 统一路由。
  • 参数校验:对必填字段(如身份证号、申请金额、产品编码)进行非空、格式与范围校验,拒绝无效请求。
  • 字段映射:将外部字段名映射为内部标准名称(如 apply_amt → loan_amount),消除多产品线差异。
  • 上下文构建:将校验后的参数封装为 DecisionRequest 对象,携带请求 ID、时间戳、渠道标识等元信息。
最佳实践:输入层应实现“请求幂等校验”,通过请求 ID 去重,防止重复进件导致策略重复执行或额度超发。

3.2.2 输出层:结果封装与动作路由

输出层将规则执行层产生的决策结果(通过/拒绝/人工审核)封装为标准响应,并根据决策码触发后续动作:

决策码 含义 典型动作
APPROVED 审批通过 调用放款接口、发送通过通知、更新授信额度
REJECTED 拒绝 返回拒绝原因码、写入黑名单候选、发送拒绝通知
MANUAL_REVIEW 人工审核 创建工单、推送审核队列、标记高优先级
ESCALATION 升级处理 触发风控复核流程、通知高级审批人

输出层同时负责事件发布:将决策结果以异步消息形式发送至下游系统(如催收、报表、数据湖),实现决策与动作的解耦。

3.3 规则执行层架构设计

规则执行层是决策引擎的“大脑”,负责按照策略编排顺序执行规则节点。其核心架构包含以下组件:

  • 策略调度器(Strategy Scheduler):解析策略 DAG(有向无环图),按拓扑序依次执行节点,支持并行分支与条件跳转。
  • 规则引擎(Rule Engine):执行原子规则(如“年龄 > 18”),支持规则优先级、命中后短路(short-circuit)与规则组聚合。
  • 表达式计算器(Expression Evaluator):处理复杂数学运算、字符串拼接、日期计算,通常集成 Groovy、MVEL 或自研 DSL。
  • 模型调用器(Model Invoker):调用外部评分卡、机器学习模型(如 XGBoost、神经网络),通过 RPC 或本地 ONNX 推理。
性能关键:规则执行层必须保持无状态设计,所有运行时数据均从输入上下文或缓存读取。每次决策完成后立即释放线程资源,避免上下文残留。
规则执行层内部流程 规则执行层内部流程 决策上下文 策略调度器 规则引擎 表达式计算器 模型调用器 决策结果 执行流程说明: 1. 策略调度器从决策上下文中读取参数,按 DAG 顺序分发至各执行单元。 2. 规则引擎、表达式计算器、模型调用器并行或串行执行,结果写回上下文。 3. 所有节点执行完毕后,调度器汇总上下文中的最终决策码,输出至结果层。

3.4 数据存储层架构设计

数据存储层为决策引擎提供持久化与缓存能力,按数据特性分为三个子层:

3.4.1 存储分层策略

存储层级 存储内容 选型建议 访问模式
热存储(缓存层) 高频规则元数据、产品参数、用户画像摘要 Redis / Memcached 读多写少,毫秒级响应
温存储(关系库) 决策上下文快照、规则版本、策略编排定义 MySQL / PostgreSQL 读写均衡,支持事务
冷存储(对象/时序库) 全量决策日志、历史快照、审计轨迹 MinIO / HDFS / InfluxDB 写多读少,批量归档

3.4.2 关键数据模型

决策上下文快照是存储层的核心实体,其简化结构如下:

-- 决策上下文表
CREATE TABLE decision_context (
    request_id      VARCHAR(64) PRIMARY KEY,
    product_code    VARCHAR(32) NOT NULL,
    channel         VARCHAR(32),
    input_params    JSON NOT NULL,          -- 原始入参
    feature_values  JSON,                  -- 衍生特征
    rule_results    JSON,                  -- 每条规则的命中结果
    final_decision  VARCHAR(32),           -- 最终决策码
    decision_reason VARCHAR(256),          -- 决策原因
    created_at      DATETIME(3) NOT NULL,
    updated_at      DATETIME(3) NOT NULL,
    INDEX idx_product_created (product_code, created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
注意:冷存储中的决策日志应设置合理的生命周期策略(如 90 天归档、180 天清理),避免存储膨胀影响查询性能。缓存层必须设置 TTL,防止脏数据长期驻留。

3.5 架构设计要点总结

  • 分层解耦:输入层、执行层、存储层、输出层职责单一,通过接口契约通信,任一层的内部重构不影响其他层。
  • 无状态执行:规则执行层不持有会话状态,所有数据从输入上下文或缓存读取,便于水平扩展与故障恢复。
  • 读写分离:热存储承载高频读取,温存储承载事务写入,冷存储承载海量归档,避免单一存储瓶颈。
  • 可观测性:监控治理层横切所有模块,通过 Metrics、Tracing、Logging 三支柱保障引擎运行时健康。
架构决策记录(ADR):在早期设计阶段,建议将规则执行层与数据存储层之间的交互限制为“执行层只读缓存+异步写库”,避免规则执行过程中阻塞等待数据库写入,从而将单次决策 P99 延迟控制在 50ms 以内。