一種實現(xiàn)分布式消息處理的系統(tǒng)及方法
【專利摘要】本發(fā)明公開了一種實現(xiàn)分布式消息處理的系統(tǒng)及方法,用于提高消息處理系統(tǒng)的通用性及靈活性,該系統(tǒng)包括:表達式模塊中包括有規(guī)則項、函數(shù)、運算符、表達式、宏變量及觸發(fā)器;設(shè)置模塊,用于接收用戶利用表達式模塊建立的消息處理邏輯表達式,并將消息處理邏輯表達式發(fā)送給同步模塊;消息處理邏輯表達式由規(guī)則項、函數(shù)、運算符、表達式、宏變量中的一種或多種組成;同步模塊,用于將消息處理邏輯表達式實時發(fā)送給消息處理模塊;消息處理模塊,用于根據(jù)消息處理邏輯表達式,更新自身保存的消息處理邏輯表達式;接收所需處理的消息,讀取最新的消息處理邏輯表達式,按照最新的消息處理邏輯表達式對應(yīng)的消息處理邏輯對所需處理的消息進行處理。
【專利說明】一種實現(xiàn)分布式消息處理的系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及消息處理【技術(shù)領(lǐng)域】,具體涉及一種實現(xiàn)分布式消息處理的系統(tǒng)及方法。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)的業(yè)務(wù)發(fā)展,造就了很多的大型系統(tǒng),這些大型系統(tǒng)一般都采用分布式的方式增加系統(tǒng)的并發(fā)能力。分布式消息處理系統(tǒng)一般在大型系統(tǒng)中處理各模塊數(shù)據(jù)交互和邏輯、系統(tǒng)產(chǎn)生數(shù)據(jù)的加工處理等等,其特點是消息的異步和并發(fā)處理吞吐量大,橫向擴展容易。
[0003]在現(xiàn)有技術(shù)中,分布式消息處理系統(tǒng)消息處理方式和邏輯都需要在系統(tǒng)啟動前定義好,其消息處理流程和處理邏輯在系統(tǒng)運行期間不能改變、或者只能做微小變更。如果需要變更處理流程,需要管理人員變更配置重啟系統(tǒng),如果需要變更處理邏輯,需要開發(fā)人員修改和重新實現(xiàn)新的處理邏輯并重啟系統(tǒng)。這樣,如果消息處理邏輯發(fā)生改變,只能重新修改系統(tǒng)處理邏輯代碼并重啟系統(tǒng),系統(tǒng)通用性很差。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本發(fā)明提供一種實現(xiàn)分布式消息處理的系統(tǒng)及方法,以解決現(xiàn)有技術(shù)中分布式消息處理系統(tǒng)存在通用性差、無法靈活變更的技術(shù)問題。
[0005]為解決上述問題,本發(fā)明提供的技術(shù)方案如下:
[0006]—種實現(xiàn)分布式消息處理的系統(tǒng),所述系統(tǒng)包括:
[0007]表達式模塊、設(shè)置模塊、同步模塊以及至少一個消息處理模塊;
[0008]所述表達式模塊中包括有規(guī)則項、函數(shù)、運算符、表達式、宏變量以及觸發(fā)器;所述觸發(fā)器用于當(dāng)所需處理的消息滿足消息處理邏輯表達式時觸發(fā)對應(yīng)的處理操作;
[0009]所述設(shè)置模塊,用于接收用戶利用所述表達式模塊建立的消息處理邏輯表達式,并將所述消息處理邏輯表達式發(fā)送給同步模塊;所述消息處理邏輯表達式由所述規(guī)則項、所述函數(shù)、所述運算符、所述表達式、所述宏變量中的一種或多種組成;
[0010]所述同步模塊,用于將接收到的所述消息處理邏輯表達式實時發(fā)送給所述消息處理模塊;
[0011]消息處理模塊,用于根據(jù)所述同步模塊實時發(fā)送的消息處理邏輯表達式,更新自身保存的消息處理邏輯表達式;接收所需處理的消息,讀取最新的消息處理邏輯表達式,按照所述最新的消息處理邏輯表達式對應(yīng)的消息處理邏輯對所述所需處理的消息進行處理。
[0012]相應(yīng)的,所述系統(tǒng)還包括:
[0013]結(jié)果輸出模塊,用于將所述消息處理單元輸出的處理結(jié)果發(fā)送至對應(yīng)的結(jié)果接收裝置,所述結(jié)果接收裝置包括消息隊列、短信發(fā)送系統(tǒng)、郵件發(fā)送系統(tǒng)、數(shù)據(jù)庫以及系統(tǒng)模塊。
[0014]相應(yīng)的,所述消息處理模塊包括:[0015]更新單元,用于根據(jù)所述同步模塊實時發(fā)送的消息處理邏輯表達式,更新自身保存的消息處理邏輯表達式;
[0016]消息初選單元,用于接收所需處理的消息,讀取最新的消息處理邏輯表達式,對所述所需處理的消息進行是否符合所述最新的消息處理邏輯表達式的篩選,將篩選通過的消息放入消息隊列;
[0017]綜合處理單元,用于從所述消息隊列讀取所述篩選通過的消息,讀取最新的消息處理邏輯表達式;按照所述最新的消息處理邏輯表達式對應(yīng)的消息處理邏輯對所述篩選通過的消息進行處理。
[0018]相應(yīng)的,所述綜合處理單元包括:
[0019]第一讀取子單元,用于從所述消息隊列讀取所述篩選通過的消息;
[0020]第二讀取子單元,用于讀取最新的消息處理邏輯表達式;
[0021]拆分子單元,用于將所述最新的消息處理邏輯表達式拆分為表達式最小單元;
[0022]處理子單元,用于按照所述表達式最小單元對應(yīng)的消息處理邏輯對所述篩選通過的消息進行處理。
[0023]相應(yīng)的,所述消息處理單元還包括:
[0024]確認更新單元,用于在更新自身保存的消息處理邏輯表達式之后,判斷更新是否成功,如果是,向所述同步模塊發(fā)送同步成功信號,以使所述同步模塊將所述同步成功信號發(fā)送給所述設(shè)置模塊,如果否,向所述同步模塊發(fā)送失敗信號,以使所述同步模塊將所述同步失敗信號發(fā)送給所述設(shè)置模塊,使所述設(shè)置模塊重新將接收用戶利用所述表達式模塊建立的消息處理邏輯表達式發(fā)送給所述同步模塊。
[0025]相應(yīng)的,所述表達式模塊還用于:
[0026]判斷用戶建立的消息處理邏輯表達式是否滿足表達式合法性規(guī)則,如果是,觸發(fā)所述設(shè)置模塊將所述消息處理邏輯表達式發(fā)送給同步模塊,如果否,通過所述設(shè)置模塊提示用戶重新建立消息處理邏輯表達式。
[0027]—種實現(xiàn)分布式消息處理的方法,所述方法包括:
[0028]設(shè)置模塊接收用戶利用表達式模塊建立的消息處理邏輯表達式,并將所述消息處理邏輯表達式發(fā)送給同步模塊;所述表達式模塊中包括有規(guī)則項、函數(shù)、運算符、表達式、宏變量以及觸發(fā)器;所述消息處理邏輯表達式由所述規(guī)則項、所述函數(shù)、所述運算符、所述表達式、所述宏變量中的一種或多種組成;所述觸發(fā)器用于當(dāng)所需處理的消息滿足消息處理邏輯表達式時觸發(fā)對應(yīng)的處理操作;
[0029]所述同步模塊將接收到的所述消息處理邏輯表達式實時發(fā)送給所述消息處理模塊;
[0030]所述消息處理模塊根據(jù)所述同步模塊實時發(fā)送的消息處理邏輯表達式,更新自身保存的消息處理邏輯表達式;接收所需處理的消息,讀取最新的消息處理邏輯表達式,按照所述最新的消息處理邏輯表達式對應(yīng)的消息處理邏輯對所述所需處理的消息進行處理。
[0031]相應(yīng)的,所述方法還包括:
[0032]結(jié)果輸出模塊將所述消息處理單元輸出的處理結(jié)果發(fā)送至對應(yīng)的結(jié)果接收裝置,所述結(jié)果接收裝置包括消息隊列、短信發(fā)送系統(tǒng)、郵件發(fā)送系統(tǒng)、數(shù)據(jù)庫以及系統(tǒng)模塊。
[0033]相應(yīng)的,所述按照所述最新的消息處理邏輯表達式對應(yīng)的消息處理邏輯對所述所需處理的消息進行處理,包括:
[0034]對所述所需處理的消息進行是否符合所述最新的消息處理邏輯表達式的篩選,將篩選通過的消息放入消息隊列;
[0035]從所述消息隊列讀取所述篩選通過的消息,按照所述最新的消息處理邏輯表達式對應(yīng)的消息處理邏輯對所述篩選通過的消息進行處理。
[0036]相應(yīng)的,所述按照所述最新的消息處理邏輯表達式對應(yīng)的消息處理邏輯對所述篩選通過的消息進行處理,包括:
[0037]將所述最新的消息處理邏輯表達式拆分為表達式最小單元;
[0038]按照所述表達式最小單元對應(yīng)的消息處理邏輯對所述篩選通過的消息進行處理。
[0039]相應(yīng)的,在所述消息處理單元更新自身保存的消息處理邏輯表達式之后,所述方法還包括:
[0040]所述消息處理單元判斷更新是否成功,如果是,向所述同步模塊發(fā)送同步成功信號,以使所述同步模塊將所述同步成功信號發(fā)送給所述設(shè)置模塊,如果否,向所述同步模塊發(fā)送失敗信號,以使所述同步模塊將所述同步失敗信號發(fā)送給所述設(shè)置模塊,使所述設(shè)置模塊重新將接收用戶利用所述表達式模塊建立的消息處理邏輯表達式發(fā)送給所述同步模塊。
[0041]相應(yīng)的,所述方法還包括:
[0042]所述表達式模塊判斷用戶建立的消息處理邏輯表達式是否滿足表達式合法性規(guī)貝1J,如果是,觸發(fā)所述設(shè)置模塊將所述消息處理邏輯表達式發(fā)送給同步模塊,如果否,通過所述設(shè)置模塊提示用戶重新建立消息處理邏輯表達式。
[0043]由此可見,本發(fā)明實施例具有如下有益效果:
[0044]本發(fā)明實施例中提供一套表達式系統(tǒng),抽象各種消息處理邏輯和實現(xiàn)方式,可以將處理邏輯中的規(guī)則項、函數(shù)、宏變量以及相互之間的關(guān)系組成消息處理邏輯表達式,也即消息的處理邏輯可以使用表達式系統(tǒng)中的內(nèi)容組合實現(xiàn),具有靈活性;通過實時接收用戶利用表達式系統(tǒng)建立的消息處理邏輯表達式,并同步到消息處理模塊,在系統(tǒng)不需要重啟的情況下,用戶在線修改消息處理邏輯表達式就能夠?qū)崿F(xiàn)消息處理邏輯和流程的變更。在本發(fā)明實施例中消息的處理邏輯都可以使用邏輯表達式靈活組合實現(xiàn),且消息處理邏輯可以隨時變更,從而實現(xiàn)了一個通用的、高響應(yīng)、靈活擴展的分布式消息處理系統(tǒng)。
【專利附圖】
【附圖說明】
[0045]圖1為本發(fā)明實施例中提供的實現(xiàn)分布式消息處理的系統(tǒng)實施例的示意圖;
[0046]圖2為本發(fā)明實施例中提供的實現(xiàn)分布式消息處理的系統(tǒng)實施例的數(shù)據(jù)流圖;
[0047]圖3為本發(fā)明實施例中提供的實現(xiàn)分布式消息處理的方法實施例一的流程圖;
[0048]圖4為本發(fā)明實施例中提供的實現(xiàn)分布式消息處理的方法實施例二的流程圖。
【具體實施方式】
[0049]為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和【具體實施方式】對本發(fā)明實施例作進一步詳細的說明。
[0050]本發(fā)明實施例提供的實現(xiàn)分布式消息處理的系統(tǒng)及方法,是針對現(xiàn)有技術(shù)中消息處理方式和邏輯都需要在系統(tǒng)啟動前定義好,無法中途變更;制定處理邏輯的同時,系統(tǒng)要有相對應(yīng)的處理程序,靈活性很低;當(dāng)有新種類數(shù)據(jù)時候,只能添加或修改系統(tǒng)處理邏輯代碼實現(xiàn)新數(shù)據(jù)的處理,系統(tǒng)通用性很差的技術(shù)問題,提出從消息處理抽象角度考慮,設(shè)計實現(xiàn)一套邏輯表達式系統(tǒng),以靈活實現(xiàn)實時消息處理變更的需求,其通過將各種處理方式、處理邏輯抽象為各種原子函數(shù),這些原子函數(shù)能夠組合成各種復(fù)雜的處理邏輯。通過表達式系統(tǒng),用戶只需要修改和建立各種消息處理邏輯表達式即可實現(xiàn)各種消息處理邏輯的整合。利用靈活通用的表達式系統(tǒng),實現(xiàn)不用修改系統(tǒng)處理程序和重啟系統(tǒng)情況下,變更消息處理邏輯實現(xiàn)新消息處理。
[0051]基于上述思想,參見圖1所示,是本發(fā)明實施例提供的實現(xiàn)分布式消息處理的系統(tǒng)實施例,該系統(tǒng)可以包括:
[0052]表達式模塊101、設(shè)置模塊102、同步模塊103以及至少一個消息處理模塊104。
[0053]其中,表達式模塊101中包括有規(guī)則項、函數(shù)、運算符、表達式、宏變量以及觸發(fā)器;觸發(fā)器用于當(dāng)所需處理的消息滿足消息處理邏輯表達式時觸發(fā)對應(yīng)的處理操作。
[0054]表達式模塊是分布式消息處理系統(tǒng)能夠?qū)崿F(xiàn)動態(tài)組合變更消息處理邏輯的核心模塊。該模塊抽象出一套通用的表達式配置功能,用戶能夠使用定義的內(nèi)容實現(xiàn)各種簡單以及復(fù)雜的消息處理邏輯。表達式模塊可以包括如下部分:觸發(fā)器(trigger)、規(guī)則項(item)、函數(shù)(function)、表達式(rules)、宏變量(macro)、運算符(operator)。
[0055]規(guī)則項代表表達式模塊中的規(guī)則子項,反映消息的種類、來源或者消息表達的含義,各種消息都可以抽象成不同的規(guī)則項。
[0056]函數(shù)為消息處理邏輯表達式中用于處理消息的邏輯操作,比如最大值、最小值、中間值、平局值、不同、差值、計數(shù)、總和、方差等等。函數(shù)和規(guī)則項配合使用可以組成消息的處理邏輯。
[0057]運算符代表表達式內(nèi)部或表達式之間的關(guān)系及運算,例如包括大于(>)、小于(O、等于( = )、不等于(#)、關(guān)系與(&)、關(guān)系非(I)等運算操作。
[0058]表達式可以是利用上述的規(guī)則項、函數(shù)、運算符等按照用戶的處理邏輯組成的表明某種類型的消息按照怎樣的處理邏輯處理以及輸出怎樣的結(jié)果的公式,也即表達式可以表示一種消息的處理邏輯。
[0059]宏變量表示抽象的統(tǒng)一替代參數(shù),宏變量可以是一種結(jié)果或變量的抽象,當(dāng)具體到特定實體時,可以替換成具體的實體值。在定義消息處理輸出結(jié)果時,為了定義通用輸出結(jié)果模板,可以使用宏變量實現(xiàn),在具體的實例中,宏變量會被替換成實體的值。
[0060]觸發(fā)器是消息處理邏輯表達式和具體實體綁定后的特殊單位,是為了通知和標(biāo)記某實體設(shè)置的消息處理邏輯表達式有數(shù)據(jù)滿足條件,觸發(fā)該實體處理滿足條件的消息。如果不需要將結(jié)果綁定到單個實體,可以不使用觸發(fā)器。
[0061]設(shè)置模塊102,用于接收用戶利用表達式模塊建立的消息處理邏輯表達式,并將消息處理邏輯表達式發(fā)送給同步模塊;消息處理邏輯表達式由規(guī)則項、函數(shù)、運算符、表達式、宏變量中的一種或多種組成。
[0062]設(shè)置模塊是用戶設(shè)置管理消息處理邏輯表達式的模塊,例如用戶可以增加、刪除、修改、查詢消息處理邏輯表達式,也即設(shè)置模塊可以接收用戶利用表達式模塊增加、刪除、修改的消息處理邏輯表達式,并為用戶提供已有消息處理邏輯表達式的查詢。消息處理邏輯表達式是消息處理流程和處理邏輯的體現(xiàn),用戶通過設(shè)置模塊調(diào)用表達式模塊中的內(nèi)容(規(guī)則項、函數(shù)、運算符、表達式、宏變量)可以實現(xiàn)定義各種消息處理邏輯表達式,每一個消息處理邏輯表達式實現(xiàn)一種消息處理流程和邏輯。消息處理邏輯表達式的輸出結(jié)果還可以與觸發(fā)器綁定,當(dāng)所需處理的消息滿足消息處理邏輯表達式時觸發(fā)對應(yīng)的處理操作。
[0063]為了更清晰的理解消息處理邏輯表達式,通過一個具體示例對消息處理邏輯表達式進行說明。表達式{PD[DI_pdState].last(#l)}#10為一個邏輯比較簡單的消息處理邏輯表達式,在這個表達式中H)為規(guī)則項,表示物理磁盤;DI_pdState為規(guī)則子項,表示物理磁盤的狀態(tài)值;last為函數(shù),表示最近一段時間的消息值,last括號里的內(nèi)容表示消息的時間范圍等,#1表示最近一次;最后面的#為運算符不等于。整個消息處理邏輯表達式意思為物理磁盤的狀態(tài)值在最新的一次采集數(shù)據(jù)中的值不等于10。如果某個消息符合該表達式,就符合處理條件,可以觸發(fā)對應(yīng)的操作處理。該表達式只是簡單的示例,在實際應(yīng)用中利用表達式模塊可以組裝出更為復(fù)雜的消息處理邏輯表達式,例如包括多重表達式等。
[0064]在本發(fā)明的一些實施例中,表達式模塊還用于:
[0065]判斷用戶建立的消息處理邏輯表達式是否滿足表達式合法性規(guī)則,如果是,觸發(fā)設(shè)置模塊將消息處理邏輯表達式發(fā)送給同步模塊,如果否,通過設(shè)置模塊提示用戶重新建立消息處理邏輯表達式。
[0066]對消息處理邏輯表達式進行合法性規(guī)則驗證,以滿足用戶輸入的消息處理邏輯表達式可以被實現(xiàn),在本實施例中僅將合法的消息處理邏輯表達式發(fā)送給同步模塊,可以保證后續(xù)消息處理流程的正確性。
[0067]同步模塊103,用于將接收到的消息處理邏輯表達式實時發(fā)送給消息處理模塊。
[0068]用戶對消息處理邏輯表達式的修改,通過同步模塊實時同步更新到各分布式消息處理模塊上。同步模塊可以使用socket通信方式,實時將用戶消息處理模塊更新到各個消息處理模塊上。對于同步模塊與消息處理模塊之間的通信方式在此并不進行限制。
[0069]消息處理模塊104,用于根據(jù)同步模塊實時發(fā)送的消息處理邏輯表達式,更新自身保存的消息處理邏輯表達式;接收所需處理的消息,讀取最新的消息處理邏輯表達式,按照最新的消息處理邏輯表達式對應(yīng)的消息處理邏輯對所需處理的消息進行處理。
[0070]在本發(fā)明的一些實施例中,消息處理模塊可以包括:
[0071]更新單元,用于根據(jù)同步模塊實時發(fā)送的消息處理邏輯表達式,更新自身保存的消息處理邏輯表達式,這樣實現(xiàn)了用戶通過在線修改消息處理邏輯表達式能夠使消息處理流程和邏輯實現(xiàn)進行變更。
[0072]消息初選單元,用于接收所需處理的消息,讀取最新的消息處理邏輯表達式,對所需處理的消息進行是否符合最新的消息處理邏輯表達式的篩選,將篩選通過的消息放入消息隊列。
[0073]綜合處理單元,用于從消息隊列讀取篩選通過的消息,讀取最新的消息處理邏輯表達式;按照最新的消息處理邏輯表達式對應(yīng)的消息處理邏輯對篩選通過的消息進行處理。
[0074]這樣,消息處理可以分為兩層,一層為消息初選:對接收到的消息,使用消息處理邏輯表達式的處理邏輯,初步篩選符合消息處理邏輯表達式的消息,放入消息隊列,等待后續(xù)處理;另外一層為消息綜合處理:對篩選出的消息利用對應(yīng)的消息處理邏輯表達式,按流程和處理邏輯處理數(shù)據(jù)。使用分層結(jié)構(gòu),是考慮到數(shù)據(jù)初選層會收集到大量的消息,這些消息中有很多不符合表達式匹配的消息,過濾掉這些消息,能夠讓消息綜合處理層性能更高,邏輯更簡單。
[0075]在本發(fā)明的一些實施例中,綜合處理單元可以包括:
[0076]第一讀取子單元,用于從消息隊列讀取篩選通過的消息;
[0077]第二讀取子單元,用于讀取最新的消息處理邏輯表達式;
[0078]拆分子單元,用于將最新的消息處理邏輯表達式拆分為表達式最小單元;
[0079]處理子單元,用于按照表達式最小單元對應(yīng)的消息處理邏輯對篩選通過的消息進行處理。
[0080]也即綜合處理單元從消息隊列中取出篩選后的消息,對消息對應(yīng)的消息處理邏輯表達式進行拆分出來,將復(fù)雜表達式分解為各個表達式最小單元,分解后的表達式子項都有對應(yīng)的處理邏輯。按照實現(xiàn)各表達式子項的處理邏輯和處理函數(shù)逐項處理,直到整個表達式處理結(jié)束,一條消息處理完畢。這樣,通過對表達式進行拆分為最小單元,而最小單元都有對應(yīng)的消息處理邏輯,可以實現(xiàn)用戶修改了消息處理邏輯表達式,但是消息處理邏輯依然可以正確運行,保證了系統(tǒng)的通用性。
[0081]消息初選單元與綜合處理單元使用的消息處理邏輯表達式雖然相同,但處理方式與目的并不相同。繼續(xù)使用消息處理邏輯表達式:{PD[DI_pdState].last (#1)} #10為例,在消息初選單元,讀取一些消息后會映射ro[DI_pdState]段,確定消息類型是:物理磁盤狀態(tài)值,同時確定該值是否#10 (不等于10),如果該條消息中物理磁盤狀態(tài)值不等于10就符合條件,放入消息隊列;在綜合處理單元,使用拆分表達式的方式將該消息處理邏輯表達式拆分成4部分:PD、DI_pdState、last (#1)、#10,其中PD、DI_pdState兩個字段表示消息類型,last(#l)是帶參數(shù)的函數(shù),表示該類型數(shù)據(jù)的最近一次的值,最后一個#10,表示該值不等于10,當(dāng)滿足這個條件后,會根據(jù)PD、DI_pdState,按預(yù)定義模板生成結(jié)果,送入結(jié)果隊列。
[0082]在本發(fā)明的一些實施例中,消息處理單元還可以包括:
[0083]確認更新單元,用于在更新自身保存的消息處理邏輯表達式之后,判斷更新是否成功,如果是,向同步模塊發(fā)送同步成功信號,以使同步模塊將同步成功信號發(fā)送給設(shè)置模塊,如果否,向同步模塊發(fā)送失敗信號,以使同步模塊將同步失敗信號發(fā)送給設(shè)置模塊,使設(shè)置模塊重新將接收用戶利用表達式模塊建立的消息處理邏輯表達式發(fā)送給同步模塊。
[0084]消息處理單元監(jiān)聽到消息處理邏輯表達式變更(例如增加、刪除、修改)后,更新消息處理邏輯表達式內(nèi)存結(jié)構(gòu)體中的內(nèi)容,如果成功修改,更新程序會發(fā)送一個確認消息到同步模塊,如修改未成功,也會發(fā)送失敗消息到同步模塊,同時附加錯誤原因等。
[0085]基于上述實施例,在本發(fā)明的一些實施例中,本發(fā)明實施例提供的實現(xiàn)分布式消息處理的系統(tǒng)實施例還可以包括:
[0086]結(jié)果輸出模塊,用于將消息處理單元輸出的處理結(jié)果發(fā)送至對應(yīng)的結(jié)果接收裝置,結(jié)果接收裝置包括消息隊列、短信發(fā)送系統(tǒng)、郵件發(fā)送系統(tǒng)、數(shù)據(jù)庫以及系統(tǒng)模塊。
[0087]消息被處理后會有相應(yīng)的結(jié)果輸出,包括處理結(jié)果和接收體,接收體例如短信系統(tǒng)、郵件系統(tǒng)、消息隊列、系統(tǒng)模塊、數(shù)據(jù)庫等等。
[0088]這樣,本發(fā)明實施例中通過提供一套表達式系統(tǒng),抽象各種消息處理邏輯和實現(xiàn)方式,可以將處理邏輯中的規(guī)則項、函數(shù)、宏變量以及相互之間的關(guān)系組成消息處理邏輯表達式,也即消息的處理邏輯可以使用表達式系統(tǒng)中的內(nèi)容組合實現(xiàn),具有靈活性;通過實時接收用戶利用表達式系統(tǒng)建立的消息處理邏輯表達式,并同步到消息處理模塊,在系統(tǒng)不需要重啟的情況下,用戶在線修改消息處理邏輯表達式就能夠?qū)崿F(xiàn)消息處理邏輯和流程的變更。
[0089]本發(fā)明實施例將常見數(shù)據(jù)處理抽象為一套表達式系統(tǒng),能夠自由組合和實現(xiàn)邏輯,同時易于擴展;消息的處理邏輯都可使用消息處理邏輯表達式組合實現(xiàn),消息處理邏輯可以隨時變更;可以在系統(tǒng)運行中無縫變更和新增消息處理邏輯,不用重啟系統(tǒng),從而實現(xiàn)了一個通用的、高響應(yīng)、靈活擴展的分布式消息處理系統(tǒng)。
[0090]參見圖2所示,是本發(fā)明實施例中提供的實現(xiàn)分布式消息處理系統(tǒng)的數(shù)據(jù)流圖。實現(xiàn)分布式消息處理可以分為消息處理邏輯表達式變更流程以及消息處理流程。
[0091]A、消息處理邏輯表達式變更流程:
[0092]Al、用戶通過設(shè)置模塊界面修改(增加、刪除、修改、查詢)消息處理邏輯表達式。
[0093]A2、表達式模塊提供規(guī)則項、函數(shù)、運算符、表達式、宏變量、觸發(fā)器。用戶修改或新增的消息處理邏輯表達式由表達式模塊提供組合、驗證、存儲等。
[0094]A3、消息處理邏輯表達式創(chuàng)建完成后,并且通過表達式模塊的合法性驗證,合法消息處理邏輯表達式會通過設(shè)置模塊傳送到同步模塊。
[0095]A4、同步模塊使用socket通信方式同步到分布式的各消息處理模塊中的消息初選單元以及綜合處理單元。消息同步之后,各消息處理模塊內(nèi)部自帶的更新程序修改、合并、更新消息處理邏輯表達式。完成之后返回確認消息,同步模塊把各消息處理模塊同步結(jié)果返回給設(shè)置模塊,設(shè)置模塊通知用戶消息處理邏輯表達式是否成功變更和同步,用戶可以根據(jù)結(jié)果選擇合適的操作。
[0096]B、消息處理流程:
[0097]B1、外部待處理的消息通過接口傳入消息處理模塊。(在分布式消息處理模塊中,可以存在多個消息初選單元,取決于系統(tǒng)消息并發(fā)量和系統(tǒng)處理能力)。
[0098]B2、消息初選單元使用消息處理邏輯表達式,初次匹配數(shù)據(jù),篩選出符合消息處理邏輯表達式的消息,送入消息隊列中。初選模塊只是做消息的初步篩選,真正的處理流程和處理邏輯由綜合處理單元完成。采用這種分層處理的設(shè)計是因為在大量的消息中,可能存在大量不符合消息處理邏輯表達式的消息,由消息初選單元忽略這些消息,可以降低后續(xù)消息處理的壓力。如果不分層,消息處理集中在一個處理模塊完成,會造成單模塊壓力過大,處理并發(fā)量有限,同時,分布式消息處理系統(tǒng)可能需要綜合處理消息,相互關(guān)聯(lián)的數(shù)據(jù)分布在不同的節(jié)點上時候造成處理困難等。
[0099]B3、綜合處理單元從消息隊列中取出篩選后的數(shù)據(jù)(可并發(fā)多進程、多線程處理),對消息對應(yīng)的消息處理邏輯表達式進行拆分出來,將復(fù)雜表達式分解為各個表達式最小單元,分解后的表達式子項都有對應(yīng)的處理邏輯。按照實現(xiàn)各表達式子項的處理邏輯和處理函數(shù)逐項處理,直到整個表達式處理結(jié)束,一條消息處理完畢。
[0100]B4、綜合處理單元對消息處理完成后,需要輸出消息處理結(jié)果,可以放入結(jié)果隊列,也可以持久化到數(shù)據(jù)庫或文件中。
[0101]B5、郵件或短信發(fā)送程序從結(jié)果隊列中取出結(jié)果,發(fā)送郵件或短信等。還可以擴展其他的結(jié)果輸出方式。
[0102]相應(yīng)的,參見圖3所示,是本發(fā)明實施例提供的實現(xiàn)分布式消息處理的方法實施例一的流程圖,可以包括以下步驟:
[0103]步驟301:設(shè)置模塊接收用戶利用表達式模塊建立的消息處理邏輯表達式,并將消息處理邏輯表達式發(fā)送給同步模塊;表達式模塊中包括有規(guī)則項、函數(shù)、運算符、表達式、宏變量以及觸發(fā)器;消息處理邏輯表達式由規(guī)則項、函數(shù)、運算符、表達式、宏變量中的一種或多種組成;觸發(fā)器用于當(dāng)所需處理的消息滿足消息處理邏輯表達式時觸發(fā)對應(yīng)的處理操作。
[0104]步驟302:同步模塊將接收到的消息處理邏輯表達式實時發(fā)送給消息處理模塊。
[0105]步驟303:消息處理模塊根據(jù)同步模塊實時發(fā)送的消息處理邏輯表達式,更新自身保存的消息處理邏輯表達式;接收所需處理的消息,讀取最新的消息處理邏輯表達式,按照最新的消息處理邏輯表達式對應(yīng)的消息處理邏輯對所需處理的消息進行處理。
[0106]在本發(fā)明的一些實施例中,按照最新的消息處理邏輯表達式對應(yīng)的消息處理邏輯對所需處理的消息進行處理的具體實現(xiàn)可以包括:
[0107]對所需處理的消息進行是否符合最新的消息處理邏輯表達式的篩選,將篩選通過的消息放入消息隊列;
[0108]從消息隊列讀取篩選通過的消息,按照最新的消息處理邏輯表達式對應(yīng)的消息處理邏輯對篩選通過的消息進行處理。
[0109]在本發(fā)明的一些實施例中,按照最新的消息處理邏輯表達式對應(yīng)的消息處理邏輯對篩選通過的消息進行處理的具體實現(xiàn)可以包括:
[0110]將最新的消息處理邏輯表達式拆分為表達式最小單元;
[0111]按照表達式最小單元對應(yīng)的消息處理邏輯對篩選通過的消息進行處理。
[0112]在本發(fā)明的一些實施例中,本發(fā)明實施例提供的實現(xiàn)分布式消息處理的方法實施例還可以包括:
[0113]結(jié)果輸出模塊將消息處理單元輸出的處理結(jié)果發(fā)送至對應(yīng)的結(jié)果接收裝置,結(jié)果接收裝置包括消息隊列、短信發(fā)送系統(tǒng)、郵件發(fā)送系統(tǒng)、數(shù)據(jù)庫以及系統(tǒng)模塊。
[0114]在本發(fā)明的一些實施例中,在消息處理單元更新自身保存的消息處理邏輯表達式之后,本發(fā)明實施例提供的實現(xiàn)分布式消息處理的方法實施例還可以包括:
[0115]消息處理單元判斷更新是否成功,如果是,向同步模塊發(fā)送同步成功信號,以使同步模塊將同步成功信號發(fā)送給設(shè)置模塊,如果否,向同步模塊發(fā)送失敗信號,以使同步模塊將同步失敗信號發(fā)送給設(shè)置模塊,使設(shè)置模塊重新將接收用戶利用表達式模塊建立的消息處理邏輯表達式發(fā)送給同步模塊。
[0116]本發(fā)明實施例提供的實現(xiàn)分布式消息處理的方法實施例還可以包括:
[0117]表達式模塊判斷用戶建立的消息處理邏輯表達式是否滿足表達式合法性規(guī)則,如果是,觸發(fā)設(shè)置模塊將消息處理邏輯表達式發(fā)送給同步模塊,如果否,通過設(shè)置模塊提示用戶重新建立消息處理邏輯表達式。
[0118]參見圖4所示,是本發(fā)明實施例提供的實現(xiàn)分布式消息處理的方法實施例二的流程圖,可以包括以下步驟:
[0119]步驟401:設(shè)置模塊接收用戶利用表達式模塊建立的消息處理邏輯表達式。[0120]步驟402:表達式模塊判斷用戶建立的消息處理邏輯表達式是否滿足表達式合法性規(guī)則,如果是,進入步驟403,如果否,進入步驟404。
[0121]步驟403:設(shè)置模塊將消息處理邏輯表達式發(fā)送給同步模塊,并進入步驟405。
[0122]步驟404:通過設(shè)置模塊提示用戶重新建立消息處理邏輯表達式,返回步驟401。
[0123]步驟405:同步模塊將接收到的消息處理邏輯表達式實時發(fā)送給消息處理模塊。
[0124]步驟406:消息處理模塊根據(jù)同步模塊實時發(fā)送的消息處理邏輯表達式,更新自身保存的消息處理邏輯表達式。
[0125]步驟407:消息處理單元判斷更新是否成功,如果是,進入步驟408,如果否,執(zhí)行步驟409。
[0126]步驟408:向同步模塊發(fā)送同步成功信號,以使同步模塊將同步成功信號發(fā)送給設(shè)置模塊,并進入步驟410。[0127]步驟409:向同步模塊發(fā)送失敗信號,以使同步模塊將同步失敗信號發(fā)送給設(shè)置模塊,返回步驟403。
[0128]步驟410:消息處理模塊接收所需處理的消息,讀取最新的消息處理邏輯表達式,按照最新的消息處理邏輯表達式對應(yīng)的消息處理邏輯對所需處理的消息進行處理。
[0129]步驟411:結(jié)果輸出模塊將消息處理單元輸出的處理結(jié)果發(fā)送至對應(yīng)的結(jié)果接收裝置,結(jié)果接收裝置包括消息隊列、短信發(fā)送系統(tǒng)、郵件發(fā)送系統(tǒng)、數(shù)據(jù)庫以及系統(tǒng)模塊。
[0130]這樣,本發(fā)明實施例中提供一套表達式系統(tǒng),抽象各種消息處理邏輯和實現(xiàn)方式,可以將處理邏輯中的規(guī)則項、函數(shù)、宏變量以及相互之間的關(guān)系組成消息處理邏輯表達式,也即消息的處理邏輯可以使用表達式系統(tǒng)中的內(nèi)容組合實現(xiàn),具有靈活性;通過實時接收用戶利用表達式系統(tǒng)建立的消息處理邏輯表達式,并同步到消息處理模塊,在系統(tǒng)不需要重啟的情況下,用戶在線修改消息處理邏輯表達式就能夠?qū)崿F(xiàn)消息處理邏輯和流程的變更。在本發(fā)明實施例中消息的處理邏輯都可以使用邏輯表達式靈活組合實現(xiàn),且消息處理邏輯可以隨時變更,從而實現(xiàn)了一個通用的、高響應(yīng)、靈活擴展的分布式消息處理系統(tǒng)。
[0131]需要說明的是,本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的系統(tǒng)或裝置而言,由于其與實施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。
[0132]還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
[0133]結(jié)合本文中所公開的實施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實施。軟件模塊可以置于隨機存儲器(RAM)、內(nèi)存、只讀存儲器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM、或【技術(shù)領(lǐng)域】內(nèi)所公知的任意其它形式的存儲介質(zhì)中。[0134]對所公開的實施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。
【權(quán)利要求】
1.一種實現(xiàn)分布式消息處理的系統(tǒng),其特征在于,所述系統(tǒng)包括: 表達式模塊、設(shè)置模塊、同步模塊以及至少一個消息處理模塊; 所述表達式模塊中包括有規(guī)則項、函數(shù)、運算符、表達式、宏變量以及觸發(fā)器;所述觸發(fā)器用于當(dāng)所需處理的消息滿足消息處理邏輯表達式時觸發(fā)對應(yīng)的處理操作; 所述設(shè)置模塊,用于接收用戶利用所述表達式模塊建立的消息處理邏輯表達式,并將所述消息處理邏輯表達式發(fā)送給同步模塊;所述消息處理邏輯表達式由所述規(guī)則項、所述函數(shù)、所述運算符、所述表達式、所述宏變量中的一種或多種組成; 所述同步模塊,用于將接收到的所述消息處理邏輯表達式實時發(fā)送給所述消息處理模塊; 消息處理模塊,用于根據(jù)所述同步模塊實時發(fā)送的消息處理邏輯表達式,更新自身保存的消息處理邏輯表達式;接收所需處理的消息,讀取最新的消息處理邏輯表達式,按照所述最新的消息處理邏輯表達式對應(yīng)的消息處理邏輯對所述所需處理的消息進行處理。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 結(jié)果輸出模塊,用于將所述消息處理單元輸出的處理結(jié)果發(fā)送至對應(yīng)的結(jié)果接收裝置,所述結(jié)果接收裝置包括消息隊列、短信發(fā)送系統(tǒng)、郵件發(fā)送系統(tǒng)、數(shù)據(jù)庫以及系統(tǒng)模塊。
3.根據(jù)權(quán)利要 求1所述的系統(tǒng),其特征在于,所述消息處理模塊包括: 更新單元,用于根據(jù)所述同步模塊實時發(fā)送的消息處理邏輯表達式,更新自身保存的消息處理邏輯表達式; 消息初選單元,用于接收所需處理的消息,讀取最新的消息處理邏輯表達式,對所述所需處理的消息進行是否符合所述最新的消息處理邏輯表達式的篩選,將篩選通過的消息放入消息隊列; 綜合處理單元,用于從所述消息隊列讀取所述篩選通過的消息,讀取最新的消息處理邏輯表達式;按照所述最新的消息處理邏輯表達式對應(yīng)的消息處理邏輯對所述篩選通過的消息進行處理。
4.根據(jù)權(quán)利要求3所述的系統(tǒng),其特征在于,所述綜合處理單元包括: 第一讀取子單元,用于從所述消息隊列讀取所述篩選通過的消息; 第二讀取子單元,用于讀取最新的消息處理邏輯表達式; 拆分子單元,用于將所述最新的消息處理邏輯表達式拆分為表達式最小單元; 處理子單元,用于按照所述表達式最小單元對應(yīng)的消息處理邏輯對所述篩選通過的消息進行處理。
5.根據(jù)權(quán)利要求3所述的系統(tǒng),其特征在于,所述消息處理單元還包括: 確認更新單元,用于在更新自身保存的消息處理邏輯表達式之后,判斷更新是否成功,如果是,向所述同步模塊發(fā)送同步成功信號,以使所述同步模塊將所述同步成功信號發(fā)送給所述設(shè)置模塊,如果否,向所述同步模塊發(fā)送失敗信號,以使所述同步模塊將所述同步失敗信號發(fā)送給所述設(shè)置模塊,使所述設(shè)置模塊重新將接收用戶利用所述表達式模塊建立的消息處理邏輯表達式發(fā)送給所述同步模塊。
6.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述表達式模塊還用于: 判斷用戶建立的消息處理邏輯表達式是否滿足表達式合法性規(guī)則,如果是,觸發(fā)所述設(shè)置模塊將所述消息處理邏輯表達式發(fā)送給同步模塊,如果否,通過所述設(shè)置模塊提示用戶重新建立消息處理邏輯表達式。
7.一種實現(xiàn)分布式消息處理的方法,其特征在于,所述方法包括: 設(shè)置模塊接收用戶利用表達式模塊建立的消息處理邏輯表達式,并將所述消息處理邏輯表達式發(fā)送給同步模塊;所述表達式模塊中包括有規(guī)則項、函數(shù)、運算符、表達式、宏變量以及觸發(fā)器;所述消息處理邏輯表達式由所述規(guī)則項、所述函數(shù)、所述運算符、所述表達式、所述宏變量中的一種或多種組成;所述觸發(fā)器用于當(dāng)所需處理的消息滿足消息處理邏輯表達式時觸發(fā)對應(yīng)的處理操作; 所述同步模塊將接收到的所述消息處理邏輯表達式實時發(fā)送給所述消息處理模塊; 所述消息處理模塊根據(jù)所述同步模塊實時發(fā)送的消息處理邏輯表達式,更新自身保存的消息處理邏輯表達式;接收所需處理的消息,讀取最新的消息處理邏輯表達式,按照所述最新的消息處理邏輯表達式對應(yīng)的消息處理邏輯對所述所需處理的消息進行處理。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述方法還包括: 結(jié)果輸出模塊將所述消息處理單元輸出的處理結(jié)果發(fā)送至對應(yīng)的結(jié)果接收裝置,所述結(jié)果接收裝置包括消息隊列、短信發(fā)送系統(tǒng)、郵件發(fā)送系統(tǒng)、數(shù)據(jù)庫以及系統(tǒng)模塊。
9.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述按照所述最新的消息處理邏輯表達式對應(yīng)的消息處理邏輯對所述所需處理的消息進行處理,包括: 對所述所需處理的消息進行是否符合所述最新的消息處理邏輯表達式的篩選,將篩選通過的消息放入消息隊列; 從所述消息隊列讀取所述篩選通過的消息,按照所述最新的消息處理邏輯表達式對應(yīng)的消息處理邏輯對所述篩選通過的消息進行處理。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述按照所述最新的消息處理邏輯表達式對應(yīng)的消息處理邏輯對所述篩選通過的消息進行處理,包括: 將所述最新的消息處理邏輯表達式拆分為表達式最小單元; 按照所述表達式最小單元對應(yīng)的消息處理邏輯對所述篩選通過的消息進行處理。
11.根據(jù)權(quán)利要求7所述的方法,其特征在于,在所述消息處理單元更新自身保存的消息處理邏輯表達式之后,所述方法還包括: 所述消息處理單元判斷更新是否成功,如果是,向所述同步模塊發(fā)送同步成功信號,以使所述同步模塊將所述同步成功信號發(fā)送給所述設(shè)置模塊,如果否,向所述同步模塊發(fā)送失敗信號,以使所述同步模塊將所述同步失敗信號發(fā)送給所述設(shè)置模塊,使所述設(shè)置模塊重新將接收用戶利用所述表達式模塊建立的消息處理邏輯表達式發(fā)送給所述同步模塊。
12.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述方法還包括: 所述表達式模塊判斷用戶建立的消息處理邏輯表達式是否滿足表達式合法性規(guī)則,如果是,觸發(fā)所述設(shè)置模塊將所述消息處理邏輯表達式發(fā)送給同步模塊,如果否,通過所述設(shè)置模塊提示用戶重新建立消息處理邏輯表達式。
【文檔編號】G06F9/50GK103914349SQ201410174706
【公開日】2014年7月9日 申請日期:2014年4月28日 優(yōu)先權(quán)日:2014年4月28日
【發(fā)明者】王帥 申請人:北京搜狐新媒體信息技術(shù)有限公司