【青训营】1月29日总结

85 阅读2分钟

这是我参与「第五届青训营」笔记创作活动的第12天

规则引擎

  1. 规则引擎是什么:规则引擎是一种嵌入在应用服务中的组件,可以将灵活多变的业务决策从服务代码中分离出来。通过使用预定义的语义模块来编写业务逻辑规则。在执行时接受数据输入、解释业务规则,并做出决策。规则引擎能大大提高系统的灵活性和扩展性。

  2. 规则引擎用在哪里:在字节跳动,规则引擎已经在风控识别、活动运营、配置下发等场景得到了广泛的应用。开发人员可以将业务逻辑与服务代码解耦,实现灵活、高效的业务策略发布。目前字节基于规则引擎的动态决策系统已经承接了千万级别QPS的决策请求。

  3. 为什么要用规则引擎: 解决了开发人员重复编码的问题,业务决策与服务本身解耦,提高服务可维护性

    • 引入规则引擎前,业务人员提出修改决策后由开发人员进行代码编写。
    • 引入规则引擎后,业务人员直接根据需求在开发人员提供的规则引擎下进行逻辑实现,开发人员只需负责对规则引擎进行维护
  4. 组成部分:

    • 数据输入:支持接受使用预定义的语义编写的规则作为策略集,比如“price > 500”
    • 规则理解:按照预先定义的词法、语法、优先级、运算符等正确理解业务规则所表达的语义
    • 规则执行:根据输入数据对策略集中的规则进行正确的解释和执行,并对执行过程中的数据类型进行校验,确保执行结果正确
  5. 以上三点组成部分分别对应于编译原理中的:词法分析、语法分析,抽象语法树,参数注入、类型检测