我正在为我的项目评估规则引擎。该项目将基于hadoop。我使用DROOLS完成了一些POC。基本上我在Mapper端使用DROOL。基于以下是我的观察和查询。
1)a)我使用DROOLS(需要大约17秒)在3百万个对象上启动规则b)我使用if / else循环应用相同的逻辑,如同DRL文件中的3百万个对象,没有drools,使用简单的Java对象(需要大约.17秒)。 b约为比a快100倍。这是正常的行为吗?有没有办法将规则编译为java字节码/类。
2)除了DROOLS之外,什么是最快的基于Java的规则引擎框架。是否有人使用普通GROOVY开发了规则引擎。任何其他框架建议,将业务规则编译为java字节代码,这将导致更快的规则评估?
3)有人对hadoop最适合的DSL / Rule框架有一些经验。
答案 0 :(得分:5)
关于Drools / Java(Q1):
您可能没有建立公平的比较。有几种方法可以解决300万个对象的问题,而你可能没有选择最快的。
众所周知,当您在正向链接引擎中运行许多模式/多对象匹配算法时,会产生相当大的开销。您可能根本不需要规则,或者更简单(更有效)的规则评估技术就足够了。
至于比较规则引擎:这是一个非常不确定的主题。每个基准测试都有其独特的使用场景,一些供应商已经通过一些着名(学术)测试或其他方式优化了他们的引擎以获得更好的性能。
至于Q2,我不知道。考虑到开发一个好的规则引擎需要很多精力,时间和精力,我对此非常怀疑。
我不认为你能得到第三季的答案。 "最佳"永远不会与某些应用程序框架相关 - 标准是规则的数量和复杂性,与数据的数量和复杂性相结合。