规则引擎设计与实现篇 | 青训营笔记

113 阅读3分钟

这是我参与「第五届青训营」笔记创作活动的第 6 天。笔记旨在记录自己的学习过程以及跟更多人分享交流,重点讲干货,不扣细节,从整体认知。废话不多说,上内容!!!

本堂课重点内容

  • 了解规则引擎的组成部分和应用场景。
  • 学习并掌握规则引擎的设计与实现原理。
  • 明确一个规则引擎的设计目标,并完成各部分的设计与实现步骤拆解。
  • 动手实现规则引擎项目,完成预定目标。

详细知识点介绍

认识规则引擎

规则引擎的定义

规则引擎是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策。

解决开发人员重复编码的问题 :

业务决策与服务本身解耦,提高服务的可维护性缩短开发路径,提高效率

组成部分
  1. 数据输入

支持接受使用预定义的语义编写的规则作为策略集。比如“price > 500”

接受业务的数据作为执行过程中的参数,比比如价格、标签等

  1. 规则理解

能够按照预先定义的词法、语法、优先级、运算符等正确理解业务规则所表达的语义。

  1. 规则执行

根据执行时输入的参数对策略集中的规则进行正确的解释和执行。同时对规则执行过程中的数据类型进行检查,确保执行结果正确

应用场景
  1. 风控对抗

与黑灰产的对抗过程中,策略研发和产品需要能够根据黑灰产特征进行快速识别和对抗。规则引擎作为风控系统的核心,使产研人员能够不断的调整和优化对抗策略,以实现最好的风控识别效果。

  1. 活动策略运营

业务活动的运营需要及时根据用户效果反馈进行运营策略的优化和调整。引入规则引擎后,可以将服务代码与业务运营逻辑解耦,提高运营策略的迭代效率。方便新玩法的探索和效果验证

  1. 数据分析和清洗

在数据分析系统中使用规则引擎可以便捷的实现对数据进行整理、清洗和转换。数据分析师可以根据不同的需求来自定义数据处理的规则,方便快捷的产出所需要的数据。

编译原理基本概念

1.png

词法分析

2.png

语法分析

3.png

抽象语法树

4.png

5.png

类型检查

6.png

设计一个规则引擎

设计目标

1.png

词法和语法分析

2.png

3.png

语法树执行和类型检查

4.png

实践练习例子

规则引擎的实现

1.png

课后个人总结

关于文中代码项目下载

  1. 安装 Git,参考 链接
  2. 登录 Github clone 链接
  3. 从 Github 上克隆项目,参考 链接

环境搭建

  • go语言环境搭建

www.runoob.com/go/go-envir…

  • 需要安装docker环境

www.runoob.com/docker/wind…

  • 安装docker-compose工具

www.runoob.com/docker/dock…

项目clone到本地后,可以执行测试脚本来测试环境的可用性。如果有错误欢迎百度和Google解决

git clone https://github.com/qimengxingyuan/young_engine.git
chmod a+x ./setup.sh
./setup.sh

脚本执行成功,则环境可以支持项目的执行

引用参考

  1. 字节录播课
  2. 规则引擎的设计与实现
  3. 后端专场 学习资料三 第五届字节跳动青训营