我正在为我的项目评估规则引擎。该项目将基于hadoop。我已经使用DROOLS完成了一些POC。基本上,我在Mapper端使用DROOL。基于此,以下是我的观察和询问。
1)a)我使用DROOLS在300万个对象上触发了规则(大约花了17秒)b)我使用了if / else循环与DRL文件中的逻辑相同的逻辑,对300万个没有流口水的对象使用了简单的Java对象.17秒)。 b大约比a。快100倍这是正常行为吗?有什么办法可以将规则编译为Java字节码/类。
2)什么是除DROOLS之外最快的基于Java的规则引擎框架。有人使用普通GROOVY开发了规则引擎。还有其他将业务规则编译为Java字节码的框架建议,这将导致更快的规则评估吗?
3)拥有一些最适合hadoop的DSL / Rule框架的经验。
最佳答案
关于Drools / Java(Q1):
您可能没有进行公平的比较。 “对300万个对象触发规则”有几种方法,您可能没有选择最快的方法。
众所周知,在前向链接引擎中运行许多模式/许多对象匹配算法时,会产生相当大的开销。您可能根本不需要规则,或者更简单(更有效)的规则评估技术可能就足够了。
至于比较规则引擎:这是一个非常棘手的话题。每个基准都有其特殊的使用情况,并且一些供应商已通过一些著名的(学术性)测试或其他测试对引擎进行了优化,以提高性能。
至于第二季度,我不知道。考虑到开发一个好的规则引擎需要花费很多精力,时间和精力,我对此非常怀疑。
我认为您无法获得第三季度的答案。 “最佳”永远不会与某些应用程序框架相关-标准是规则的数量和复杂度与数据的数量和复杂度相结合。
关于hadoop - hadoop的规则引擎,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23468910/