3. 规则引擎基础:规则定义、规则分类与生命周期管理

在高频行情灰度发布体系中,规则引擎是核心决策组件。它负责将业务逻辑、风控策略与数据过滤条件从硬编码中剥离,形成可配置、可热加载、可审计的规则集。本节将系统讲解规则的定义范式、分类体系以及从创建到退役的全生命周期管理。

3.1 规则定义:结构化表达

一条完整的规则由三要素构成:条件(Condition)、动作(Action)、元数据(Metadata)。条件描述触发场景,动作描述执行结果,元数据记录版本、作者、生效范围等管理信息。

要素 字段示例 说明
条件 行情品种 == "BTCUSDT" && 最新价 > 50000 支持逻辑运算符、比较符、正则匹配
动作 action: "reject" 或 action: "transform" 拒绝、转换、告警、记录日志等
元数据 version: "1.2.0", author: "risk-team" 版本号、创建时间、灰度标签、优先级
实践要点:规则定义应使用 DSL(领域特定语言)或 JSON/YAML 结构化格式,避免在规则体内嵌入函数调用或数据库查询,以保证规则引擎的轻量级与可移植性。

3.2 规则分类:三大核心类别

根据在高频行情场景中的职责,规则分为三类:风控规则、业务规则、过滤规则。三者按优先级串联执行,形成规则链。

执行顺序:风控规则 → 过滤规则 → 业务规则。风控规则具有最高优先级,一旦触发即终止后续规则处理。

3.2.1 风控规则(Risk Control Rules)

用于检测异常行情、防止市场操纵、控制系统风险。典型场景包括:价格突变检测、交易量异常放大、订单簿深度骤降等。风控规则通常配置为硬阻断模式,触发后直接拒绝行情数据进入下游系统。

3.2.2 业务规则(Business Rules)

实现业务逻辑的灵活编排,例如:行情数据精度转换、合约乘数调整、交易对别名映射。业务规则支持灰度发布,允许按品种、用户组、地域逐步生效。

3.2.3 过滤规则(Filter Rules)

负责数据清洗与降噪,例如:去除重复 tick、过滤无效时间戳、剔除异常买卖价差。过滤规则通常以白名单/黑名单形式配置,性能要求最高,需在微秒级完成判断。

类别 优先级 典型动作 灰度支持 性能要求
风控规则 最高 拒绝、熔断、告警 否(全局生效) 微秒级
过滤规则 中 丢弃、修正、标记 是(按品种/通道) 纳秒级
业务规则 低 转换、映射、增强 是(按用户/版本) 毫秒级
规则分类与执行链路 原始行情流 风控规则(优先级最高) 价格突变 / 量异常 / 深度骤降 是否触发? 拒绝 / 熔断 过滤规则 业务规则 合规行情流

3.3 规则生命周期管理

规则从创建到退役需经历六个阶段,每个阶段都有明确的审批与验证节点。灰度发布场景下,规则的生命周期管理尤为重要,直接决定发布的安全性与可追溯性。

  1. 创建(Create):通过规则编辑器或 API 提交规则定义,自动生成版本号与唯一 ID。
  2. 测试(Test):在沙箱环境使用历史行情回放,验证规则逻辑正确性与性能指标。
  3. 灰度(Canary):按灰度策略(品种、用户、地域)逐步放量,监控触发率与误报率。
  4. 审批(Approve):灰度期结束后,由风控委员会或自动化审批系统确认规则可全量发布。
  5. 全量(Active):规则在全量生产环境生效,持续监控运行状态。
  6. 退役(Retire):规则被新版本替代或业务下线后,进入退役状态,保留审计日志。
关键约束:规则一旦进入“全量”状态,不允许直接编辑。任何修改必须创建新版本,重新走灰度流程。这是保证规则变更可追溯的核心原则。
规则生命周期状态机 创建 测试 灰度 审批 全量 退役 回退

3.4 规则版本控制与灰度标签

每条规则在生命周期中会经历多个版本。版本号采用 MAJOR.MINOR.PATCH 格式,灰度标签用于标识当前版本在灰度发布中的覆盖范围。

版本号 灰度标签 覆盖范围 状态
1.0.0 canary:5% BTCUSDT 品种 5% 流量 灰度中
1.0.1 canary:20% BTCUSDT + ETHUSDT 20% 流量 灰度中
1.1.0 prod:100% 全品种全量 全量
1.1.1 retired 无 退役
灰度标签设计建议:使用 canary:X% 表示灰度比例,prod:100% 表示全量,retired 表示退役。标签应存储在规则元数据中,规则引擎在加载时根据标签决定是否执行该规则。

3.5 规则引擎性能基准

高频行情场景对规则引擎的性能要求极为苛刻。以下是三类规则在典型硬件(Intel Xeon Gold 6248, 3.0GHz)下的基准参考值:

规则类型 单条规则延迟(P50) 单条规则延迟(P99) 吞吐量(规则/秒)
风控规则 1.2 μs 3.8 μs 800,000+
过滤规则 0.8 μs 2.1 μs 1,200,000+
业务规则 5.6 μs 15.2 μs 180,000+
优化方向:过滤规则应优先使用位运算与哈希匹配,避免正则表达式;风控规则可预编译条件表达式;业务规则建议采用缓存机制减少重复计算。