groovy 规则引擎 java_Drools, IKExpression, Aviator和Groovy字符串表达式求值比较

本文对比了Drools, IKExpression, Aviator和Groovy在Java环境下的规则引擎性能。在表达式求值的性能测试中,Groovy表现最佳,其次是Aviator,IKExpression和Drools的性能相对较弱。Groovy由于其简洁的语法和高性能在反复执行的场景中成为优秀选择。JIT编译器在达到一定执行次数后,能够显著提升Groovy的执行效率。" 118365106,9623374,Vue Router 深入指南,"['Vue', '前端开发', '路由管理']
摘要由CSDN通过智能技术生成

[Gradle是Android开发新一代的 Build System, 也是 Android Studio默认的build工具。Gradle脚本是基于一种JVM语言 -- Groovy,再加上DSL(领域特定语言)语言组成的。因为

eSOC项目的一个重要功能就是规则引擎,规则引擎的主要功能就是关联分析。规则引擎的最基本的功能就是计算表达的值(表达式是规则中的基础部分),为了选择一个合适的基础构件作表达式求值工具,前后比较了Drools, IKExpression,Aviator和Groovy,Drools为JBosss的开源规则引擎, IKExpression和Aviator都是轻量的Java表达式求值引擎(均为中国人开发的开源表达式求值引擎),Groovy是JVM上的动态语言,Java的官方弟弟。比较的基本要素是性能;第二是功能:支持常见的操作包括>,>=, ==, !=,

背景介绍

什么是关联分析

在如下的场景中,我们需要找出威胁程度最高的事件,也就是报警5,依靠的就是关联分析来完成,下图中所示的是交叉关联分析中的典型场景。

32ee0c1f88ceac15980af186b87b5c3c.png

对应于这个场景,规则引擎需要做的事情是从收集到的IDS日志,防火墙日志,资产列表和漏洞库中发现如下的情况:

“IDS检测到Attack的行为,并且防火墙允许了这个行为,Attack的目标资产(服务器,网络设备等)非常重要,并且资产具有该攻击对应的漏洞;如果以上都匹配,并且在10分钟之内发生了一次以上,就产生一个高级别的实时报警”

为了能够分析出上述行为,需要一个或者规则来执行,那么上述文字描述可以转换为如下描述的规则,一个规则由表达式+聚合 + action三部分组成

表达式部分:

1. (Event1.devicetype == 'IDS' && Event1.eventtype=='Attack')

2. (Event2.devicetype == 'Firewall' && Event2.eventtype=='Accept')

3 ((Event1.attcaktype + Event1.destinationIP) in vulnerabilityList //事件的攻击目标地址具有该攻击类型所包括的漏洞

聚合部分:

1. (Event1.destinationIP == Event2.destinationIP) //事件1和2的目标地址是同一个

2. Event1和Event2 在10分钟内发生的次数 > 1次

action

if( Event1.destinationIP 是高价值资产) 产生报警,级别是10

else if(( Event1.destinationIP 是中价值资产) ) 产生报警,级别是8

从这里可以看出,表达式是规则的基础组成部分

表达式示例

下面展示一下赛门铁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值