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 规则生命周期管理
规则从创建到退役需经历六个阶段,每个阶段都有明确的审批与验证节点。灰度发布场景下,规则的生命周期管理尤为重要,直接决定发布的安全性与可追溯性。
- 创建(Create):通过规则编辑器或 API 提交规则定义,自动生成版本号与唯一 ID。
- 测试(Test):在沙箱环境使用历史行情回放,验证规则逻辑正确性与性能指标。
- 灰度(Canary):按灰度策略(品种、用户、地域)逐步放量,监控触发率与误报率。
- 审批(Approve):灰度期结束后,由风控委员会或自动化审批系统确认规则可全量发布。
- 全量(Active):规则在全量生产环境生效,持续监控运行状态。
- 退役(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+ |
优化方向:过滤规则应优先使用位运算与哈希匹配,避免正则表达式;风控规则可预编译条件表达式;业务规则建议采用缓存机制减少重复计算。