1. 策略引擎概述
大家好,我是这次课程的主讲。在正式开始之前,我想先聊聊一个很基础但容易被忽略的问题:策略引擎到底是什么?
我见过不少团队,一上来就撸起袖子写规则、搭网关,结果做到一半发现逻辑全乱套了。说白了,就是没搞懂策略引擎的本质。今天这一章,我们就把它彻底讲清楚。
1.1 什么是策略引擎
策略引擎,你可以把它理解成一个专门处理“如果…就…”的决策大脑。它把业务规则从代码里抽出来,放到一个独立的、可配置的容器里运行。
举个例子。你在电商平台下单,系统要判断:
- 用户是不是黑名单?
- 订单金额是否超过风控阈值?
- 当前库存够不够?
- 是否需要人工审核?
这些判断如果写在业务代码里,每次改规则都要重新发版。用策略引擎,你只需要改一条配置,甚至业务人员自己就能调。
核心定义:策略引擎 = 规则定义 + 规则匹配 + 规则执行 + 结果输出。它把“决策”这件事从应用代码中解耦出来。
我个人习惯把策略引擎分成三层:
- 规则层:定义“条件-动作”对,比如“IF 金额 > 10000 THEN 标记为高风险”。
- 推理层:决定规则的执行顺序、冲突解决、优先级处理。
- 执行层:真正跑规则,输出决策结果。
你想想看,这三层如果都揉在业务代码里,维护成本有多高?
1.2 策略引擎的核心价值
为什么要用策略引擎?我总结了四个字:快、稳、透、活。
| 价值维度 | 说明 | 我踩过的坑 |
|---|---|---|
| 快 | 规则变更无需重启服务,秒级生效 | 曾经有一次,线上风控规则写死在代码里,改一条规则花了三天走审批流程… |
| 稳 | 规则执行有确定性,不会因为代码改动引入新bug | 嗯,这个我深有体会。有一次改了一个if条件,结果影响了整个订单流程。 |
| 透 | 每条规则的命中情况、执行路径都可审计、可追溯 | 业务方问“为什么这个订单被拒了?”你直接甩一条规则日志过去,比什么都管用。 |
| 活 | 业务人员可以自己配置规则,减少对研发的依赖 | 我见过最夸张的,运营同学自己写了一套促销规则,跑了一个月才发现有bug… |
我的建议:不要一上来就想搞一个“万能策略引擎”。先想清楚你最需要哪个价值点。比如风控场景,优先要“快”和“透”;营销场景,优先要“活”。
1.3 策略引擎与网关的关系
好,现在聊重点:策略引擎和网关到底是什么关系?
很多人以为网关就是做路由转发、限流熔断的。没错,但那是传统网关。在微服务和云原生架构下,网关正在变成一个流量决策点。
我画了一张图,帮你理解它们的关系:
从图上你能看到:
- 网关是流量的第一道关卡,它负责拦截请求。
- 策略引擎是决策中心,它告诉网关“这个请求该怎么处理”。
- 网关把决策结果透传给后端服务,或者直接阻断请求。
我举个例子你就明白了。假设你在做一个支付网关:
- 用户发起支付请求,到达网关。
- 网关把请求上下文(用户ID、金额、设备指纹等)发给策略引擎。
- 策略引擎跑规则:
IF 金额 > 5000 AND 设备是新设备 THEN 返回“需要短信验证” - 网关收到结果,返回给客户端“请先完成短信验证”。
整个过程,网关只负责“转发”和“执行”,策略引擎负责“思考”。
注意:千万不要把策略引擎的逻辑直接写在网关的过滤器里。我曾经见过一个项目,把几百条风控规则写在网关的filter里,结果每次上线都提心吊胆。策略引擎必须独立部署,独立运维。
1.4 策略引擎在网关中的典型应用场景
说了这么多理论,我们来看看实际场景。我整理了几个最常见的:
| 场景 | 策略引擎的作用 | 网关的配合 |
|---|---|---|
| 灰度发布 | 根据用户ID、地域、设备等条件,决定路由到新版本还是旧版本 | 网关根据策略结果,动态选择上游服务 |
| 动态限流 | 根据实时流量、用户等级、资源水位,动态计算限流阈值 | 网关执行限流动作,返回429或降级响应 |
| 风控拦截 | 基于规则引擎判断请求是否为恶意行为 | 网关直接阻断请求,或返回验证码挑战 |
| 多租户路由 | 根据租户ID匹配不同的服务版本或配置 | 网关根据策略结果,路由到对应的租户服务 |
你想想看,如果没有策略引擎,这些场景怎么实现?
- 灰度发布:改nginx配置,重启网关。
- 动态限流:写死阈值,流量突增时手动改配置。
- 风控拦截:在网关代码里加if-else,越加越乱。
说白了,策略引擎就是给网关装了一个可编程的大脑。网关负责“动手”,策略引擎负责“动脑”。
一个小技巧:刚开始做策略引擎与网关集成时,不要追求“全自动”。先让策略引擎输出一个“建议”,网关根据建议做决策。等规则稳定了,再逐步切换到“自动执行”模式。这样即使策略引擎出问题,网关还能兜底。
1.5 本章小结
好,我们来快速回顾一下:
- 策略引擎是一个独立的决策系统,把“规则”从代码中抽离出来。
- 它的核心价值是快、稳、透、活,四个字记住就行。
- 策略引擎和网关的关系是“大脑”与“手脚”的关系,各司其职。
- 在实际项目中,灰度发布、动态限流、风控拦截是最高频的应用场景。
我记得刚开始做网关策略集成时,犯过一个低级错误:把策略引擎的调用放在网关的同步链路里,结果策略引擎挂了,整个网关都堵死了。后来改成异步调用+本地缓存兜底,才彻底解决。这个坑,后面章节我会详细讲。