日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2024/4/17 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Drools 在告警关联分析中的应用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

http://benbenxiongyuan.iteye.com/blog/1121479

Drools5當(dāng)中提供了兩個(gè)對(duì)象與規(guī)則引擎進(jìn)行交互: StatefulKnowledgeSession
和 StatelessKnowledgeSession。
StatefulKnowledgeSession
顧名思義,就是有狀態(tài)的會(huì)話,在推理過程中可以記錄對(duì)象推理的中間狀態(tài)。StatefulKnowledgeSession對(duì)象是一種最常用的與規(guī)則引擎進(jìn)行交互的方式,它可以與規(guī)則引擎建立一個(gè)持續(xù)的交互通道,在推理計(jì)算的過程當(dāng)中可能會(huì)多次觸發(fā)同一數(shù)據(jù)集。在用戶的代碼當(dāng)中,最后使用完 StatefulKnowledgeSession 對(duì)象之后,一定要調(diào)用其 dispose()方法以釋放相關(guān)內(nèi)存資源。
規(guī)則引擎可以接受外部插入(insert)的業(yè)務(wù)數(shù)據(jù)——也叫 fact,一個(gè)fact對(duì)象通常是一個(gè)普通的Java的POJO,一般它們會(huì)有若干個(gè)屬性,每一個(gè)屬性都會(huì)對(duì)應(yīng)
getter和 setter方法,用來對(duì)外提供數(shù)據(jù)的設(shè)置與訪問。一般來說,在Drools規(guī)則引擎當(dāng)中,fact所承擔(dān)的作用就是將規(guī)則當(dāng)中要用到的業(yè)務(wù)數(shù)據(jù)從應(yīng)用當(dāng)中傳入進(jìn)來,對(duì)于規(guī)則當(dāng)中產(chǎn)
生的數(shù)據(jù)及狀態(tài)的變化通常不用 fact傳出。如果在規(guī)則當(dāng)中需要有數(shù)據(jù)傳出,那么可以通過
在 StatefulKnowledgeSession 當(dāng)中設(shè)置 global 對(duì)象來實(shí)現(xiàn),一個(gè) global 對(duì)象也是一個(gè)普通的Java 對(duì)象,在向 StatefulKnowledgeSession 當(dāng)中設(shè)置 global 對(duì)象時(shí)不用 insert 方法而用setGlobal方法實(shí)現(xiàn)。
在將FACT插入規(guī)則引擎后,StatefulKnowledgeSession 需調(diào)用 fireAllRules()方法觸發(fā)所有的規(guī)則執(zhí)行,最后調(diào)用 dispose()方法將內(nèi)存資源釋放。

StatelessKnowledgeSession
StatelessKnowledgeSession的作用與 StatefulKnowledgeSession 相仿,它們都是用來接收業(yè)務(wù)數(shù)據(jù)、執(zhí)行規(guī)則的。事實(shí)上,StatelessKnowledgeSession 對(duì)StatefulKnowledgeSession做了包裝,使得在使用 StatelessKnowledgeSession 對(duì)象時(shí)不需要再調(diào)用 dispose()方法釋放內(nèi)存資源了。
因?yàn)?StatelessKnowledgeSession 本身所具有的一些特性,決定了它的使用有一定的局限
性。在使用 StatelessKnowledgeSession 時(shí)不能進(jìn)行重復(fù)插入 fact的操作、也不能重復(fù)的調(diào)用fireAllRules()方法來執(zhí)行所有的規(guī)則,對(duì)應(yīng)這些要完成的工作在 StatelessKnowledgeSession當(dāng)中只有 execute(…)方法,通過這個(gè)方法可以實(shí)現(xiàn)插入所有的 fact并且可以同時(shí)執(zhí)行所有的規(guī)則或規(guī)則流,事實(shí)上也就是在執(zhí)行 execute(…)方法的時(shí)候就在 StatelessKnowledgeSession內(nèi)部執(zhí)行了 insert()方法、fireAllRules()方法和 dispose()方法。

在告警關(guān)聯(lián)分析中的應(yīng)用。
在告警關(guān)聯(lián)分析中,插入規(guī)則引擎的FACT就是產(chǎn)生的實(shí)時(shí)告警對(duì)象。因告警是隨著時(shí)間持續(xù)遞增的,是一個(gè)動(dòng)態(tài)的過程。為了分析持續(xù)遞增的大量告警間的相關(guān)性,需要對(duì)產(chǎn)生的告警進(jìn)行連續(xù)的推理分析。
在實(shí)際的應(yīng)用中,我們有兩種方式對(duì)對(duì)大量告警進(jìn)行推理分析。
一是用StatelessKnowledgeSession,將所有告警導(dǎo)入規(guī)則引擎后,進(jìn)行推理分析,然后導(dǎo)出推理結(jié)果。每隔一定時(shí)間后,再將所有的告警導(dǎo)入規(guī)則引擎,再進(jìn)行推理分析,循環(huán)執(zhí)行上述過程。這種方式適合總告警量不太大的情況。但在實(shí)際中,告警數(shù)量往往較多。所以在實(shí)際應(yīng)用中,這種方式不太實(shí)際。因告產(chǎn)生的警數(shù)量巨大,在將FACT導(dǎo)入規(guī)則引擎的過程中,規(guī)則引擎在構(gòu)造鑒別網(wǎng)絡(luò)在的時(shí)候,會(huì)花費(fèi)大量的時(shí)間并消耗大量的內(nèi)存空間。在實(shí)際應(yīng)用中,規(guī)則引擎常常由于耗費(fèi)的內(nèi)存太多而造成內(nèi)存溢出。即使內(nèi)存不發(fā)生溢出,也會(huì)因?yàn)樵跇?gòu)造鑒別網(wǎng)絡(luò)所耗費(fèi)的大量時(shí)間,而讓人難以忍受,更談不上滿足告警上報(bào)的實(shí)時(shí)性要求了。
結(jié)合在實(shí)際應(yīng)用中的業(yè)務(wù)需要,綜合StatelessKnowledgeSession和StatefulKnowledgeSession的特點(diǎn)。在實(shí)際的告警關(guān)聯(lián)分析中我們往往采用第二種方式。即使用StatefulKnowledgeSession進(jìn)行規(guī)則的推理,在推理過程中,持續(xù)插入(insert)新產(chǎn)生的告警對(duì)象(FACT)到規(guī)則引擎中,然后調(diào)用fireAllRules()進(jìn)行推理分析。注:一次插入的告警對(duì)象不宜過多,不然會(huì)找造成較大的時(shí)間和內(nèi)存消耗。在調(diào)用規(guī)則引擎fireAllRules()方法進(jìn)行推理分析的過程中,應(yīng)盡量將規(guī)則引擎中的無用的數(shù)據(jù)retract掉,保證規(guī)則引擎中的數(shù)據(jù)量不要太多,否則還是會(huì)出現(xiàn)消耗內(nèi)存過大的情況,從而最終造成程序內(nèi)存溢出。
因告警量太大,在實(shí)際應(yīng)用中可考慮實(shí)現(xiàn)兩個(gè)規(guī)則引擎對(duì)告警進(jìn)行推理分析。首先由第一個(gè)規(guī)則引擎在告警處理平臺(tái)對(duì)一段時(shí)間比如(XX小時(shí)或XX分鐘)的數(shù)據(jù)進(jìn)行預(yù)推理分析,這一步的目的主要是減少大量冗余告警(對(duì)推理無用的告警)的數(shù)量,并產(chǎn)生推理分析的中間結(jié)果。第二步,在第一個(gè)規(guī)則引擎處理完成后,將數(shù)據(jù)導(dǎo)入到第二個(gè)規(guī)則引擎中,進(jìn)行二次推理。在第二個(gè)規(guī)則引擎中保存第一次推理后產(chǎn)生的所有告警數(shù)據(jù),保證引擎進(jìn)行充分的推理,然后輸出推理結(jié)果。上述推理過程應(yīng)周期觸發(fā),保證上報(bào)的及時(shí)性要求。

總結(jié)

以上是生活随笔為你收集整理的Drools 在告警关联分析中的应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。