规则引擎专题---2、开源规则引擎对比

这篇具有很好参考价值的文章主要介绍了规则引擎专题---2、开源规则引擎对比。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

开源规则引擎

开源的规则引擎整体分为下面几类:

  • 通过界面配置的成熟规则引擎,这种规则引擎相对来说就比较重,但功能全,比较出名的有:drools, urule。

  • 基于jvm脚本语言,互联网公司会觉得drools太重了,然后会基于一些jvm的脚本语言自己开发一个轻量级的规则引擎,比较出名的有,groovy(开源风控radar),aviator,qlexpress。

  • 基于java代码的规则引擎:基于jvm脚本语言会有一些语法学习的成本,所以就有基于java代码去做的规则引擎,比如通过一些注解实现抽象的方式去做到规则的扩展,比较出名的有: easy rules。

这边重点介绍三款产品drools、qlexpress和groovy,先介绍下基础能力和优劣势,后面再进行详解。

Drools

drools是一款由JBoss组织提供的基于Java语言开发的开源规则引擎,可以将复杂且多变的业务规则从硬编码中解放出来,以规则脚本的形式存放在文件或特定的存储介质中(例如存放在数据库中),使得业务规则的变更不需要修改项目代码、重启服务器就可以在线上环境立即生效。

drools官网地址:https://drools.org/

drools源码下载地址:https://github.com/kiegroup/drools

在项目中使用drools时,即可以单独使用也可以整合spring使用。如果单独使用只需要导入如下maven坐标即可:

<dependency>
    <groupId>org.drools</groupId>
    <artifactId>drools-compiler</artifactId>
    <version>7.6.0.Final</version>
</dependency>

如果我们使用IDEA开发drools应用,IDEA中已经集成了drools插件。如果使用eclipse开发drools应用还需要单独安装drools插件。

drools API开发步骤如下:

规则引擎开源组件,规则引擎专题,规则引擎,drools,groovy,规则引擎对比,qlexpress

Groovy

Groovy是用于Java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。使用该种语言不必编写过多的代码,同时又具有闭包和动态语言中的其他特性。

Groovy是从Java衍生出来的,并且运行在Java虚拟机上的语言.其目标是不管作为脚本语言,还是编程语言,都可以简单、直接使用。Groovy 也并不会替代 Java,而是相辅相成、互补的关系,具体使用哪门语言这取决于要解决的问题和使用的场景。
规则引擎开源组件,规则引擎专题,规则引擎,drools,groovy,规则引擎对比,qlexpress

QLExpression

由阿里的电商业务规则、表达式(布尔组合)、特殊数学公式计算(高精度)、语法分析、脚本二次定制等强需求而设计的一门动态脚本引擎解析工具。
在阿里集团有很强的影响力,同时为了自身不断优化、发扬开源贡献精神,于2012年开源。

QLExpress脚本引擎被广泛应用在阿里的电商业务场景,具有以下的一些特性:

1、线程安全,引擎运算过程中的产生的临时变量都是threadlocal类型。
2、高效执行,比较耗时的脚本编译过程可以缓存在本地机器,运行时的临时变量创建采用了缓冲池的技术,和groovy性能相当。
3、弱类型脚本语言,和groovy,javascript语法类似,虽然比强类型脚本语言要慢一些,但是使业务的灵活度大大增强。
4、安全控制,可以通过设置相关运行参数,预防死循环、高危系统api调用等情况。
5、代码精简,依赖最小,250k的jar包适合所有java的运行环境,在android系统的低端pos机也得到广泛运用。

规则引擎对比

常见能力对比如下:

规则引擎 QLExpression (ms) groovy(ms) drools(ms)
动态规则 支持 支持 支持
灵活性
复杂度
上手
使用广度

执行性能对比如下:

执行次数\规则引擎 QLExpression (ms) groovy(ms) drools(ms)
100w 1590 171 364
1000w 12551 709 3530
5000w 60230 3516 19414

三种规则引擎都支持动态规则,可以通过提供的api动态扩展规则文章来源地址https://www.toymoban.com/news/detail-767551.html

  • 灵活性上看groovy和drools支持脚本编写方式,市面上有常见的包装方案;
  • 其中QLExpression在中小企业应用较广泛对熟悉java的选手来说基本开箱即用;
  • groovy和drools作为规则引擎在互联网企业应用较多,有一定的学习和培训成本;
  • drools追随者更多适用面积更广泛;

到了这里,关于规则引擎专题---2、开源规则引擎对比的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java中轻量级规则引擎Groovy介绍

    假如在开发一个充值功能,需要支持经常变化的充值营销活动,产品提出了以下需求: 1、根据不同季节,不同节日做不同的充值送活动,以及不定期的优惠活动。 2、还需要根据用户的等级以及用户以往的充值历史做不同的营销活动。 3、能够灵活的配置营销活动 需求很简单

    2024年02月10日
    浏览(69)
  • 开源游戏引擎和模拟器的项目合集 | 开源专题 No.38

    Stars: 26.2k License: GPL-3.0 yuzu是一款全球最受欢迎的开源Nintendo Switch模拟器,由Citra创建者编写。它采用C++语言编写,并具有可移植性,在Windows和Linux上进行积极维护。该模拟器能够全速运行大多数商业游戏,只要您满足其兼容性要求即可。yuzu支持许多不同类型的游戏,并且可以

    2024年02月08日
    浏览(42)
  • OLAP开源引擎对比之历史概述

    OLAP概念诞生于1993年,工具则出现在更早以前,有史可查的第一款OLAP工具是1975年问世的Express,后来走进千家万户的Excel也可归为此类,所以虽然很多数据人可能没听过OLAP,但完全没打过交道的应该很少。 这个概念主要是在大数据圈里流传,而在大数据领域里,目前主流的

    2024年04月27日
    浏览(34)
  • 开源 UI 组件库和开发工具库概览 | 开源专题 No.59

    Stars: 87.9k License: MIT Ant Design 是一个企业级 UI 设计语言和 React UI 库。 为 Web 应用程序设计的企业级 UI。 提供一套高质量的开箱即用的 React 组件。 使用可预测静态类型编写 TypeScript 代码。 包含完整的设计资源和开发工具包。 支持数十种语言国际化支持 基于 CSS-in-JS 实现强大

    2024年01月16日
    浏览(37)
  • 【干货】开源OLAP引擎(ClickHouse、Doris、Presto、ByConity)性能对比分析

    随着数据量和数据复杂性的不断增加,越来越多的企业开始使用OLAP(联机分析处理)引擎来处理大规模数据并提供即时分析结果。在选择OLAP引擎时,性能是一个非常重要的因素。 目录 / 基础查询场景下 / / 连接查询场景 / / 聚合查询场景 /

    2024年02月12日
    浏览(56)
  • java脚本引擎Groovy实战

    目录 一、场景描述 二、javascript语法引擎 JavaScriptEngine getEngineByName eval NashornScriptEngine 三、Groovy语法引擎 一.使用GroovyClassLoader 二、原理  三、调用groovy脚本实现方式 1.使用GroovyClassLoader 2.使用ScriptEngine 3.使用GroovyShell 四、性能优化  五、解决方案 四、项目实战  一、概述 二

    2024年02月07日
    浏览(35)
  • 【原理图专题】OrCAD Capture 设计规则(DRC)检查

    在原理图设计完成后,需要进行DRC检查,DRC检查能协助工程师快速检查原理图的物理、电气规则是否正确,能快速定位错误和原因。 DRC 检查从Capture 工具栏中如下图红框所示的图标中Design Rules Check进入 进入后将打开DRC窗口,有四个选项卡。分别是Design Rules Options、Electrical

    2023年04月22日
    浏览(80)
  • Java动态脚本&规则引擎、计算/表达式引擎

    在日常的Java项目中,我们免不了会遇到这样的需求: 动态地获取并运行自定义脚本文件,以实现特定的功能 对数据流执行用户自定义的数据有效性、公式计算、数据处理ETL(如数据截取、拼接)等不同业务逻辑 对用户输入的代码或脚本文件进行测试、运行,确保其语法正确

    2023年04月27日
    浏览(36)
  • 【PCB专题】如何在嘉立创8月1日起的新规则下免费打样

            嘉立创规则22.8.1号免费打样开始规则变更了,那要怎么办呢?规格变更说明的链接: PCB免费打样规则变更正式实施,新增6层免费! - 哔哩哔哩 信守承诺,不玩套路,2021年7月1日嘉立创发布PCB免费打样活动,并且承诺以年为单位执行。2022年7月1日时满一年,公司本

    2023年04月16日
    浏览(55)
  • flink规则引擎设计思路

    在日常工作中我们经常收到一些诸如此类需求:“用户给点击了开屏广告,给用户下发私信”、“用户进入了推荐线,但在60秒内没有任何点击操作,弹框引导用户选择感兴趣的内容”、“用户点赞了某位作者的两篇以上的内容,但并没有关注过此作者,则弹框引导用户关注

    2024年02月05日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包