这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天
什么是规则引擎
定义
规则引擎即是:可降低复杂业务逻辑组件复杂性、降低应用程序的维护和可扩展性成本的组件!
为什么要使用
业务规则经常变化,系统需依据业务的变化,实现快速、低成本的迭代更新。
主流规则引擎
| 序号 | 名称 | 开源情况 | 流行度 | 运行模式 | 备注 |
|---|---|---|---|---|---|
| 1 | llog | 商业 | 非常出名 | / | 价格昂贵,不推荐 |
| 2 | drools | 开源 | github 3.2k | 嵌入式、分离式 | 支持可视化等整个配套,是一个完整的BMRS系统(业务规则管理系统),同时其生态很活跃。 |
| 3 | esayRule | 开源 | github 2.6k | 嵌入式 | 支持yml、java、注解方式配置规则,但是后两者无法实现动态加载。 |
| 4 | qlexpress | 开源 | github 2.3k | 嵌入式 | 支持java方式书写规则,且支持动态加载,但加载比较耗时。后续还有Aviator、Vincio均是类似性质,故不予赘述。 |
| 5 | uRule | 商业 | github 1.1k | 嵌入式、分离式 | 除了部分开源外,其他方面基本和drools差不多,也是一套完整的 BMRS系统,且是国内开发,学习和使用门槛更低。 |
| 6 | logstash | 开源 | 出名 | 分离式 | 它不算规则引擎,但也放这儿了。想到它也是做数据处理,且支持正则、模式匹配等简单数据处理。也许某些公司某些场景,就刚刚就能用上。 |
| 7 | jess | 商业 | 文档巨少 | / | 不推荐 |
| 8 | jruleengine | 开源 | 国内几乎没咋用 | 嵌入式 | 不推荐 |
| 9 | jlisa | 商业 | 同上 | / | 不推荐 |
什么是编译
编译就是将高级语言翻译成汇编语言或者机器语言的过程,通俗的说就是把高级语言程序员说的话翻译成机器能听懂的话.
解释型语言和编译型语言
- 编译型语言要求使用编译器一次性将所有源代码编译为一个可执行程序,一次编译可重复执行。代表语言有C、C++、Golang
- 解释型语言是使用解释器一边执行一边转换,用到些源代码就转换哪些,不会生成可执行程序。代表语言有JavaScript、Python、PHP、Shell等。