最近调整了原先的一个中间件的功能,把之前被产品去掉的规则表达式计算又重新添了回去.
这个中间件的基本功能是使用预定义的关键字和数值比对进行判断,从大量的数据中生成告警,主要是用于服务器监控.
这里的表达式计算仅使用了与逻辑相关的一些运算符.
原本是自己写了一个基于stack的表达式计算,后来被产品去掉了这个功能,说是用不到这种…然而这次的需求需要进行复杂的多规则计算,因此需要在现有的基础上重新添加回表达式计算功能.
为以后扩展起见,原本是使用java自带的js引擎进行计算,然而在实现了之后,自测性能时发现内存占用率过高.
后续找了一下开源的表达式计算引擎,话说网上能找到的计算引擎介绍全部都是一样的…后面试了几个,最终选择了JEP
,效率和内存占用都比较符合要求.
介绍一下简单的使用
由于JEP在maven上有很多实现,试过了几个后选择了
<dependency>
<groupId>com.singularsys</groupId>