本發明屬于計算機軟件開發技術領域,具體涉及分布式規則引擎系統及其構建方法。
背景技術:
目前,已有通過規則引擎實現將業務決策從應用程序代碼中分離出來,并使用預定義的語義模塊編寫業務決策,接受數據輸入,解釋業務規則,并根據業務規則做出業務決策。但隨著業務的發展,數據規模的爆炸性增加以及業務規則規模的不斷增加,傳統的單機規則引擎由于內存、CPU處理能力以及磁盤讀寫能力等資源的限制將無法處理大規模的推理任務,分布式規則引擎則可以將推理任務分發到不同的處理機上進行并行處理解決問題。
已有的分布式規則引擎技術,如維也納分布式規則引擎(ViDRE)和由浙江大學曹斌等人發表在第二屆電氣電子工程師學會云計算會議(2nd IEEE International Conference on Cloud Computing Technology and Science)的論文解決了單機規則引擎的運行瓶頸,考慮點都只從規則出發,但其仍存在冗余規則和事實冗余分配,且隨著業務數據的增加,會明顯出現大規模數據集處理能力不佳,以及迭代計算能力差的問題。
技術實現要素:
本發明的目的在于提供一種分布式規則引擎系統及其構建方法,以解決現有方法中規則與事實冗余分配、大規模(數據規模在TB級別)數據集處理能力不佳以及迭代計算不佳的問題,達到有效地提高規則引擎的執行效率。
本發明的分布式規則引擎系統,其特征在于,包括:將業務數據通過多種格式的數據源存放分布式存儲系統中的事實數據集模塊S1;設計規則編寫標準,提供規則編譯方法,將業務決策邏輯轉化成規則,存放在分布式存儲系統中的規則集模塊S2;基于通用并行框架(Spark)集群,加載事實數據集模塊S1處理的數據集和規則集模塊S2處理的規則集,構成事實數據對象集合和規則對象,構建規則推理流程,進行規則推理及點火執行的規則推理模塊S3;其中:
所述事實數據集模塊S1:是業務數據的集合,其由計算機文件格式的Parquet文件、JSON文件、CSV文件、HBase文件,或支持JDBC接口的數據庫構成,并存放在分布式文件系統中;
所述規則集模塊S2:提供一套自定義規則編寫標準和編譯方式,編寫格式為IF condition THEN action,每個業務規則包括觸發條件和執行動作,用戶依據編寫標準編寫一系列業務規則,并存放在分布式存儲系統中;
所述規則推理模塊S3,在通用并行框架(Spark)分布式集群當中執行,其包含有:事實對象集合構造S4、規則對象構造S5、執行策略S6、模式匹配S7和點火執行S8;
對于事實對象集合構造S4:通過把用戶提供的數據路徑進行一定策略的劃分,構成對象名和數據源加載路徑,在按照數據源路徑加載數據源文件內容過程中,根據數據結構格式(Schema信息),動態構成事實對象集合,即為分布式數據集(DataFrame),分配到工作節點中,并緩存到內存或磁盤中;
對于規則對象構造S5:通過用戶提供規則路徑,將用戶提供的業務規則編譯并封裝成規則對象,規則的觸發條件和執行動作以對象成員函數的形式來體現,其中將觸發條件的邏輯抽象成結構化查詢語言(SQL);
對于執行策略S6:規則匹配執行的次序通過規則執行策略進行重新排序后依次執行;
對于模式匹配S7:對規則對象進行遍歷,通過分布式數據集(DataFrame)中事實對象的當前狀態來判斷是否滿足規則的觸發條件;
對于點火執行S8:執行規則右部操作--規則觸發時執行的一系列行為。
本發明的分布式規則引擎的構建方法,其特征在于包括以下步驟:
第一步:在分布式集群的工作節點啟動多個執行進程準備接受任務,進行預處理階段A1;所述預處理階段A1由事實數據集模塊S1、規則集模塊S2、事實對象集合構造S4和規則對象構造S5構成;首先用戶上傳業務數據與業務規則至分布式文件系統中,系統通過用戶提供規則路徑讀取規則文件,動態封裝成規則對象,并通過用戶提供指定數據路徑加載數據文件,動態構成事實對象集合,分配到多個工作節點緩存到內存或磁盤中;
第二步:在獲取到待匹配的事實對象集合與規則對象后,即進入規則推理模塊S3,首先進入執行策略S6階段,用戶從所給出的提供選擇的順序執行、優先級執行或自定制策略中,根據用戶業務規則的需求來選定策略,對即將執行的規則按選定策略進行重新排序;排序后,以規則右部事實更新的規則為結束點,把規則集合拆分成多個有序的小集合,總的規則集合按照串行執行的思想,小集合中的規則并行執行模式匹配S7,其中規則匹配的執行是在分布式集群的一個或多個工作節點進程中完成;當一個小集合的規則匹配執行完后,判斷該小集合中有無規則點火P1,若有事實更新的規則匹配成功,規則匹配結束,進行點火執行階段S8;若無事實更新的規則匹配成功,判斷有無規則匹配P3,若有規則匹配P3,依序執行下一個小集合規則匹配,直至事實更新的規則匹配成功或所有規則匹配執行完畢;若所有規則均匹配失敗,則規則引擎執行完畢A5;
第三步:進入規則點火執行階段S8,執行第二步中所有匹配成功的規則右部;若執行右部的規則有事實更新P2,則直接更新集群中相應的數據狀態,規則引擎再次進行模式匹配階段S7;若不存在事實更新,則規則引擎執行完畢A5。
與現有的分布式規則引擎相比,本發明的優點如下:
1.由于本發明采取根據文件內容的數據結構格式(Schema信息)動態封裝成事實對象,不需要人工寫事實對象,使得事實對象表述更加靈活;而目前的分布式規則引擎的事實對象都是提前封裝成類寫入程序代碼之中,在一些事實對象屬性多變的場景并不適用;
2.由于本發明不拆分規則,采取對每個規則匹配的任務分發到一個或多個工作進程進行執行,對于相互關聯的信息,通過消息傳遞的方式進行互相通信,使規則事實分配均不冗余,規則匹配一次迭代過程中最多執行一次;而目前的分布式規則引擎把規則集進行拆分到不同的工作節點進行處理,但由于規則間的相關性以及考慮結果的準確,必然會出現相同規則分發多次,事實也會冗余分配,導致相同規則會被執行多次;
3.在對于大規模數據集(TB級別,100億條事實量)的支持方面,目前的分布式規則引擎用到的算法大多是網算法(Rete算法),Rete算法會將事實集和中間匹配結果緩存在內存中,在事實數據量過大(百萬條級別以上)的情況,容易導致單機故障;而本發明不構造Rete網,由于所采取的事實集為列式存儲結構,通過對象內存優化,并且可以選擇性將事實集或中間結果緩存在內存或磁盤中,從而可以較好地應對大規模數據集的處理;
4.本發明在迭代計算性能方面優勢明顯。目前的分布式規則引擎使用映射化簡(MapReduce)的方式進行迭代計算,每個節點都有緩存的事實集,在迭代計算的時候,每次計算結束后會將計算的結果再次分發到工作節點進行事實集的更新,給磁盤網絡帶來極大的負擔;而本發明中由于采取迭代計算的結果在每次計算的過程中就直接更新,無需進行再分發,由此明顯提高了計算性能。
采用本發明分布式規則引擎系統及其構建方法避免了規則與事實的冗余分配,事實對象表達更加靈活,同時支持并提高了大規模數據集處理能力和迭代計算能力,能夠有效提高規則引擎的執行效率。
附圖說明
圖1為本發明方法的分布式集群執行任務示意圖;
圖2為本發明的分布式規則引擎的總體構造示意圖;
圖3為本發明的分布式規則引擎的推理流程示意圖。
具體實施方式
下面結合附圖通過具體實施例對本發明分布式規則引擎以及構建方法的技術方案進行詳細的描述。
實施例1:
本發明分布式規則引擎以及構建方法的一個具體實施例的操作過程如下:
附圖1給出了本發明的分布式規則引擎構建方法的分布式執行任務的示意圖。分布式引擎在啟動時,會在分布式集群的工作節點啟動多個執行進程準備接受并執行任務,為了具體刻畫集群執行狀態,圖1中表示的為擁有一個客戶端節點C、三個工作節點--第一工作節點W1、第二工作節點W2和第三工作節點W3的分布式集群,客戶端節點包含驅動進程M,用于管理集群狀態和分發任務;每個工作節點中包含若干執行器進程:本實施例中,作為舉例示意,第一工作節點W1中含有兩個執行器--上執行器Ea1和下執行器Ea2,每個執行器進程執行Ta1規則匹配和Ta2規則匹配任務;第二工作節點W2中同樣含有兩個執行器--第二上執行器Eb1和第二下執行器Eb2,每個執行器進程執行Tb1規則點火和Tb2規則點火任務;第三工作節點W3中也含有兩個執行器--第三上執行器Ec1和第三下執行器Ec2,每個執行器進程執行Tc1規則匹配和Tc2規則匹配任務;對于任意規則匹配、點火執行均是以執行器進程的任務的形式執行。
附圖2給出了本發明的分布式規則引擎的總體構造示意圖。分布式規則引擎具體分為三個模塊:事實數據集模塊S1,規則集模塊S2,規則推理模塊S3。
所述事實數據集模塊S1:是業務數據的集合,其可以由Parquet文件、JSON文件、CSV文件、HBase文件(均為計算機的文件格式),或支持JDBC接口的數據庫構成,并存放在分布式文件系統中;
所述規則集模塊S2:提供了一套自定義規則編寫標準和編譯方式,編寫格式為IF condition THEN action,每個業務規則包括觸發條件和執行動作,用戶可依據編寫標準編寫一系列業務規則,并存放在分布式存儲系統中;
所述規則推理模塊S3:用戶在存放好將要處理事實數據集和編寫好規則后開始規則推理執行,如圖2中所示,所述規則推理執行分為五個階段:
首先是事實對象集合構造階段S4,在用戶使用數據集時提供調用路徑,引擎按照策略劃分構成對象名和數據源加載路徑,在按照數據源路徑加載數據源文件(如JSON,HBase等)內容的過程中,根據Schema信息動態構成事實對象集合,即為分布式數據集(DataFrame);
然后是規則對象構造階段S5,通過用戶提供的調用路徑加載相應路徑的規則文件,形成規則對象,規則中的觸發條件和執行動作以對象成員函數的形式來體現,其中會將觸發條件的邏輯抽象成SQL;
在上述預處理過之后,進入執行策略階段S6,用戶可以根據業務的需要自定制的設計策略或是調用系統提供的策略,規則匹配執行的次序通過策略算法進行重新排序;
模式匹配階段S7,將上述的事實對象集合對相關的規則對象進行遍歷匹配,通過分布式數據集(DataFrame)中事實對象的當前狀態來判斷是否滿足規則的觸發條件;
點火執行階段S8,即是執行規則右部操作,如事實刪除、事實插入、事實的保存等一系列操作。
附圖3給出了本發明的分布式規則引擎的推理流程示意圖,對分布式規則的構建方法核心部分進行圖形化的說明。如圖3流程圖中所示,從起始點觀察,具體流程步驟如下:
第一步:在分布式集群的工作節點啟動多個執行進程準備接受任務,進行預處理階段A1,其由事實數據集模塊S1、規則集模塊S2、事實對象集合構造S4和規則對象構造S5構成;首先用戶需要上傳業務數據與業務規則至分布式文件系統中,系統通過用戶提供規則路徑讀取規則文件,動態封裝成規則對象,并通過用戶提供指定數據路徑加載數據文件,動態構成事實對象集合,分配到多個工作節點緩存到內存或磁盤中;
第二步:在獲取到待匹配的事實對象集合與規則對象后,即進入規則推理模塊S3,首先進入執行策略S6階段,用戶從所給出的提供選擇的順序執行、優先級執行或自定制策略中,根據用戶業務規則的需求來選定策略,對即將執行的規則按選定策略進行重新排序;排序后,以規則右部事實更新的規則為結束點,把規則集合拆分成多個有序的小集合,總的規則集合按照串行執行的思想,小集合中的規則并行執行模式匹配S7,其中規則匹配的執行是在分布式集群的一個或多個工作節點進程中完成;當一個小集合的規則匹配執行完后,判斷該小集合中有無規則點火P1,若有事實更新的規則匹配成功,規則匹配結束,進行點火執行階段S8;若無事實更新的規則匹配成功,判斷有無規則匹配P3,若有規則匹配P3,依序執行下一個小集合規則匹配,直至事實更新的規則匹配成功或所有規則匹配執行完畢;若所有規則均匹配失敗,則規則引擎執行完畢A5;
第三步:進入規則點火執行階段S8,執行第二步中所有匹配成功的規則右部;若執行右部的規則有事實更新P2,則直接更新集群中相應的數據狀態,規則引擎再次進行模式匹配階段S7;若不存在事實更新,則規則引擎執行完畢A5。
根據上述實施例的演示和分析可知,本發明分布式規則引擎系統及其構建方法,包括事實數據集模塊,將業務數據通過多種格式的數據源存放分布式存儲系統中;規則集模塊,設計規則編寫標準,提供規則編譯方法,將業務決策邏輯轉化成規則,并存放在分布式存儲系統中;規則推理模塊,基于通用并行框架Spark集群,加載數據集和規則集,構成事實數據對象集合和規則對象,構建規則推理流程,進行規則推理及點火執行。其顯著進步的技術效果在于:采用本發明減少了規則與事實的冗余分配,使事實對象表達更加靈活,同時支持并提高了大規模(數據規模在TB級別)數據集處理能力和迭代計算能力,有效提高了規則引擎的執行效率。