go小白入门 | 青训营笔记

119 阅读2分钟

青训营课程笔记

这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天,今天主要学习了规则引擎设计与实现

规则引擎作用

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

其作用有:首先是风控场景,识别黑产;其次可以对用户进行定制化的内容分发;最后还能便于修改需求调节节约时间成本。

第三代规则引擎

经过三代规则引擎的迭代,最新一代规则引擎具有配置简化、对开发者友好(仅限于对以往规则引擎熟悉的人来使用更方便,新人需要重新学习一门语言)的特点。

实现规则引擎

首先我们知道规则引擎支持四种模式 a.顺序执行模式 b.并发执行模式 c.混合执行模式d.逆混合执行模式。本质上开发需要用到1.逻辑运算2.四则运算3.if...else 选择结构4.预加载的 API。

同时在学习过程中阅读文章发现作者推荐使用gengine pool。gengine有单实例 API,在 pool中提供了相应的实现,而且它的规则池表现出色,让用户不用担心 gengine实例的数量,而且 gengine pool可以很好的解决用户的规则状态管理问题,从而有效地解决了线程的安全性问题。随着业务规则的不断增加,例如单场景到达10000个规则,如用户只需修改一条规则,但是依然采用全量更新,将在规则编译阶段进行,给计算机CPU资源带来了很大浪费,为此,gengine还支持增量更新(用户改动哪个规则就去编译哪个规则,没有改动的规则,则不进行处理)来更新示例的规则。

ps:此处贴上一个测试案例可以尝试,GitHub链接如下大家可以尝试运行一下。

github.com/bilibili/ge…