專利名稱:用于調(diào)度由于事件相關(guān)性被部分排序的事務(wù)的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及事件驅(qū)動系統(tǒng),并且特別地,涉及用于確保分布式環(huán)境中部分地時(shí)間依賴的事件的并行處理的方法。
背景技術(shù):
反應(yīng)應(yīng)用涉及這樣一類應(yīng)用,其是事件驅(qū)動的,并且被配置為基于事件的檢測而運(yùn)轉(zhuǎn)。所述事件的準(zhǔn)確定時(shí)和內(nèi)容通常不是預(yù)先已知的。不同領(lǐng)域中的許多工具已被建立,以用于檢測事件,并且用于將其檢測與合適的動作耦合。這些工具存在于實(shí)現(xiàn)了主動數(shù)據(jù)庫、事件管理系統(tǒng)、“發(fā)布/預(yù)訂”機(jī)制、實(shí)時(shí)系統(tǒng)和類似產(chǎn)品的產(chǎn)品中。
2003年8月5日發(fā)布的題為“Situation awareness system”的US6,604,093(Etzion等人)在此被引入作為參考,并且其公開了一種用于順序處理事件的可配置的事件驅(qū)動的基于規(guī)則的系統(tǒng)。在本文檔的剩余部分中,該系統(tǒng)將根據(jù)其首字母縮寫被稱為“AMIT”,其是指“活動中間件技術(shù)”。AMIT是美國紐約Armonk的國際商業(yè)機(jī)器公司的商標(biāo)。即,到來的事件被一個(gè)接一個(gè)地處理,同時(shí)不同事件的實(shí)例之間的所有關(guān)系(時(shí)間上的和數(shù)量上的)被保存在存儲器中。盡管該方法對于在其中所述事件的多數(shù)具有時(shí)間關(guān)系的情況(例如,特定事件的順序發(fā)生在某個(gè)特定時(shí)間周期內(nèi))是絕對必要的,但其對于在其中大量時(shí)間上獨(dú)立的事件應(yīng)當(dāng)在分布式環(huán)境中被處理的其它情況(例如聚合事件規(guī)則,其中,單一事件實(shí)例的順序不如其所計(jì)算的統(tǒng)計(jì)度量重要)將是不可擴(kuò)展的。同樣,如果AMIT事件規(guī)則(事件組合)包括數(shù)據(jù)庫查詢,則所述ACID事務(wù)支持應(yīng)當(dāng)被添加。
2001年8月7日發(fā)布的題為“Method of scheduling distributedtransactions”的US 6,272,515(Fouquet)在此被引入作為參考,并且其公開了一種調(diào)度分布事務(wù)的方法,所述方法用于存在事務(wù)并行發(fā)起的可能性的事務(wù)監(jiān)視器,以便根據(jù)所述事務(wù)被發(fā)起的時(shí)間順序來順序化所述事務(wù)的操作的激活,并且其慮及了不同事務(wù)或同一事務(wù)的操作之間的執(zhí)行沖突。由此,盡管所述方法可應(yīng)用于可以被劃分為單元操作的常規(guī)事務(wù),并且事件僅通過信號傳送事務(wù)發(fā)起或操作終止,但所述方法不適于在分布式事務(wù)環(huán)境中檢測預(yù)定義事件組合(事件驅(qū)動規(guī)則)以用于隨后處理的那些規(guī)則引擎。
在所述情況下,事件驅(qū)動規(guī)則引擎將每個(gè)事件實(shí)例作為不能被再劃分為復(fù)合操作的原子事務(wù)來處理。所述事務(wù)應(yīng)當(dāng)鎖定指定用于所處理的事件實(shí)例的資源。所述資源是表示計(jì)算窗口的數(shù)據(jù)結(jié)構(gòu),其中所述計(jì)算窗口是時(shí)間段,其中,所述事件實(shí)例可以被計(jì)數(shù),并且其中,預(yù)定義事件的組合(規(guī)則)可發(fā)生。在存在到來的事件之間的時(shí)間上的或其它語義依賴的情況下,存在應(yīng)當(dāng)被解決的不同分布式事務(wù)之間的可能的沖突。
發(fā)明內(nèi)容
因此,本發(fā)明的目的是提供一種改進(jìn)的用于分布式、面向事務(wù)環(huán)境中對事件事務(wù)進(jìn)行并行處理的方法和系統(tǒng),其具有定義語義上相關(guān)的事件的事件驅(qū)動規(guī)則,其中所述組成事件的順序可以很重要。
根據(jù)本發(fā)明的廣泛的方面,提供了一種用于調(diào)度每個(gè)具有各自的時(shí)間戳的事件事務(wù)的、以用在具有預(yù)定的事件規(guī)則的事件驅(qū)動應(yīng)用中的方法,所述方法包括根據(jù)所述預(yù)定的事件規(guī)則解決事件之間可能的時(shí)間依賴性;以及確定所述事件事務(wù)何時(shí)可以被處理,由此允許所述事件事務(wù)被分派到分布的處理器進(jìn)行并行處理。
從另一方面觀察本發(fā)明,現(xiàn)在提供了一種用于實(shí)現(xiàn)所述方法的系統(tǒng)。優(yōu)選地,所述系統(tǒng)包括檢測預(yù)定義的事件組合的事件接收器和傳送器,并且包括用于接收一個(gè)或更多事件的事件事務(wù);事件并行控制單元,其被耦合到所述事件事務(wù),并且響應(yīng)于關(guān)聯(lián)于所述事件的各個(gè)時(shí)間戳,用于根據(jù)相關(guān)聯(lián)的事件規(guī)則解決事件之間可能的時(shí)間依賴性;以及所述事件并行控制單元的至少兩個(gè)輸出端口適于被耦合到各個(gè)分布式處理器,用于根據(jù)從所述事件規(guī)則定義中了解的依賴性并行執(zhí)行所述事件。
由此,本發(fā)明的優(yōu)選實(shí)施例定義了在事件驅(qū)動規(guī)則引擎中適合引發(fā)狀況的事件規(guī)則的事務(wù),并且定義了一種用于所述事務(wù)的并行控制機(jī)制。
并行而非順序地處理所述事務(wù)要求所述事務(wù)被分布在幾個(gè)事件處理單元之間。
所述事件并行控制單元使用單一機(jī)器集中執(zhí)行并行控制算法,并且將預(yù)備運(yùn)行的事務(wù)(即被假定將在當(dāng)前事務(wù)完成執(zhí)行之前被執(zhí)行的所有事務(wù))分派到不同的處理單元。所述處理單元可以是不同機(jī)器上的不同過程或使用遠(yuǎn)程過程調(diào)用(RPC)的單一機(jī)器上的不同過程(線程)。本發(fā)明針對AMIT開發(fā),但可以被輕松地應(yīng)用于運(yùn)行在分布式環(huán)境中的事件驅(qū)動規(guī)則引擎的全部類。
為理解本發(fā)明并且了解其實(shí)際上可以如何被實(shí)現(xiàn),其優(yōu)選實(shí)施例現(xiàn)在將借助于僅非限制性例子、參考附圖被描述,在附圖中圖1是原理上示出了根據(jù)本發(fā)明的第一實(shí)施例的、用于根據(jù)預(yù)定義事件組合(規(guī)則)檢測和處理事件的系統(tǒng)的框圖;圖2是原理上示出了根據(jù)本發(fā)明的第二實(shí)施例的、用于分布式環(huán)境中的系統(tǒng)的框圖;圖3、4和5示出了描述依據(jù)根據(jù)本發(fā)明的不同例子的事件和狀況之間的依賴性的依賴圖;圖6是示出了由根據(jù)本發(fā)明的事件接收器和傳送器實(shí)現(xiàn)的主要?jiǎng)幼鞯牧鞒虉D;以及圖7是功能上詳細(xì)示出了圖1中描述的所述事件接收器和傳送器的框圖。
具體實(shí)施例方式
圖1是原理上示出了根據(jù)本發(fā)明的第一實(shí)施例的用于根據(jù)預(yù)定義事件組合(規(guī)則)檢測和處理事件的系統(tǒng)10的框圖。事件分派器根據(jù)關(guān)聯(lián)于每個(gè)事件的時(shí)間戳將事件順序地傳送到事件并行控制單元12,并且事件處理單元13開始對于每個(gè)事件的事件處理。所述事件處理單元13可以是任一常規(guī)事件事務(wù)處理器,例如是在上面引用的US 6,604,093中描述的AMIT。所述事件并行控制單元12利用了基于時(shí)間戳的并行控制算法(在下面描述),其中,所述算法使用對事件規(guī)則的語義認(rèn)知來并行處理到來的事件。其根據(jù)當(dāng)前的事件規(guī)則檢查事件事務(wù)是否可以被開始,并且如果必要?jiǎng)t將所述事務(wù)的執(zhí)行掛起。其還在如果已在運(yùn)行的事件事務(wù)相應(yīng)的事件被定義用于復(fù)雜(嵌套)事件組合時(shí)提交或終止已在運(yùn)行的事件事務(wù),其中,所述復(fù)雜事件組合從其它事件組合和單元事件被導(dǎo)出。
所述事件規(guī)則可以被存儲在外部數(shù)據(jù)庫14中或數(shù)據(jù)文件中,所述數(shù)據(jù)文件由所述事件分派器11以與事件或規(guī)則被常規(guī)供應(yīng)給AMIT的方式類似的方式進(jìn)行訪問。然而,盡管所述事件直接被常規(guī)地供應(yīng)給AMIT,但在本發(fā)明中,其不是直接而是經(jīng)由所述事件分派器11被供應(yīng)。所述規(guī)則可以同時(shí)被AMIT和所述事件分派器讀取。所述事件分派器11首先將所述事件供應(yīng)給所述事件并行控制單元12,并且接著僅響應(yīng)于接收自所述事件并行控制單元12的發(fā)起控制信息將所述事件供應(yīng)給所述事件處理單元13。關(guān)聯(lián)于每個(gè)事件的所述時(shí)間戳信息可以由內(nèi)部時(shí)鐘(未示出)或通過關(guān)聯(lián)于每個(gè)事件的預(yù)定義運(yùn)行順序?qū)С?。所述事件分派?1結(jié)合所述事件并行控制單元12運(yùn)轉(zhuǎn)作為事件接收器和傳送器15,其處理到來的事件,以便根據(jù)已知的依賴性確定何時(shí)事件處理可以被開始,并且然后將事件分派到事件處理單元13。
圖1示出了所述事件并行控制單元12的構(gòu)架以及其被耦合到所述事件處理單元13的方式。實(shí)際上,本發(fā)明的優(yōu)選實(shí)施例可以并行運(yùn)行幾個(gè)事件處理單元,因此實(shí)際上,所述事件并行控制單元12具有多個(gè)處理器輸出端口,其中每個(gè)都適于將相應(yīng)事件處理單元耦合到該端口。
圖2是原理上示出了根據(jù)本發(fā)明的所述實(shí)施例的、用于分布式環(huán)境中的系統(tǒng)20的框圖。已參考圖1被描述的部件將由同樣的標(biāo)號來標(biāo)識。由此,在所述系統(tǒng)20中,所述事件接收器和傳送器15被耦合到多個(gè)事件處理單元,其中,所述事件處理單元的每個(gè)被表示為13,并且可以由所述AMIT引擎實(shí)現(xiàn)。到來的事件如上面參考圖1描述的那樣被所述事件接收器和傳送器15處理,以便確定其何時(shí)可以被啟動。其可以然后被分派到不同的事件處理單元13進(jìn)行并行處理,盡管這樣做的方式以及不同處理器被選定的方式自身不是本發(fā)明的特征。
已經(jīng)描述了根據(jù)本發(fā)明的系統(tǒng)的可能實(shí)現(xiàn),所述基于時(shí)間戳的并行控制算法操作的方式現(xiàn)在將被描述。
所述系統(tǒng)中的所有事件和狀況之間的依賴圖被創(chuàng)建。所述依賴圖可以基于對元數(shù)據(jù)(規(guī)則定義)的分析被構(gòu)建,其中,所述元數(shù)據(jù)通常被作為直接輸入供應(yīng)給所述事件處理單元13,但在本發(fā)明中被經(jīng)由所述事件接收器和傳送器15間接地供應(yīng)給所述事件處理單元13。出于實(shí)現(xiàn)本發(fā)明的實(shí)施例的目的,假設(shè)對于每個(gè)事件,下面的數(shù)據(jù)結(jié)構(gòu)被維護(hù)作為所述規(guī)則定義的一部分對于其該事件應(yīng)當(dāng)被添加的狀況的列表;對于其該事件可以開啟其計(jì)算窗口的狀況的列表;對于其該事件可以關(guān)閉其計(jì)算窗口的狀況的列表;可以被該事件觸發(fā)的狀況的列表。
實(shí)施本發(fā)明的一種算法處理這些規(guī)則以確定事件和狀況之間以及狀況和其它狀況之間的依賴性,以便構(gòu)建表示事件/狀況層級的數(shù)據(jù),其中所述數(shù)據(jù)包括指示關(guān)聯(lián)于組成事件的時(shí)間戳的數(shù)據(jù)。該信息然后被用于確定事件可以合法地被開始還是在其可以開始之前取決于相關(guān)事件的完成。在該上下文中,應(yīng)當(dāng)理解,狀況僅是由事件或事件的組合引起的一類事件。因此,只要所述算法被涉及,就不在術(shù)語“事件”和“狀況”之間作任何區(qū)分。
所述算法允許對事件的優(yōu)化處理,由此事件被分布式處理器并行地處理,而不是如被常規(guī)完成的那樣順序地處理,以便允許后來事件可以在不需要等待先來事件提交的情況下開始處理的可能性,以便不延遲對在時(shí)間上不依賴于所述先來事件的后來事件的處理。另一方面,如果從所述事件層級確定了在先來事件的完成未決時(shí)所述后來事件不可以被解決,則所述后來事件將被放棄直到所述先來事件已終止,其中,所述后來事件在時(shí)間上依賴于所述先來事件的完成。
所述算法如將在下面被說明的那樣處理所述事件數(shù)據(jù),以便提取事件之間的時(shí)間依賴性。為了以更直觀的方式說明如何這樣做,所述事件層級將被圖解地表示。但是應(yīng)當(dāng)理解,實(shí)際上,重要的是所述圖形表示中暗含的信息,并且,由于所述信息無論如何是所述事件數(shù)據(jù)中固有的,所以所述算法不需要實(shí)際產(chǎn)生所述事件層級的任何圖形表示。由此,下面的規(guī)則被應(yīng)用,以便在圖形上構(gòu)造所述事件層級如果事件或狀況作為操作數(shù)參與到狀況中,則邊緣被從所述事件/狀況節(jié)點(diǎn)添加到所述狀況節(jié)點(diǎn)中。
如果事件或狀況充當(dāng)計(jì)算窗口的開始或結(jié)束,則其相應(yīng)的開始/結(jié)束邊緣被從所述事件/狀況節(jié)點(diǎn)添加到所述狀況。
并行控制表被創(chuàng)建,其中,獨(dú)立的列對于每個(gè)狀況定義被定義。如果存在從事件到關(guān)聯(lián)于所述依賴圖中感興趣的列的狀況的邊緣,則所述事件被添加到該列。每一列通過事件的到達(dá)時(shí)間戳而分類。事件與其到達(dá)時(shí)間戳一起被添加到所述并行控制表中的合適列??梢杂商囟ㄊ录|發(fā)的所有狀況與指示那些狀況仍然未決的標(biāo)記一起被添加到所述并行控制表中的適當(dāng)列。在下面描述的例子中,所述標(biāo)記用星號(*)表示。對于充當(dāng)計(jì)算窗口的結(jié)束的事件,特殊標(biāo)記被添加,以便處理延期/延遲的狀況。在下面描述的例子中,從所述事件到依賴狀況的路徑被標(biāo)記為“結(jié)束邊緣”。類似地,從充當(dāng)計(jì)算窗口的開始的事件到依賴狀況的路徑被標(biāo)記為“開始邊緣”。這允許所述算法識別關(guān)于依賴狀況的計(jì)算窗口的開始和結(jié)束依賴性。
如果事件事務(wù)在“真實(shí)”事件(未標(biāo)記的狀況)中首先被放在所述并行控制表的所有列中,則應(yīng)當(dāng)開始事件事務(wù)。所述事件事務(wù)只有被首先放在所述并行控制表的所有列中(在該表的所有事件和被標(biāo)記狀況之中)時(shí)才被提交。在存在具有相同時(shí)間戳(在延期/延遲狀況的情況下)的規(guī)則事件和充當(dāng)所述計(jì)算窗口的結(jié)束的事件的情況下,所述事件將開始所述新事務(wù)。當(dāng)具有時(shí)間戳t2的事件事務(wù)嘗試提交時(shí),所述算法檢查具有時(shí)間戳t1(t1<t2)的任意被標(biāo)記狀況是否變?yōu)檎鎸?shí)的(所述標(biāo)記被刪除)。在所述情況下,所述后一事件事務(wù)被放棄并重啟。
如果存在仍然被標(biāo)記的具有所述時(shí)間戳的狀況,則所述事務(wù)處理將被阻止,直到所述被標(biāo)記的狀況被解決(被移除或改變?yōu)檎鎸?shí)的)。
不同例子現(xiàn)在將參考附圖的圖3和5被描述。圖3涉及依賴性的簡單情況,其中,所述第一事件導(dǎo)致狀況的檢測,以及所檢測的狀況與第二事件一起參與到其它狀況檢測中。圖4示出了這樣的情況,其中,到來的事件還可以關(guān)閉用于檢測狀況的計(jì)算窗口,以及圖5參考這樣的情況,其中所檢測的狀況僅在計(jì)算窗口期間的結(jié)束進(jìn)行報(bào)告,但仍然應(yīng)當(dāng)考慮到其它狀況檢測。
例1圖3在圖形上示出了狀況S1,其是e1的復(fù)合功能;以及狀況S2,其是S1和e2的復(fù)合。假設(shè)所述事件事務(wù)被部分地排序,其意味著事件被提交的排序或順序是重要的。用于兩種狀況的計(jì)算窗口都在啟動時(shí)被開啟,并且永不終止。
場景事件e1在t1到達(dá),事件e2在t2到達(dá)(t2>t1)。用于S1和S2的并行控制表將是表1
只要狀況S2被涉及,S1就是必須在狀況S2可以發(fā)生之前完成(即提交)的組成事件。然而,S1還依賴于所述事件e1的提交。這意味著,只要狀況S2被涉及,所述事件s1在時(shí)刻t1未被解決并且由此被標(biāo)記。e1和e2將并行地開始事務(wù)。如果s1被觸發(fā),則e2將放棄其事務(wù),并且將重做其工作。這確保了如果S2是(S1,e2)的順序時(shí)事務(wù)排序被維護(hù),其中所述(S1,e2)的順序指示S1必須在e2提交之前提交,并且僅在那時(shí)S2可以被解決。另一方面,可以存在這樣的場景,其中,S1不發(fā)生,并且從所述并行控制表中被移除。例如,S1可能是狀況“銀行帳戶被透支”,并且產(chǎn)生該狀況的e1可能僅僅是客戶的當(dāng)前余額。由此,如果在e2已被提交之前,e1到達(dá)并且是健全余額,則S1將不被觸發(fā),并且可從所述并行控制表中刪除。這可以發(fā)生是由于定義了為觸發(fā)狀況僅需要一個(gè)事件。例如S2可以被定義為如果兩個(gè)事件(S1或e2)中的一個(gè)到達(dá)則被觸發(fā)。例如,考慮S2代表狀況“帳戶問題”,以及e2指示“信用卡被注銷”。這樣在所述情況下,如果S1不被觸發(fā),則e2將不被退回,并且S2將被檢測到。這允許所述事件分派器11將所述事件事務(wù)e1和e2分派到不同處理器,以便允許并行處理,由此節(jié)省時(shí)間。
例2圖4在圖形上示出了狀況S1,其是e1的復(fù)合功能。狀況S2是S1和e2的復(fù)合功能。迄今,所述事件層級與上面參考圖3描述的相同。然而,盡管所有狀況發(fā)生在特定計(jì)算窗口中,但在前面的情形中,所述計(jì)算窗口是無限制的,并且從啟動開始就無終止地延長,圖4中所示的狀況被限于發(fā)生在這樣的計(jì)算窗口中的,所述計(jì)算窗口在啟動之后開始,并且具有預(yù)定的終止符。這些在圖形上被示為關(guān)聯(lián)于事件的開始或結(jié)束邊緣,其中所述開始或結(jié)束邊緣取決于該邊緣分別是開始邊緣還是結(jié)束邊緣而指示由該事件產(chǎn)生的狀況被限于發(fā)生在與所述事件并行開始或結(jié)束的計(jì)算窗口。由此,事件e3終止了用于S1和S2二者的計(jì)算窗口意味著,當(dāng)e3發(fā)生時(shí),S1和S2的計(jì)算都終止。另一方面,S1和S2的計(jì)算窗口都在e4到達(dá)時(shí)被啟動。由此,用于S1和S2二者的計(jì)算窗口都從關(guān)聯(lián)于e4的時(shí)刻擴(kuò)展到關(guān)聯(lián)于e3的時(shí)刻。這意味著,如果e3在e4之前到達(dá),則其不影響S1,因?yàn)槠溆?jì)算窗口還未被開啟,因?yàn)镾1將需要在其計(jì)算開始之前被計(jì)算。事件e4仍然確定S1的計(jì)算可以開始,并且其在所述計(jì)算窗口被e3關(guān)閉時(shí)完成。事件e4開啟所述計(jì)算窗口,但S1將在事件e1到達(dá)后在合適時(shí)盡快被檢測到(相當(dāng)于閾值條件“如果存在的話”)。由此,當(dāng)事件e4到達(dá)時(shí),其將開啟S1的計(jì)算窗口,并且到達(dá)的下一個(gè)e1事件(但在e3之前)將被計(jì)算。借助于例子,e4可能是“一天開始”事件,以及e3是“一天結(jié)束”事件。S1可以是“銀行帳戶被透支”,事件e1指示“帳戶余額”。事件e2可以是“支付請求”,以及S2可以是“支付失敗”,由此,如果所述“支付請求”和“帳戶透支” 在同一工作日被收到,則“支付失敗”將被檢測到。
場景事件e4在t1到達(dá),事件e1在t2到達(dá),事件e3在t3到達(dá),以及事件e2在t4到達(dá),其中,t1<t2<t3<t4。
在該情況下,所述并行控制表將包含表2
在該情況下,所述處理將是順序的,因?yàn)閑3不能在e1(S1)之前開始,并且e2不能在e3(S2)之前開始。
關(guān)閉計(jì)算窗口如果事件關(guān)閉計(jì)算窗口,則僅在事務(wù)在所有事件(真實(shí)的和那些“已標(biāo)記狀況”的事件,其中所述“已標(biāo)記狀況”的事件被優(yōu)先處理,但可能之后需要被放棄和重運(yùn)行)中被首先放置時(shí)事務(wù)才開始,并且將被針對每個(gè)狀況獨(dú)立地提交(部分提交)。在部分提交之后,針對所述已提交狀況的其它事務(wù)可以開始。同樣在關(guān)閉用于狀況的計(jì)算窗口之后,所述方法檢查延遲/延期的狀況是否在關(guān)閉該窗口的事件(具有相同的時(shí)間戳)之前被觸發(fā)并且被寫入到所述表中。這將在這樣的延期/延遲狀況的情況下發(fā)生,所述延期/延遲狀況在其計(jì)算窗口被同一事件關(guān)閉的其它狀況中被需要。
例3圖5在圖形上示出了延期的狀況S1,其是e1的復(fù)合功能。狀況S2是S1的復(fù)合功能。由此,這里同樣地,所述事件層級與上面參考圖3描述的相同。然而,用于兩個(gè)狀況的計(jì)算窗口在啟動時(shí)被開啟,并且在事件e2到達(dá)時(shí)被終止。
場景事件e1在t1到達(dá);e2在t2到達(dá)(t1<t2);在所述情況下,所述并行控制表將包含表3
狀況s1不被寫為具有時(shí)間戳t1,因?yàn)閮He2可以觸發(fā)S1(延期的狀況)。S1必須在以e2的到達(dá)為結(jié)束的計(jì)算窗口內(nèi)被提交。由此,當(dāng)e2到達(dá)時(shí),S1的計(jì)算停止,即,其計(jì)算窗口關(guān)閉。對S1的計(jì)算當(dāng)e2到達(dá)時(shí)被執(zhí)行,即,由于S1是被延期的狀況,所以其計(jì)算被延期直到e2到達(dá)?;谠趀2之前到達(dá)的e1事件而完成實(shí)際計(jì)算。
當(dāng)e2到達(dá)并且開始其過程時(shí),S1的計(jì)算結(jié)束。如果S1現(xiàn)在被檢測到,其意味著所述狀況已發(fā)生,則S1∶t1被寫到所述并行控制表中,以及,e2將暫停其處理,并且將僅在S1的過程被完成之后才恢復(fù)其處理。例如,這允許作為AMIT語言的一部分的被延期狀況的計(jì)算。
被延期狀況的例子如非(NOT)狀況。例如,假設(shè)狀況S1被定義為NOT(e1)。在所述情況下,如果e1不在e2之前到達(dá),則S1將被檢測。事件e1將如以前一樣為“帳戶余額”,狀況S1將為“平均余額”并且將被定義為報(bào)告(e1)。該狀況將計(jì)算其最大余額直到事件e2被接收到,并且其將在e2到達(dá)時(shí)被觸發(fā)。狀況S2將為“Good Day”,并且其將在如果由S1計(jì)算的平均余額大于特定量時(shí)被觸發(fā)。
圖6是總結(jié)了由圖1和2中示出的事件接收器和傳送器15執(zhí)行的主要?jiǎng)幼鞯牧鞒虉D。由此,一旦接收到事件,所述事件接收器和傳送器15就將時(shí)間戳分配給該事件,并且將所述接收到的事件以及可由此被觸發(fā)的所有狀況添加到事件并行表中的合適列。其然后根據(jù)預(yù)定的規(guī)則決定針對該事件所述事務(wù)是否可以開始。如果不可以,則所述事件接收器和傳送器15等待直到所述事件事務(wù)可以開始。如果并且當(dāng)所述事件事務(wù)開始時(shí),事件接收器和傳送器15將所述事件分派到事件處理單元13,然后從所述事件處理單元13接收所述事務(wù)處理結(jié)果。事件接收器和傳送器15然后根據(jù)預(yù)定的規(guī)則決定針對該事件所述事務(wù)是否可以被提交。如果不可以,則其丟棄所述結(jié)果并且重啟所述事務(wù)。如果可以,則其更新所述事件并行表,并且提交所述結(jié)果。應(yīng)當(dāng)指出,處理器的選擇不是本發(fā)明的一部分。任意合適的現(xiàn)有集群機(jī)制均可以被使用。例如,在基于WebSphere ApplicationServer的解決方案的情形中,WebSphere集群可以被使用,并且所述處理器將根據(jù)其負(fù)載均衡機(jī)制被選擇。
圖7是功能上更詳細(xì)示出了包括用于接收一個(gè)或更多事件的事件分派器11的事件接收器和傳送器15的框圖。事件并行控制單元12被耦合到所述事件分派器11,并且響應(yīng)于關(guān)聯(lián)于所述事件的各個(gè)時(shí)間戳,其中所述時(shí)間戳用于根據(jù)其相關(guān)聯(lián)的事件規(guī)則解決事件之間可能的時(shí)間依賴性。所述時(shí)間戳或者可以在其到達(dá)之前預(yù)先關(guān)聯(lián)于所述各個(gè)事件,或者可選地,所述時(shí)間戳可以由所述事件接收器和傳送器在其到達(dá)時(shí)分配到所述事件。所述事件分派器11包括用于注冊每個(gè)到來的事件以便維護(hù)已注冊事件的列表的注冊單元20,并且適于根據(jù)從關(guān)聯(lián)于所述事件的事件規(guī)則定義中了解的依賴性,將對于其的所有依賴性已被解決的每個(gè)事件事務(wù)分派到事件處理單元15,由此允許事件的并行執(zhí)行。所述事件并行控制單元被配置為根據(jù)所述預(yù)定的事件規(guī)則,對于每個(gè)已注冊事件解決與已注冊事件以及與還未被檢測到的已標(biāo)記狀況的可能的時(shí)間依賴性。
所述事件接收器和傳送器15還包括用于接收所述事件事務(wù)的處理結(jié)果的接收器單元21,以及被耦合到該接收器單元21的用于確定所述事件事務(wù)是否將被提交或放棄的狀態(tài)確定單元22。被耦合到所述狀態(tài)確定單元的中斷單元23響應(yīng)于指示所述事件事務(wù)將被放棄的狀態(tài),用于放棄所述事件事務(wù)。所述事件分派器11被耦合到用于將所述事件事務(wù)再次分派到處理單元的中斷單元。該處理單元可以與所述處理單元相同,或者可以是不同的處理單元。
還應(yīng)當(dāng)理解,根據(jù)本發(fā)明的系統(tǒng)可以是被適當(dāng)編程的計(jì)算機(jī)。同樣地,本發(fā)明預(yù)期了用于執(zhí)行的本發(fā)明的方法的可由計(jì)算機(jī)讀取的計(jì)算機(jī)程序。本發(fā)明還預(yù)期了有形地包括可由機(jī)器執(zhí)行的用于執(zhí)行本發(fā)明的方法的指令程序的機(jī)器可讀存儲器。
權(quán)利要求
1.一種用于調(diào)度每個(gè)具有各自的時(shí)間戳的事件事務(wù)、以用在具有預(yù)定的事件規(guī)則的事件驅(qū)動應(yīng)用中的方法,所述方法包括根據(jù)所述預(yù)定的事件規(guī)則解決事件之間可能的時(shí)間依賴性;以及確定所述事件事務(wù)何時(shí)可以被處理,由此允許所述事件事務(wù)被分派到分布式處理器進(jìn)行并行處理。
2.一種包括至少兩個(gè)用于以并行分布方式處理每個(gè)具有各自的時(shí)間戳的分布式事件事務(wù)的處理器的計(jì)算機(jī)系統(tǒng),所述系統(tǒng)包括用于使用根據(jù)權(quán)利要求1所述的方法調(diào)度事件事務(wù)的調(diào)度器。
3.根據(jù)權(quán)利要求1所述的方法,其中確定所述事件事務(wù)何時(shí)可以被處理包括注冊每個(gè)到來的事件以便維護(hù)已注冊事件的列表;對于每個(gè)已注冊事件,根據(jù)所述預(yù)定的事件規(guī)則解決已注冊事件之間以及與還未被檢測到的已標(biāo)記狀況的可能的時(shí)間依賴性;將對于其所有依賴性被解決的每個(gè)事件事務(wù)分派到事件處理單元;接收所述事件事務(wù)的處理結(jié)果;確定所述事件事務(wù)將被提交還是放棄;以及如果所述事件事務(wù)將被放棄,則放棄所述事件事務(wù)并且再次將其分派到處理單元。
4.根據(jù)權(quán)利要求3所述的方法,其中注冊每個(gè)到來的事件包括接收事件;將時(shí)間戳分配給所述事件;使用預(yù)定的規(guī)則確定可被所述接收的事件觸發(fā)的所有狀況;將所述接收的事件以及由此可被觸發(fā)的所有狀況添加到事件并行表中的合適列;根據(jù)所述預(yù)定的規(guī)則確定針對所述接收的事件由所述接收的事件產(chǎn)生的事務(wù)是否可以開始;如果針對所述接收的事件所述事務(wù)不可以開始,則等待直到所述事務(wù)可以開始;如果所述事件可以開始,則將所述事件分派到事件處理單元;從所述事件處理單元接收事務(wù)處理結(jié)果;根據(jù)所述預(yù)定的規(guī)則確定針對所述被接收的事件所述事務(wù)是否可以被提交;如果針對所述接收的事件所述事務(wù)不可以被提交,則丟棄所述處理結(jié)果并且重啟所述事務(wù);如果針對所述接收的事件所述事務(wù)可以被提交,則更新所述事件并行表并且提交所述事務(wù)。
5.根據(jù)權(quán)利要求3所述的方法,其中注冊每個(gè)到來的事件包括接收具有關(guān)聯(lián)于其的時(shí)間戳的事件;使用預(yù)定的規(guī)則確定可被所述接收的事件觸發(fā)的所有狀況;將所述接收的事件以及由此可被觸發(fā)的所有狀況添加到事件并行表中的合適列;根據(jù)所述預(yù)定的規(guī)則確定針對所述接收的事件由所述接收的事件產(chǎn)生的事務(wù)是否可以開始;如果針對所述接收的事件所述事務(wù)不可以開始,則等待直到所述事務(wù)可以開始;如果所述事務(wù)可以開始,則將所述事務(wù)分派到事件處理單元;從所述事件處理單元接收事務(wù)處理結(jié)果;根據(jù)所述預(yù)定的規(guī)則確定針對所述接收的事件所述事務(wù)是否可以被提交;如果針對所述接收的事件所述事務(wù)不可以被提交,則丟棄所述處理結(jié)果并重啟所述事務(wù);如果針對所述接收的事件所述事務(wù)可以被提交,則更新所述事件并行表并提交所述事務(wù)。
6.根據(jù)權(quán)利要求3所述的方法,其中狀況被限于發(fā)生在啟動之后開始并且具有預(yù)定的終止符的計(jì)算窗口內(nèi),其還包括將這樣的數(shù)據(jù)關(guān)聯(lián)于事件,所述數(shù)據(jù)指示由所述事件產(chǎn)生的狀況被限于發(fā)生在與所述事件并行開始或結(jié)束的計(jì)算窗口內(nèi)。
7.一種事件接收器和傳送器,包括事件分派器,用于接收一個(gè)或更多事件,并且適于根據(jù)從關(guān)聯(lián)于所述事件的事件規(guī)則定義中了解的依賴性而被耦合到各個(gè)用于并行執(zhí)行所述事件的分布式處理器;以及事件并行控制單元,其被耦合到所述事件分派器,并且響應(yīng)于關(guān)聯(lián)于所述事件的各個(gè)時(shí)間戳,用于根據(jù)所述相關(guān)聯(lián)的事件規(guī)則解決事件之間可能的時(shí)間依賴性。
8.根據(jù)權(quán)利要求7所述的事件接收器和傳送器,其中所述事件分派器包括用于注冊每個(gè)到來的事件以便維護(hù)已注冊事件列表的注冊單元,并且適于將對于其所有依賴性被解決的每個(gè)事件事務(wù)分派到事件處理單元;所述事件并行控制單元被配置為根據(jù)所述預(yù)定的事件規(guī)則,對于每個(gè)已注冊事件解決與已注冊事件以及與還未被檢測到的已標(biāo)記狀況的可能的時(shí)間依賴性;所述事件接收器和傳送器還包括用于接收所述事件事務(wù)的處理結(jié)果的接收器單元;被耦合到所述接收器單元的用于確定所述事件事務(wù)將被提交還是被放棄的狀態(tài)確定單元;以及中斷單元,其被耦合到所述狀態(tài)確定單元,并且響應(yīng)于指示所述事件事務(wù)將被放棄的狀態(tài)用于放棄所述事件事務(wù);所述事件分派器被耦合到所述中斷單元用于再次將所述事件分配到處理器單元。
9.一種可由機(jī)器讀取的程序存儲設(shè)備,其有形地包括了可由機(jī)器執(zhí)行的用于執(zhí)行下述方法步驟的指令程序,所述方法步驟用于調(diào)度每個(gè)具有各自的時(shí)間戳的事件事務(wù),以用在具有預(yù)定的事件規(guī)則的事件驅(qū)動應(yīng)用中,所述方法包括根據(jù)所述預(yù)定的事件規(guī)則解決事件之間可能的時(shí)間依賴性;以及確定所述事件事務(wù)何時(shí)可以被處理,由此允許所述事件事務(wù)被分派到分布式處理器進(jìn)行并行處理。
10.一種計(jì)算機(jī)程序產(chǎn)品,包括具有其中包括計(jì)算機(jī)可讀程序代碼的計(jì)算機(jī)可用媒體,所述計(jì)算機(jī)可讀程序代碼用于調(diào)度每個(gè)具有各自的時(shí)間戳的事件事務(wù),以用在具有預(yù)定的事件規(guī)則的事件驅(qū)動應(yīng)用中,所述計(jì)算機(jī)程序產(chǎn)品包括用于使得計(jì)算機(jī)根據(jù)所述預(yù)定的事件規(guī)則解決事件之間可能的時(shí)間依賴性的計(jì)算機(jī)可讀程序代碼;以及用于使得計(jì)算機(jī)確定所述事件事務(wù)何時(shí)可以被處理、由此允許所述事件事務(wù)被分派到分布式處理器進(jìn)行并行處理的計(jì)算機(jī)可讀程序代碼。
11.根據(jù)權(quán)利要求9所述的程序存儲設(shè)備,其中確定所述事件事務(wù)何時(shí)可以被處理包括注冊每個(gè)到來的事件以便維護(hù)已注冊事件的列表;對于每個(gè)已注冊事件,根據(jù)所述預(yù)定的事件規(guī)則解決已注冊事件之間以及與還未被檢測到的已標(biāo)記狀況的可能的時(shí)間依賴性;將對于其所有依賴性被解決的每個(gè)事件事務(wù)分派到事件處理單元;接收所述事件事務(wù)的處理結(jié)果;確定所述事件事務(wù)將被提交還是放棄;以及,如果所述事件事務(wù)將被放棄,則放棄所述事件事務(wù)并且再次將其分派到處理單元。
12.根據(jù)權(quán)利要求10所述的計(jì)算機(jī)程序產(chǎn)品,其中用于使得計(jì)算機(jī)確定所述事件事務(wù)何時(shí)可以被處理的計(jì)算機(jī)可讀程序代碼包括用于使得計(jì)算機(jī)注冊每個(gè)到來的事件以便維護(hù)已注冊事件的列表的計(jì)算機(jī)可讀程序代碼;用于使得計(jì)算機(jī)對于每個(gè)已注冊事件根據(jù)所述預(yù)定的事件規(guī)則解決已注冊事件之間以及與還未被檢測的已標(biāo)記狀況的可能的時(shí)間依賴性的計(jì)算機(jī)可讀程序代碼;用于使得計(jì)算機(jī)將對于其所有依賴性被解決的每個(gè)事件事務(wù)分派到事件處理單元的計(jì)算機(jī)可讀程序代碼;用于使得計(jì)算機(jī)接收所述事件事務(wù)的處理結(jié)果的計(jì)算機(jī)可讀程序代碼;用于使得計(jì)算機(jī)確定所述事件事務(wù)將被提交還是放棄的計(jì)算機(jī)可讀程序代碼;以及響應(yīng)于所述事件事務(wù)需要被放棄、用于使得計(jì)算機(jī)放棄所述事件事務(wù)并且再次將其分派到處理單元的計(jì)算機(jī)可讀程序代碼。
全文摘要
一種用于調(diào)度每個(gè)具有各自的時(shí)間戳的事件事務(wù)、以用在事件驅(qū)動應(yīng)用中的方法和系統(tǒng)。事件之間可能的時(shí)間依賴性被根據(jù)關(guān)聯(lián)于所述事件的預(yù)定的事件規(guī)則解決,以便允許確定所述事件事務(wù)何時(shí)可以被處理。這允許所述事件事務(wù)被分派到分布式處理器進(jìn)行并行處理。
文檔編號G06F9/46GK1989490SQ200580025051
公開日2007年6月27日 申請日期2005年6月27日 優(yōu)先權(quán)日2004年7月27日
發(fā)明者D·博澤爾, V·謝爾比納, B·舒爾曼 申請人:國際商業(yè)機(jī)器公司