事件的并行處理方法及裝置的制造方法
【專利說明】
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種事件的并行處理方法及裝置。
【【背景技術(shù)】】
[0002]目前,事件驅(qū)動(dòng)架構(gòu)(Event Driven Architecture, EDA)能夠通過應(yīng)用程序、適配器以及無入侵性的代理操作來創(chuàng)建服務(wù)。EDA還能夠用于實(shí)現(xiàn)企業(yè)應(yīng)用系統(tǒng),在這些應(yīng)用系統(tǒng)中,事件觸發(fā)的消息可以在獨(dú)立的、非耦合的組件之間傳遞。其中,復(fù)雜事件處理(Complex Event Processing, CEP)引擎用于協(xié)調(diào)這些獨(dú)立應(yīng)用程序。CEP可以快速地檢測(cè)出事件并判斷出事件的類型,從而幫助組織機(jī)構(gòu)快速、恰當(dāng)?shù)靥幚磉@些事件。CEP技術(shù)作為實(shí)現(xiàn)EDA的主流技術(shù)得到了迅速地發(fā)展。
[0003]現(xiàn)有技術(shù)中,基于CEP技術(shù)的事件處理方法是一種有序的并行處理方法,該方法包括:事件分發(fā)器接收輸入的事件流,事件流中的事件具有一定的順序;然后事件分發(fā)器將事件流中的事件按照輪詢方式發(fā)送給多個(gè)事件處理器;多個(gè)事件處理器并行地處理收到的事件,然后將事件隨機(jī)地發(fā)送給事件輸出器,為了保證輸出的事件流中事件的順序與輸入的事件流中事件的順序一致,事件輸出器需要對(duì)事件處理器發(fā)來的事件進(jìn)行排序處理,然后輸出排序結(jié)果。
[0004]然而,上述處理方法中,為了保證事件的有序性,事件輸出器需要占用較長的時(shí)間對(duì)事件進(jìn)行排序處理,增加了事件處理的時(shí)間開銷,使得事件處理效率較低。
【
【發(fā)明內(nèi)容】
】
[0005]有鑒于此,本發(fā)明實(shí)施例提供了一種事件的并行處理方法及裝置,用以實(shí)現(xiàn)在保證事件有序性的同時(shí)提高事件處理效率。
[0006]第一方面,本發(fā)明實(shí)施例提供了一種事件的并行處理裝置,所述裝置為事件處理器,包括:
[0007]接收單元,用于接收事件分發(fā)器發(fā)送的Μ個(gè)事件,Μ為大于或者等于1的整數(shù);
[0008]第一處理單元,用于對(duì)所述Μ個(gè)事件進(jìn)行處理,以獲得Ν個(gè)事件;Ν為小于或者等于Μ且大于或者等于0的整數(shù);所述Ν個(gè)事件的順序與所述Μ個(gè)事件的順序中所述Ν個(gè)事件的順序一致;
[0009]第二處理單元,用于獲得第一標(biāo)識(shí);
[0010]發(fā)送單元,用于向事件輸出器發(fā)送所述Ν個(gè)事件和所述第一標(biāo)識(shí),以便于所述事件輸出器向其他器件發(fā)送所述Ν個(gè)事件,以及在向其他器件發(fā)送完所述Ν個(gè)事件之后,依據(jù)所述第一標(biāo)識(shí),向所述其他器件發(fā)送從下一個(gè)事件處理器獲得的Ν個(gè)事件。
[0011]在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述第一標(biāo)識(shí)為所述下一個(gè)事件處理器的標(biāo)識(shí),所述接收單元,還用于:接收所述事件分發(fā)器發(fā)送的所述下一個(gè)事件處理器的標(biāo)識(shí),所述下一個(gè)事件處理器的標(biāo)識(shí)為所述事件分發(fā)器依據(jù)每個(gè)所述事件處理器的標(biāo)識(shí)和預(yù)設(shè)的所述至少兩個(gè)事件處理器的順序獲得的;或者,
[0012]所述第一標(biāo)識(shí)用于指示每個(gè)所述事件處理器向所述事件輸出器發(fā)送所述N個(gè)事件完畢,所述第二處理單元具體用于:生成所述第一標(biāo)識(shí)。
[0013]結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能的實(shí)現(xiàn)方式中,所述事件輸出器包括控制器和至少兩個(gè)事件緩存器,所述至少兩個(gè)事件緩存器與所述至少兩個(gè)事件處理器一一對(duì)應(yīng),所述發(fā)送單元具體用于:
[0014]向?qū)?yīng)的所述事件緩存器依次發(fā)送所述Ν個(gè)事件,以便于對(duì)應(yīng)的所述事件緩存器存儲(chǔ)從對(duì)應(yīng)的所述事件處理器獲得的Ν個(gè)事件,以便于所述控制器向所述其他器件發(fā)送所述事件緩存器存儲(chǔ)的所述Ν個(gè)事件;
[0015]向?qū)?yīng)的所述事件緩存器發(fā)送完所述Ν個(gè)事件后,向?qū)?yīng)的所述事件緩存器發(fā)送所述第一標(biāo)識(shí),以便于所述控制器依據(jù)所述第一標(biāo)識(shí),向所述其他器件依次發(fā)送從所述下一個(gè)事件處理器對(duì)應(yīng)的事件緩存器獲得的Ν個(gè)事件。
[0016]第二方面,本發(fā)明實(shí)施例提供了一種事件的并行處理裝置,所述裝置為事件輸出器,包括控制器和至少兩個(gè)事件緩存器,所述至少兩個(gè)事件緩存器與至少兩個(gè)事件處理器--對(duì)應(yīng):
[0017]每個(gè)所述事件緩存器,用于接收并存儲(chǔ)對(duì)應(yīng)的事件處理器發(fā)送的Ν個(gè)事件和所述第一標(biāo)識(shí);所述Ν個(gè)事件為所述事件處理器接收到事件分發(fā)器發(fā)送的Μ個(gè)事件后,對(duì)所述Μ個(gè)事件進(jìn)行處理后獲得的,Μ為大于或者等于1的整數(shù),Ν為小于或者等于Μ且大于或者等于0的整數(shù);所述Ν個(gè)事件的順序與所述Μ個(gè)事件的順序中所述Ν個(gè)事件的順序一致;
[0018]所述控制器,用于向其他器件發(fā)送每個(gè)所述事件緩存器存儲(chǔ)的所述Ν個(gè)事件,以及在向其他器件發(fā)送完所述Ν個(gè)事件之后,依據(jù)每個(gè)所述事件緩存器存儲(chǔ)的所述第一標(biāo)識(shí),向所述其他器件發(fā)送下一個(gè)事件緩存器存儲(chǔ)的所述Ν個(gè)事件。
[0019]在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述第一標(biāo)識(shí)用于指示每個(gè)所述事件處理器向?qū)?yīng)的所述事件緩存器發(fā)送所述Ν個(gè)事件完畢,所述控制器具體用于:
[0020]依據(jù)所述第一標(biāo)識(shí)和預(yù)設(shè)的所述至少兩個(gè)事件處理器的順序,確定所述下一個(gè)事件處理器;
[0021]依據(jù)事件處理器與事件緩存器的對(duì)應(yīng)關(guān)系,確定所述下一個(gè)事件處理器對(duì)應(yīng)的事件緩存器;
[0022]向所述其他器件發(fā)送所述下一個(gè)事件處理器對(duì)應(yīng)的事件緩存器存儲(chǔ)的所述Ν個(gè)事件。
[0023]在第二方面的第二種可能的實(shí)現(xiàn)方式中,所述第一標(biāo)識(shí)為所述下一個(gè)事件處理器的標(biāo)識(shí),所述控制器具體用于:
[0024]依據(jù)所述下一個(gè)事件處理器的標(biāo)識(shí),確定所述下一個(gè)事件處理器;
[0025]依據(jù)事件處理器與事件緩存器的對(duì)應(yīng)關(guān)系,確定所述下一個(gè)事件處理器對(duì)應(yīng)的事件緩存器;
[0026]向所述其他器件發(fā)送所述下一個(gè)事件處理器對(duì)應(yīng)的事件緩存器存儲(chǔ)的所述Ν個(gè)事件。
[0027]第三方面,本發(fā)明實(shí)施例提供了一種事件的并行處理方法,應(yīng)用于包括事件分發(fā)器、至少兩個(gè)事件處理器和事件輸出器的系統(tǒng),包括:
[0028]每個(gè)所述事件處理器接收所述事件分發(fā)器發(fā)送的Μ個(gè)事件,Μ為大于或者等于1的整數(shù);
[0029]每個(gè)所述事件處理器對(duì)所述Μ個(gè)事件進(jìn)行處理,以獲得Ν個(gè)事件;Ν為小于或者等于Μ且大于或者等于0的整數(shù);所述Ν個(gè)事件的順序與所述Μ個(gè)事件的順序中所述Ν個(gè)事件的順序一致;
[0030]每個(gè)所述事件處理器獲得第一標(biāo)識(shí);
[0031]每個(gè)所述事件處理器向事件輸出器發(fā)送所述Ν個(gè)事件和所述第一標(biāo)識(shí),以便于所述事件輸出器向其他器件發(fā)送所述Ν個(gè)事件,以及在向其他器件發(fā)送完所述Ν個(gè)事件之后,依據(jù)所述第一標(biāo)識(shí),向所述其他器件發(fā)送從下一個(gè)事件處理器獲得的Ν個(gè)事件。
[0032]在第三方面的第一種可能的實(shí)現(xiàn)方式中,所述第一標(biāo)識(shí)為所述下一個(gè)事件處理器的標(biāo)識(shí),所述每個(gè)所述事件處理器獲得第一標(biāo)識(shí),包括:每個(gè)所述事件處理器接收所述事件分發(fā)器發(fā)送的所述下一個(gè)事件處理器的標(biāo)識(shí),所述下一個(gè)事件處理器的標(biāo)識(shí)為所述事件分發(fā)器依據(jù)每個(gè)所述事件處理器的標(biāo)識(shí)和預(yù)設(shè)的所述至少兩個(gè)事件處理器的順序獲得的;或者,
[0033]所述第一標(biāo)識(shí)用于指示每個(gè)所述事件處理器向所述事件輸出器發(fā)送所述Ν個(gè)事件完畢,所述每個(gè)所述事件處理器獲得第一標(biāo)識(shí),包括:所述每個(gè)所述事件處理器生成所述第一標(biāo)識(shí)。
[0034]結(jié)合第三方面或第三方面的第一種可能的實(shí)現(xiàn)方式,在第三方面的第二種可能的實(shí)現(xiàn)方式中,所述事件輸出器包括控制器和至少兩個(gè)事件緩存器,所述至少兩個(gè)事件緩存器與所述至少兩個(gè)事件處理器一一對(duì)應(yīng),所述每個(gè)所述事件處理器向事件輸出器發(fā)送所述Ν個(gè)事件和所述第一標(biāo)識(shí),包括:
[0035]每個(gè)所述事件處理器向?qū)?yīng)的所述事件緩存器依次發(fā)送所述Ν個(gè)事件,以便于對(duì)應(yīng)的所述事件緩存器存儲(chǔ)從對(duì)應(yīng)的所述事件處理器獲得的Ν個(gè)事件,以便于所述控制器向所述其他器件發(fā)送所述事件緩存器存儲(chǔ)的所述Ν個(gè)事件;
[0036]每個(gè)所述事件處理器向?qū)?yīng)的所述事件緩存器發(fā)送完所述Ν個(gè)事件后,向?qū)?yīng)的所述事件緩存器發(fā)送所述第一標(biāo)識(shí),以便于所述控制器依據(jù)所述第一標(biāo)識(shí),向所述其他器件依次發(fā)送從所述下一個(gè)事件處理器對(duì)應(yīng)的事件緩存器獲得的Ν個(gè)事件。
[0037]第四方面,本發(fā)明實(shí)施例還提供了一種事件的并行處理方法,應(yīng)用于包括事件分發(fā)器、至少兩個(gè)事件處理器和事件輸出器的系統(tǒng),包括:
[0038]所述事件輸出器接收并存儲(chǔ)對(duì)應(yīng)的事件處理器發(fā)送的Ν個(gè)事件和所述第一標(biāo)識(shí);所述Ν個(gè)事件為所述事件處理器接收到事件分發(fā)器發(fā)送的Μ個(gè)事件后,對(duì)所述Μ個(gè)事件進(jìn)行處理后獲得的,Μ為大于或者等于1的整數(shù),Ν為小于或者等于Μ且大于或者等于0的整數(shù);所述Ν個(gè)事件的順序與所述Μ個(gè)事件的順序中所述Ν個(gè)事件的順序一致;
[0039]所述事件輸出器向其他器件發(fā)送每個(gè)所述事件緩存器存儲(chǔ)的所述Ν個(gè)事件,以及在向其他器件發(fā)送完所述Ν個(gè)事件之后,依據(jù)每個(gè)所述事件緩存器存儲(chǔ)的所述第一標(biāo)識(shí),向所述其他器件發(fā)送下一個(gè)事件緩存器存儲(chǔ)的所述Ν個(gè)事件。
[0040]在第四方面的第一種可能的實(shí)現(xiàn)方式中,所述第一標(biāo)識(shí)用于指示每個(gè)所述事件處理器向所述事件輸出器發(fā)送所述Ν個(gè)事件完畢,所述依據(jù)每個(gè)所述事件緩存器存儲(chǔ)的所述第一標(biāo)