规则引擎设计与实现
「字节跳动第五届青训营」笔记
是什么
规则引擎是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并
使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业
务决策。
之前:
之后:
eg:
输入:计算规则、 商品价格、用户标签、商品属性 …
输出:积分
为什么要用
解决开发人员重复编码的问题
业务决策与服务本身解耦,提高服务的可维护性
缩短开发路径,提高效率
规则简单容易配置
可扩展
什么时候用
- 风控对抗
- 活动策略运营
- 数据分析和清洗
怎么实现(编译原理)
理解----->执行----->输入,输出
词法分析、语法分析–>抽象语法树–>参数注入、类型检查
词法分析:把源代码字符串转换为词法单元(Token)的这个过程。
语法分析:在词法分析的基础上识别出表达式的语法结构。
抽象语法树:表达式抽象语法结构的树状表示,对于一个表达式,抽象语法树一定时唯一确定的。
类型检查:验证执行的结果是否为合适的数据类型。在抽象语法树中,通常会验证某节点的子节点的数据类型是否合法。
参数注入:在规则执行过程中,使用输入的参数值来计算语法树中的标识符节点值的过程。
相关参考:
Java规则引擎:easy-rules
用Nacos ,里面修改配置的jar包配置文件,springBoot 会自动更新内容,我们的动态实时更新规则,就是这样实现的。
go的demo