`
benbenxiongyuan
  • 浏览: 110024 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

Drools 在告警关联分析中的应用

    博客分类:
  • Java
 
阅读更多
Drools5当中提供了两个对象与规则引擎进行交互: StatefulKnowledgeSession
和 StatelessKnowledgeSession。
StatefulKnowledgeSession
顾名思义,就是有状态的会话,在推理过程中可以记录对象推理的中间状态。StatefulKnowledgeSession对象是一种最常用的与规则引擎进行交互的方式,它可以与规则引擎建立一个持续的交互通道,在推理计算的过程当中可能会多次触发同一数据集。在用户的代码当中,最后使用完 StatefulKnowledgeSession 对象之后,一定要调用其 dispose()方法以释放相关内存资源。
规则引擎可以接受外部插入(insert)的业务数据——也叫 fact,一个fact对象通常是一个普通的Java的POJO,一般它们会有若干个属性,每一个属性都会对应
getter和 setter方法,用来对外提供数据的设置与访问。一般来说,在Drools规则引擎当中,fact所承担的作用就是将规则当中要用到的业务数据从应用当中传入进来,对于规则当中产
生的数据及状态的变化通常不用 fact传出。如果在规则当中需要有数据传出,那么可以通过
在 StatefulKnowledgeSession 当中设置 global 对象来实现,一个 global 对象也是一个普通的Java 对象,在向 StatefulKnowledgeSession 当中设置 global 对象时不用 insert 方法而用setGlobal方法实现。
在将FACT插入规则引擎后,StatefulKnowledgeSession 需调用 fireAllRules()方法触发所有的规则执行,最后调用 dispose()方法将内存资源释放。

StatelessKnowledgeSession
StatelessKnowledgeSession的作用与 StatefulKnowledgeSession 相仿,它们都是用来接收业务数据、执行规则的。事实上,StatelessKnowledgeSession 对StatefulKnowledgeSession做了包装,使得在使用 StatelessKnowledgeSession 对象时不需要再调用 dispose()方法释放内存资源了。
因为 StatelessKnowledgeSession 本身所具有的一些特性,决定了它的使用有一定的局限
性。在使用 StatelessKnowledgeSession 时不能进行重复插入 fact的操作、也不能重复的调用fireAllRules()方法来执行所有的规则,对应这些要完成的工作在 StatelessKnowledgeSession当中只有 execute(…)方法,通过这个方法可以实现插入所有的 fact并且可以同时执行所有的规则或规则流,事实上也就是在执行 execute(…)方法的时候就在 StatelessKnowledgeSession内部执行了 insert()方法、fireAllRules()方法和 dispose()方法。

在告警关联分析中的应用。
在告警关联分析中,插入规则引擎的FACT就是产生的实时告警对象。因告警是随着时间持续递增的,是一个动态的过程。为了分析持续递增的大量告警间的相关性,需要对产生的告警进行连续的推理分析。
在实际的应用中,我们有两种方式对对大量告警进行推理分析。
一是用StatelessKnowledgeSession,将所有告警导入规则引擎后,进行推理分析,然后导出推理结果。每隔一定时间后,再将所有的告警导入规则引擎,再进行推理分析,循环执行上述过程。这种方式适合总告警量不太大的情况。但在实际中,告警数量往往较多。所以在实际应用中,这种方式不太实际。因告产生的警数量巨大,在将FACT导入规则引擎的过程中,规则引擎在构造鉴别网络在的时候,会花费大量的时间并消耗大量的内存空间。在实际应用中,规则引擎常常由于耗费的内存太多而造成内存溢出。即使内存不发生溢出,也会因为在构造鉴别网络所耗费的大量时间,而让人难以忍受,更谈不上满足告警上报的实时性要求了。
结合在实际应用中的业务需要,综合StatelessKnowledgeSession和StatefulKnowledgeSession的特点。在实际的告警关联分析中我们往往采用第二种方式。即使用StatefulKnowledgeSession进行规则的推理,在推理过程中,持续插入(insert)新产生的告警对象(FACT)到规则引擎中,然后调用fireAllRules()进行推理分析。注:一次插入的告警对象不宜过多,不然会找造成较大的时间和内存消耗。在调用规则引擎fireAllRules()方法进行推理分析的过程中,应尽量将规则引擎中的无用的数据retract掉,保证规则引擎中的数据量不要太多,否则还是会出现消耗内存过大的情况,从而最终造成程序内存溢出。
因告警量太大,在实际应用中可考虑实现两个规则引擎对告警进行推理分析。首先由第一个规则引擎在告警处理平台对一段时间比如(XX小时或XX分钟)的数据进行预推理分析,这一步的目的主要是减少大量冗余告警(对推理无用的告警)的数量,并产生推理分析的中间结果。第二步,在第一个规则引擎处理完成后,将数据导入到第二个规则引擎中,进行二次推理。在第二个规则引擎中保存第一次推理后产生的所有告警数据,保证引擎进行充分的推理,然后输出推理结果。上述推理过程应周期触发,保证上报的及时性要求。
分享到:
评论

相关推荐

    规则引擎Drools在J2EE项目开发中的应用

    在J2EE项目开发中,规则引擎Drools扮演着重要的角色,它是一个开源的业务规则管理系统(BRMS),能够帮助开发者将业务规则从应用程序逻辑中分离出来,从而实现更灵活、可维护的代码结构。Drools的核心功能是解析、...

    drools drools drools drools drools

    在实际应用中,drools 可以用于信贷风险评估、保险索赔处理、市场分析等多种场景,通过规则的灵活配置,可以应对业务需求的变化。同时,drools 还支持事件驱动的处理模式,可以应用于复杂事件处理(CEP),检测和...

    drools7.25中文文档+drools技术指南.zip

    1. **Drools概述**:这部分将介绍Drools的基本概念,包括什么是规则引擎,为什么需要规则引擎,以及Drools在业务流程中的作用。它会阐述Drools如何帮助开发者将业务逻辑从核心应用程序中分离出来,实现灵活的、可...

    Drools7.25中文文档.7z

    Drools是一个开源的业务规则管理系统,它基于Java平台,允许开发者轻松地在应用程序中实现复杂的业务规则。在本文档中,你将学习到如何安装和配置Drools Workbench以及KIE Server,这两个关键组件是Drools生态系统的...

    drools规则引擎在促销系统中的应用.pdf

    drools规则引擎在促销系统中的应用.pdf

    Drools7_PDF教程 Drools中文文档 内容全面.zip

    Drools7_PDF教程 Drools中文文档 内容全面。...1. 内容更加全面,更多细节,更多知识点全部在新版本中有所体现,并且会附上小编做的例子 ,更多内容不断更新中 2. 目前国内最全的Drools中文文档。也是目前国内唯一一本

    drools flow分析报告

    **Drools Flow 分析报告** **第一章 Drools Flow 简介** Drools Flow 是 Drools 项目的一部分,它提供了一套完整的业务流程管理(BPM)和工作流解决方案。Drools 是一个开源的规则引擎,主要用于决策管理和业务...

    drools-7.10中文技术文档.pdf

    drools 最新文档 7.10 规则引擎中文文档,含 规则可视化操作说明,规则配置说明等; Drools 实现和提供了 Rete 算法;也曾提供 Leaps,但因为它无人维护而撒销了。Drools Rete 实现也被称为 ReteOO

    Drools6 和 Drools7技术指南-中文文档.zip

    Drools开发最全中文版技术指南。 Drools开发最全中文版技术指南,介绍了常见的drools如何进行开发,注意是:中文版中文版中文版! drools 中文文档 规则引擎 drools6 drools7 Java

    drools4.0.7 utf-8中文乱码.doc

    * UTF-8 编码在 Java 中的应用 * Drools 中的中文乱码解决方案 * Oracle 数据库中的编码问题 本文提供了 Drools 4.0.7 中文乱码解决方案,包括使用 Janino 编译器、修改 addClassCompileTask 方法和设置 "myproject...

    idea开发drools的设置文件

    为了在 IntelliJ IDEA(简称 IDEA)中高效地开发 Drools 应用,我们需要进行一些必要的设置。首先,我们需要导入 Drools 的特定设置,这样 IDEA 就能识别 DRL 文件并提供相应的智能提示和代码辅助。 1. **导入设置*...

    drools 7.1中文文档pdf完整版本

    Drools整合方面,文档可能包含了如何将Drools集成到不同的环境和框架中,例如通过CDI(上下文依赖注入)集成到应用程序中,以及与Spring框架的整合。同时,也可能介绍了Drools与Android平台、Apache Camel等技术的...

    Drools

    在压缩包"drools-2.0"中,可能包含了Drools 2.0版本的库文件、文档、示例代码和API参考,这些都是学习和使用Drools的基础资源。通过研究这些内容,开发者可以深入了解Drools的工作原理,掌握如何在Java项目中集成和...

    规则引擎Drools 中文使用教程

    此外,Drools还提供了一个友好的用户界面,让业务分析师或审计人员能够直接参与到规则的编写和验证过程中。 #### Drools的关键特性 1. **易于使用的规则引擎**:Drools基于Charles Forgy的RETE算法,这是一种高效...

    Drools应用.doc

    例如,在金融风控、保险索赔处理、物联网设备行为分析等场景中,Drools可以帮助快速响应业务规则的变化。 **2 Drools工作原理** 2.1 产生式规则引擎工作原理 产生式规则引擎通过读取事实(即程序中的数据)并应用...

    Drools规则引擎应用分析

    Drools规则引擎因其高效、灵活的特点,在软件开发中得到了广泛应用。通过使用Drools,开发者能够轻松地管理复杂的业务规则,提高软件的可维护性和扩展性。本文介绍了Drools的基本概念、应用场景以及如何构建基于...

    Drools4.0官方使用手册中文

    总之,《Drools 4.0官方使用手册中文》是一份全面且实用的教程,对于希望在Java环境中应用规则引擎的开发者,尤其是那些对Drools感兴趣的读者,它是必不可少的参考资料。通过学习,你可以掌握规则引擎的精髓,提升你...

    Drools workbench文件及DEMO项目代码

    在实际应用中,Drools常用于信用评估、保险风险计算、医疗诊断等领域。通过Drools Workbench,我们可以将业务规则与业务逻辑分离,使规则维护更加灵活,降低系统复杂性。 在深入研究这个压缩包内容时,你可能需要...

Global site tag (gtag.js) - Google Analytics