前言
很长一段时间在搞过增长和促销的事情,在实现各种活动和玩法时非常心累。每个新的玩法,都需要填一点代码,每次改动都需要走流水线发一次版,烦躁且痛苦。
对于这种,输入不确定,过程不确定,结果不确定的事情,搞个规则引擎处理这些问题往往比较高效。
要求:功能要足够强,配置要足够简单,性能要高,可以以多种方式接入。最重要是能够把活甩给运营。
规则引擎
规则引擎从功能上可以分为 通用规则引擎
和 业务规则引擎
。顾名思义前者解决通用的问题,更灵活,难用。后者和具体的业务强绑定,但往往有个后台给用户点点点,更宜用。我们这里主要说通用规则引擎。
从规则编写上也可以分两种:解析表达式
语言脚本
。前者使用表达式,相对简单(运营能接受的下限)。后者纯纯写代码,唯一的好处是,不用发版,热更新。
我们来看看比较有名的规则引擎:
基于表达式规则引擎 | 表达能力 | 性能 | 其他 |
---|---|---|---|
drools(java) | 编写难度高,与java强相关 | rete算法,顺序执行 | 老牌规则引擎,反正我不用 |
gengine(基于golang和AST) | 自定义简单语法,与golang弱相关 | 高,无论是规则间、还是规则内,都支持并发执行 | b站广泛使用,并在20年开源 |