我们基于Flink实现了云端的规则引擎,以flink on yarn方式在运行,依赖hadoop和zookeeper,对于边缘侧来说比较重,所以打算调研下轻量级的规则引擎,我们的业务诉求如下:
业务需求背景
1、轻量级
2、支持海量规则
4、便捷的规则启停
5、动态加载
从如下几方面对比目前比较流行的几个规则引擎框架:
drools
1、社区活跃度
drools(3.7k),比较活跃的社区。三者中遥遥领先。
2、SQL支持度
不支持,通过DSL定义规则。有开发工具,生成drl文件。
3、开箱即用(支持JAVA API直接调用)
可直接maven引入依赖,开箱即用。规则需要预先加载,环境初始化比较慢2秒左右。需要自己写规则调度。
4、部署方式
可部署多个kie-server,kie-server为单机模式。
Siddhi
1、社区活跃度
Siddhi(1.2k)。
2、SQL支持度
与flink sql类似,流式处理。定义source、sink,支持多流join。丰富的插件:kafka、redis等。通过类SQL的语言描述事件流任务。
3、开箱即用(支持JAVA API直接调用)
可直接maven引入依赖,开箱即用。规则需要预先加载,环境初始化比较慢2秒左右。需要自己写规则调度。
4、部署方式
第一种方式:Standard Deployment ,单机部署,与drools的kie-server的部署方式类似。
第二种方式:完整的分布式部署
此部署规模已经很接近flink了,但是没有checkpoint的机制。
esper
esper的社区活跃度真不高esper(699),所以我们直接略过。
结论
几个主流的规则引擎其实实现机制都差不多,功能都能满足我们的业务场景,drools在sql支持方面比较弱,优势在社区活跃度。Siddhi的部署方式已经接近Flink,网上都说它比较轻量级,我是真的没看出来。最终打算采用drools,直接通过java api进行调用。自己写个简单的调度,如果上了它的执行调度模块,还不如直接使用flink,flink在这方面成熟多了,有checkpoint、status等机制。对于drools的动态加载,我会单独开一篇文章来详细说明,这个是我们的痛点,基于flink目前机制实现不了的。
本文章来源于互联网,如有侵权,请联系删除!原文地址:轻量级规则引擎调研
就我自身的经历而言,2012年选择返乡创业,从事农业食用菌,10年来深感赚少赔多,基础设施投了一大堆,却身无分文,技术已经走在行业前列却盈利微薄,很多时候想换行业,如今却骑虎难下。 当然我身边也有农业创业的大学生,他们在刚开始的时候,满怀激情,信心十足。于是筹…