數(shù)據(jù)處理管理方法及信息處理設(shè)備的制作方法
【專利摘要】本申請(qǐng)涉及數(shù)據(jù)處理管理方法及信息處理設(shè)備。第一機(jī)器和第二機(jī)器執(zhí)行多個(gè)分布式處理。存儲(chǔ)單元存儲(chǔ)有由第一機(jī)器執(zhí)行的處理的進(jìn)度信息。計(jì)算單元在接收到指示將處理重新分配給第二機(jī)器的重新分配指令時(shí),將進(jìn)度信息傳送給第二機(jī)器。計(jì)算單元當(dāng)在傳送進(jìn)度信息期間接收到待在處理中使用的數(shù)據(jù)時(shí),將該數(shù)據(jù)以及進(jìn)度信息一起傳送給第二機(jī)器。第二機(jī)器在接收到進(jìn)度信息和數(shù)據(jù)時(shí),使用所述進(jìn)度信息和數(shù)據(jù)來執(zhí)行從第一機(jī)器重新分配的處理。
【專利說明】數(shù)據(jù)處理管理方法及信息處理設(shè)備
【技術(shù)領(lǐng)域】
[0001]本文中討論的實(shí)施方式涉及數(shù)據(jù)處理管理方法和信息處理設(shè)備。
【背景技術(shù)】
[0002]可以通過包括多個(gè)機(jī)器的分布式處理系統(tǒng)來處理數(shù)據(jù)。這樣的機(jī)器可以包括物理計(jì)算機(jī)(有時(shí)被稱為物理機(jī)或物理主機(jī)),或者在物理機(jī)上操作的虛擬計(jì)算機(jī)(有時(shí)被稱為虛擬機(jī)或邏輯主機(jī))。例如,可以使用分布式處理系統(tǒng)來進(jìn)行復(fù)雜事件處理(CEP)。多個(gè)機(jī)器并行地執(zhí)行由各種設(shè)備發(fā)出的多個(gè)事件,從而高速地處理所述多個(gè)事件。
[0003]在分布式處理系統(tǒng)中,為了平衡機(jī)器之間的處理負(fù)荷,有時(shí)存在改變對(duì)各個(gè)機(jī)器的處理分配的情況。因此,提出了用于改變處理分配的各種技術(shù)。例如,所提出的一種技術(shù)涉及將由第一計(jì)算機(jī)執(zhí)行的處理遷移到第二計(jì)算機(jī),并且涉及在將所述處理的副本傳送給第二計(jì)算機(jī)的同時(shí)通過通過由第一計(jì)算機(jī)繼續(xù)執(zhí)行處理來縮短遷移期間的處理停止時(shí)間。
[0004]所提出的另一技術(shù)涉及將運(yùn)行在處理器上的任務(wù)遷移到另一處理器,并且涉及源處理器執(zhí)行傳送任務(wù)以將遷移目標(biāo)任務(wù)傳送到目標(biāo)處理器,并且當(dāng)在傳送期間接收到遷移目標(biāo)任務(wù)的中斷請(qǐng)求時(shí),遷移任務(wù)開始中斷處理。
[0005]此外,所提出的另一技術(shù)涉及:當(dāng)檢測到處理負(fù)荷超過預(yù)定閾值的虛擬機(jī)時(shí),基于復(fù)雜事件處理之間的關(guān)聯(lián)程度將所述復(fù)雜事件處理分發(fā)配給多個(gè)虛擬機(jī)。
[0006]日本已公開專利公布N0.2004-78465
[0007]日本已公開專利公布N0.2010-272076
[0008]日本已公開專利公布N0.2012-79242
[0009]當(dāng)改變數(shù)據(jù)處理的分配時(shí),有時(shí)存在希望將在改變前處理的進(jìn)度傳送給改變后的處理的情況。例如,在針對(duì)多個(gè)事件執(zhí)行處理的情況下,如果一些事件已發(fā)生,則可能希望已發(fā)生的那些事件的狀態(tài)在改變處理的分配后依然保持。鑒于此,考慮到由最初分配的第一機(jī)器向新分配的第二機(jī)器提供關(guān)于處理的進(jìn)度的報(bào)告,從而使得第二機(jī)器在中間接管所述處理。然而,在進(jìn)度信息從第一機(jī)器到第二機(jī)器的傳送期間,待在被重新分配給第二機(jī)器的處理中使用的數(shù)據(jù)可能被輸入到第一機(jī)器。在該情況下的數(shù)據(jù)處理成為問題。
[0010]假設(shè),例如,第一機(jī)器如在上述提出的技術(shù)中那樣繼續(xù)處理輸入數(shù)據(jù)。然而,如果數(shù)據(jù)不斷地發(fā)送到第一機(jī)器,則第一機(jī)器不能夠結(jié)束處理,因此第一機(jī)器可能花費(fèi)太長的時(shí)間而使得第二機(jī)器不能夠開始處理。假設(shè),另一方面,第一機(jī)器停止處理,并且在進(jìn)度信息的傳送完成后將輸入到第一機(jī)器的數(shù)據(jù)傳送給第二機(jī)器,從而使得第二機(jī)器繼續(xù)執(zhí)行處理。在該情況下,等待進(jìn)度信息的傳送完成,然后再等待將數(shù)據(jù)傳送到第二機(jī)器可能使數(shù)據(jù)到達(dá)第二機(jī)器延遲,因此使在第二機(jī)器處繼續(xù)執(zhí)行處理延遲。
【發(fā)明內(nèi)容】
[0011]實(shí)施方式的一個(gè)方面旨在提供一種能夠縮短在新分配的目標(biāo)處繼續(xù)執(zhí)行處理的延遲的數(shù)據(jù)處理管理方法和信息處理設(shè)備。
[0012]根據(jù)一個(gè)方面,提供了一種在包括第一計(jì)算機(jī)和第二計(jì)算機(jī)的系統(tǒng)中執(zhí)行的數(shù)據(jù)處理管理方法。數(shù)據(jù)處理管理方法包括:第一計(jì)算機(jī)當(dāng)接收到將由第一計(jì)算機(jī)執(zhí)行的處理重新分配給第二計(jì)算機(jī)的指令時(shí),將該處理的進(jìn)度信息傳送給第二計(jì)算機(jī);以及第一計(jì)算機(jī)當(dāng)在傳送進(jìn)度信息期間接收到與處理相關(guān)聯(lián)的數(shù)據(jù)時(shí),將該數(shù)據(jù)傳送給第二計(jì)算機(jī)。
【專利附圖】
【附圖說明】
[0013]圖1示出了根據(jù)第一實(shí)施方式的分布式處理系統(tǒng);
[0014]圖2示出了根據(jù)第二實(shí)施方式的分布式處理系統(tǒng);
[0015]圖3示出了節(jié)點(diǎn)的硬件配置的示例;
[0016]圖4示出了改變查詢分配的示例;
[0017]圖5示出了分布式處理系統(tǒng)的軟件配置的示例;
[0018]圖6出了分布式處理系統(tǒng)的軟件配置的示例(續(xù)接圖5);
[0019]圖7示出了事件的示例;
[0020]圖8示出了查詢的示例;
[0021]圖9示出了查詢狀態(tài)的示例;
[0022]圖10示出了查詢配置表的第一示例;
[0023]圖11示出了查詢配置表的第二示例;
[0024]圖12示出了查詢配置表的第三示例;
[0025]圖13示出了傳送數(shù)據(jù)管理結(jié)構(gòu)的示例;
[0026]圖14示出了傳送列表的示例;
[0027]圖15是示出查詢狀態(tài)傳送管理的示例的流程圖;
[0028]圖16是示出事件接收管理(在最初分配的節(jié)點(diǎn)處)的示例的流程圖;
[0029]圖17是示出查詢狀態(tài)接收管理的示例的流程圖;
[0030]圖18是示出事件接收管理(在新分配的節(jié)點(diǎn)處)的示例的流程圖;
[0031]圖19是示出事件傳送管理的示例的流程圖;
[0032]圖20示出了查詢狀態(tài)傳送示例的第一部分;
[0033]圖21示出了查詢狀態(tài)傳送示例的第二部分;
[0034]圖22是示出查詢重新分配的第一示例的時(shí)序圖;
[0035]圖23是示出比較性查詢重新分配的第一示例的時(shí)序圖;
[0036]圖24是示出查詢重新分配的第二示例的時(shí)序圖;
[0037]圖25是示出比較性查詢重新分配的第二示例的時(shí)序圖;以及
[0038]圖26示出了分布式處理系統(tǒng)的另一示例。
【具體實(shí)施方式】
[0039]下文將參照附圖描述若干實(shí)施方式,其中貫穿全文相同的附圖標(biāo)記指代相同的元件。
[0040](a)第一實(shí)施方式
[0041]圖1不出了根據(jù)第一實(shí)施方式的分布式處理系統(tǒng)。第一實(shí)施方式的分布式處理系統(tǒng)具有包括機(jī)器I和機(jī)器2的多個(gè)機(jī)器。多個(gè)機(jī)器連接到網(wǎng)絡(luò),從而彼此能夠進(jìn)行通信。在該分布式處理系統(tǒng)中,多個(gè)處理被分發(fā)給多個(gè)機(jī)器,并且由所述多個(gè)機(jī)器執(zhí)行。
[0042]此處假設(shè)第一實(shí)施方式的機(jī)器I和機(jī)器2是物理機(jī)。然而,注意到機(jī)器I和機(jī)器2可以是虛擬機(jī)。例如,機(jī)器I和機(jī)器2可以是運(yùn)行在不同物理機(jī)上的虛擬機(jī),或者可以是運(yùn)行在單個(gè)物理機(jī)(配備有存儲(chǔ)裝置、處理單元等的計(jì)算機(jī)系統(tǒng))上的虛擬機(jī)。
[0043]機(jī)器I包括存儲(chǔ)單元Ia和計(jì)算單元lb。機(jī)器2包括存儲(chǔ)單元2a和計(jì)算單元2b。存儲(chǔ)單元la/2a可以是易失性存儲(chǔ)裝置,例如隨機(jī)存取存儲(chǔ)器(RAM);或者非易失性存儲(chǔ)裝置,例如硬盤驅(qū)動(dòng)器(HDD)和閃速存儲(chǔ)器。計(jì)算單元lb/2b可以包括例如中央處理單元(CPU)、數(shù)字信號(hào)處理器(DSP)、專用集成電路(ASIC),以及現(xiàn)場可編程門陣列(FPGA)。計(jì)算單元lb/2b可以是執(zhí)行程序的處理器。此處術(shù)語“處理器”包括具有多個(gè)處理器(即,多處理器)的計(jì)算機(jī)系統(tǒng)。
[0044]存儲(chǔ)單元Ia存儲(chǔ)分配給機(jī)器I的每個(gè)處理(process)的進(jìn)度信息。進(jìn)度信息3是處理之一的進(jìn)度信息。例如,如果第一實(shí)施方式的分布式處理系統(tǒng)是執(zhí)行用于多個(gè)輸入數(shù)據(jù)集的預(yù)定處理的系統(tǒng),則存儲(chǔ)單元Ia存儲(chǔ)指示一些輸入數(shù)據(jù)集已經(jīng)到達(dá)的信息,作為進(jìn)度信息3。執(zhí)行CEP的系統(tǒng)是這樣的系統(tǒng)的示例。在該情況下,存儲(chǔ)單元Ia將指示一系列事件中的一些事件已經(jīng)到達(dá)的信息存儲(chǔ)作為進(jìn)度信息3。
[0045]計(jì)算單元Ib執(zhí)行分配給機(jī)器I的多個(gè)處理。計(jì)算單元Ib將每個(gè)處理的執(zhí)行狀態(tài)記錄作為處理的進(jìn)度信息,并且將進(jìn)度信息存儲(chǔ)在存儲(chǔ)單元Ia中。例如,計(jì)算單元Ib針對(duì)多個(gè)輸入數(shù)據(jù)集中的每個(gè)輸入數(shù)據(jù)集執(zhí)行該過程。具體地,計(jì)算單元Ib每當(dāng)接收多個(gè)輸入數(shù)據(jù)集之一時(shí),可以將指示輸入數(shù)據(jù)集已經(jīng)到達(dá)(即,輸入數(shù)據(jù)集已被處理)的信息記錄在進(jìn)度信息3中。
[0046]計(jì)算單元Ib在接收到指令“將由機(jī)器I執(zhí)行的處理重新分配給機(jī)器2” (重新分配指令4)時(shí),將與由該指令指定的處理對(duì)應(yīng)的進(jìn)度信息3傳送給機(jī)器2。例如,計(jì)算單元Ib可以從對(duì)處理的分配進(jìn)行管理的預(yù)定設(shè)備接收重新分配指令4。可替代地,計(jì)算單元Ib可以接收響應(yīng)于用戶在連接到機(jī)器I的預(yù)定輸入裝置上進(jìn)行的輸入操作而發(fā)出的重新分配指令4。
[0047]此處注意,用于執(zhí)行各個(gè)處理的程序被預(yù)存儲(chǔ)在例如存儲(chǔ)單元la/2a中。例如,當(dāng)處理被分配給其自身的機(jī)器時(shí),計(jì)算單元lb/2b將對(duì)應(yīng)于該處理的、存儲(chǔ)在HDD等中的程序存儲(chǔ)在RAM中,然后執(zhí)行該程序,從而使處理處于等待數(shù)據(jù)輸入的狀態(tài)。
[0048]當(dāng)在將重新分配的處理的進(jìn)度信息3傳送給機(jī)器2期間接收到待在該處理中使用的數(shù)據(jù)5時(shí),計(jì)算單元Ib通過將數(shù)據(jù)5添加到進(jìn)度信息3來將數(shù)據(jù)5傳送給機(jī)器2。信息傳送的時(shí)間段包括用于將信息發(fā)送到網(wǎng)絡(luò)上的準(zhǔn)備時(shí)間段(用于傳送準(zhǔn)備的時(shí)間段)。例如準(zhǔn)備時(shí)間段包括用于序列化(serializat1n)、緩沖等的時(shí)間段。序列化是將進(jìn)度信息3變換為在網(wǎng)絡(luò)中使用的傳輸格式的過程。緩沖是將待傳送的信息累積到預(yù)定量的過程。在將進(jìn)度信息3從機(jī)器I傳送到機(jī)器2的期間,對(duì)應(yīng)于進(jìn)度信息3的處理的執(zhí)行被中斷。
[0049]例如,在接收到重新分配指令4時(shí),計(jì)算單元Ib對(duì)存儲(chǔ)在存儲(chǔ)單元Ia中的進(jìn)度信息3進(jìn)行序列化和緩沖,并且生成包括進(jìn)度信息3的傳送數(shù)據(jù)。當(dāng)在傳送數(shù)據(jù)的生成期間接收到數(shù)據(jù)5時(shí),計(jì)算單元Ib將數(shù)據(jù)5包括在傳送數(shù)據(jù)中,從而生成傳送數(shù)據(jù)6。傳送數(shù)據(jù)6可以包括與進(jìn)度信息3和數(shù)據(jù)5不同的信息。計(jì)算單元Ib將傳送數(shù)據(jù)6傳送給機(jī)器2。
[0050]在接收傳送數(shù)據(jù)6時(shí),機(jī)器2從傳送數(shù)據(jù)6獲取進(jìn)度信息3和數(shù)據(jù)5。機(jī)器2使用進(jìn)度信息3和數(shù)據(jù)5,繼續(xù)執(zhí)行從機(jī)器I重新分配給機(jī)器2的處理。
[0051]根據(jù)第一實(shí)施方式的分布式處理系統(tǒng),機(jī)器I接收重新分配指令4以將由機(jī)器I執(zhí)行的處理重新分配給機(jī)器2 (步驟SI)。在將處理的進(jìn)度信息3傳送給機(jī)器2期間,機(jī)器I接收待在該處理中使用的數(shù)據(jù)5 (步驟S2)。然后,機(jī)器I將數(shù)據(jù)5添加到進(jìn)度信息3,然后將數(shù)據(jù)5傳送到機(jī)器2 (步驟S3)。
[0052]此處,可以縮短在新分配的目標(biāo)(上述示例中的機(jī)器2)處繼續(xù)執(zhí)行處理的延遲。在這方面,例如,使得機(jī)器I在進(jìn)度信息3的傳送期間能夠繼續(xù)執(zhí)行重新分配處理被認(rèn)為是可接受的。然而,有時(shí)存在包括數(shù)據(jù)5的、與處理關(guān)聯(lián)的多個(gè)數(shù)據(jù)集不斷被輸入到機(jī)器I的情況。在該情況下,機(jī)器I不能夠結(jié)束處理,因此將處理重新分配到機(jī)器2會(huì)花費(fèi)很長的時(shí)間來完成。此外,盡管處理的重新分配意在減輕機(jī)器I的高處理負(fù)荷,但是機(jī)器I的負(fù)荷不斷地加重。而且,這樣的情況在機(jī)器I的處理負(fù)荷更高時(shí)更可能出現(xiàn)。此外,當(dāng)機(jī)器I繼續(xù)執(zhí)行處理時(shí),在進(jìn)度信息3中產(chǎn)生由于更新而造成的差異。因此,機(jī)器I還必須將進(jìn)度信息3中的差異繼續(xù)提供給機(jī)器2,從而耗用更多的網(wǎng)絡(luò)帶寬。
[0053]另一方面,以下情形是可接受的:在機(jī)器I處中斷重新分配的處理,并且在進(jìn)度信息3的傳送完成時(shí)將數(shù)據(jù)5傳送給機(jī)器2,從而使得機(jī)器2繼續(xù)執(zhí)行該處理。然而,由于在傳送端執(zhí)行的過程(例如序列化和緩沖)以及在接收端執(zhí)行的過程(例如反序列化),導(dǎo)致信息傳送花費(fèi)很長時(shí)間。因此,等待進(jìn)度信息3的傳送完成之后,接著再等待傳送數(shù)據(jù)5可能使數(shù)據(jù)5到達(dá)機(jī)器2延遲,因此使在機(jī)器2處繼續(xù)執(zhí)行處理延遲。
[0054]鑒于上述問題,如果在將重新分配的處理的進(jìn)度信息3傳送到機(jī)器2期間接收待用于該處理的數(shù)據(jù)5,則機(jī)器I通過將數(shù)據(jù)5添加到進(jìn)度信息3來將數(shù)據(jù)5傳送給機(jī)器2。例如,即使在包括數(shù)據(jù)5的多個(gè)數(shù)據(jù)集不斷輸入到機(jī)器I的情況下,機(jī)器I能夠?qū)⑺鰯?shù)據(jù)集(或數(shù)據(jù)集中的一些數(shù)據(jù)集)以及進(jìn)度信息3提供給機(jī)器2。由于能夠獲取數(shù)據(jù)5與進(jìn)度消息3,所以機(jī)器2利用進(jìn)度信息3和數(shù)據(jù)5立刻開始執(zhí)行被重新分配的處理。此外,由于處理在機(jī)器I處被中止,因此機(jī)器I不需要繼續(xù)將進(jìn)度信息3提供給機(jī)器2。因此,與在機(jī)器I處繼續(xù)執(zhí)行處理的情況相比,機(jī)器I的處理負(fù)荷迅速降低,并且也降低了網(wǎng)絡(luò)帶寬的使用。
[0055]此外,由于數(shù)據(jù)5以及進(jìn)度信息3 —起被提供給機(jī)器2,所以不需要等待進(jìn)度信息3的傳送完成之后,接著再等待傳送數(shù)據(jù)5。因此,縮短了數(shù)據(jù)5到達(dá)機(jī)器2的時(shí)間,這縮短了在機(jī)器2處繼續(xù)執(zhí)行被重新分配的處理的延遲。
[0056](b)第二實(shí)施方式
[0057]圖2示出了根據(jù)第二實(shí)施方式的分布式處理系統(tǒng)。第二實(shí)施方式的分布式處理系統(tǒng)包括節(jié)點(diǎn)100、節(jié)點(diǎn)200、節(jié)點(diǎn)300,以及管理節(jié)點(diǎn)400。節(jié)點(diǎn)100、節(jié)點(diǎn)200、節(jié)點(diǎn)300,以及管理節(jié)點(diǎn)400連接到網(wǎng)絡(luò)10,例如為局域網(wǎng)(LAN)。
[0058]網(wǎng)絡(luò)10連接到可以是廣泛的區(qū)域網(wǎng)絡(luò)(例如廣域網(wǎng)(WAN))和因特網(wǎng)的網(wǎng)絡(luò)20。下列各項(xiàng)無線地或通過有線的方式連接到網(wǎng)絡(luò)20:智慧城市21、物流傳感器22、氣象衛(wèi)星23、移動(dòng)裝置24,以及智能傳感器25。發(fā)出事件的各種其他類型的設(shè)備可以連接到網(wǎng)絡(luò)20。第二實(shí)施方式的分布式處理系統(tǒng)使用節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300來執(zhí)行CEP。
[0059]節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300是用于處理事件的服務(wù)器計(jì)算機(jī),并且并行地處理由智慧城市21、物流傳感器22、氣象衛(wèi)星23、移動(dòng)裝置24,及智能傳感器25等發(fā)出的各類事件。節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300可以對(duì)從多個(gè)事件獲得的處理結(jié)果(新事件)執(zhí)行預(yù)定處理。
[0060]節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300能夠使用CEP來實(shí)現(xiàn)如下功能。例如,節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300基于由通過網(wǎng)絡(luò)20連接的智慧城市21和智能傳感器25獲取的功耗信息來控制智慧城市21的節(jié)電。此外,節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300基于從連接到網(wǎng)絡(luò)20的各種類型的設(shè)備獲取的交通情況信息來為移動(dòng)裝置24提供適用于例如移動(dòng)裝置24的用戶以及他的/她的車的情況的導(dǎo)航幫助。節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300還基于從氣象衛(wèi)星23和雷達(dá)獲取的事件來為移動(dòng)裝置24提供天氣預(yù)報(bào)信息。此外,節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300提供關(guān)于是否存在對(duì)房子的入侵的報(bào)告,以及關(guān)于家庭成員(例如,兒童和老人)的所在之處的報(bào)告。節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300能夠?yàn)橛脩籼峁└鞣N其他類型的信息。
[0061]注意,由節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300響應(yīng)于事件執(zhí)行的處理在下文中被稱為查詢(query)。預(yù)先向節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300提供描述查詢的內(nèi)容的程序。程序可以被稱為描述與事件對(duì)應(yīng)的處理的規(guī)則或規(guī)則信息。在下面的描述中,有時(shí)使用術(shù)語“每個(gè)節(jié)點(diǎn)”來指代節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300中之一。
[0062]管理節(jié)點(diǎn)400是用于指定負(fù)責(zé)每個(gè)查詢的事件處理的節(jié)點(diǎn)(即,將每個(gè)查詢分配給節(jié)點(diǎn))的服務(wù)器計(jì)算機(jī)。例如,管理節(jié)點(diǎn)400橫跨100、節(jié)點(diǎn)200及節(jié)點(diǎn)300分發(fā)處理負(fù)荷。管理節(jié)點(diǎn)400根據(jù)各節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300的處理負(fù)荷對(duì)查詢分配進(jìn)行改變,從而平衡節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300之間的處理負(fù)荷。
[0063]圖3示出了節(jié)點(diǎn)的硬件配置的示例。節(jié)點(diǎn)100包括處理器101、RAM102、HDD 103、通信單元104、圖像信號(hào)處理單元105、輸入信號(hào)處理單元106、磁盤驅(qū)動(dòng)器107,以及裝置連接單元108。各個(gè)單元連接到節(jié)點(diǎn)100的總線。節(jié)點(diǎn)200、節(jié)點(diǎn)300和管理節(jié)點(diǎn)400中的每個(gè)可以設(shè)置有與節(jié)點(diǎn)100相同的硬件單元。
[0064]處理器101控制節(jié)點(diǎn)100的信息處理。處理器101可以是多處理器。處理器101是例如CPU、DSP、ASIC、FPGA或前述兩個(gè)或更多個(gè)的任何組合。
[0065]RAM 102是節(jié)點(diǎn)100的主存儲(chǔ)裝置。RAM 102臨時(shí)存儲(chǔ)待由處理器101執(zhí)行的操作系統(tǒng)(OS)程序和應(yīng)用程序的至少一部分。RAM 102存儲(chǔ)有待由處理器101用于其處理的各種類型的數(shù)據(jù)。
[0066]HDD 103用作為節(jié)點(diǎn)100的次級(jí)存儲(chǔ)裝置,并且將數(shù)據(jù)磁性地寫到內(nèi)置磁盤,并且從所述盤磁性地讀取數(shù)據(jù)。HDD 103存儲(chǔ)有OS程序、應(yīng)用程序及各種類型的數(shù)據(jù)。注意,節(jié)點(diǎn)100可以配備有不同類型的次級(jí)存儲(chǔ)裝置,例如閃速存儲(chǔ)器和固態(tài)驅(qū)動(dòng)器(SSD),或者可以配置有兩個(gè)或更多個(gè)次級(jí)存儲(chǔ)裝置。
[0067]通信單元104是經(jīng)由網(wǎng)絡(luò)10與其他計(jì)算機(jī)進(jìn)行通信的接口。通信單元104可以是有線接口或無線接口。
[0068]圖像信號(hào)處理單元105根據(jù)來自處理器101的指令將圖像輸出到連接至節(jié)點(diǎn)100的顯示器11。例如將陰極射線管(CRT)顯示器或液晶顯示器可以用作為監(jiān)測器11。
[0069]輸入信號(hào)處理單元106從連接到節(jié)點(diǎn)100的輸入裝置12獲取輸入信號(hào),并且將信號(hào)輸出給處理器101。例如指示裝置(例如鼠標(biāo)和觸摸面板或鍵盤)可以用作為輸入裝置12。
[0070]磁盤驅(qū)動(dòng)器107是使用例如激光來讀取記錄在光盤13上的程序和數(shù)據(jù)的驅(qū)動(dòng)單元。光盤13的示例包括數(shù)字多功能光盤(DVD)、DVD-RAM、致密盤只讀存儲(chǔ)器(⑶-ROM)、可記錄⑶(⑶-R),以及可重寫⑶(⑶-RW)。磁盤驅(qū)動(dòng)器107根據(jù)來自處理器101的指令將從光盤13讀取的程序和數(shù)據(jù)存儲(chǔ)在RAM 102或HDD 103中。
[0071]裝置連接單元108是用于將外圍設(shè)備連接到節(jié)點(diǎn)100的通信接口??梢岳鐚⒋鎯?chǔ)裝置14和讀/寫器15連接到裝置連接單元108。存儲(chǔ)裝置14是具有與裝置連接單元108通信的功能的存儲(chǔ)介質(zhì)。讀/寫器15是用于將數(shù)據(jù)寫到作為卡類型存儲(chǔ)介質(zhì)的存儲(chǔ)卡16和從存儲(chǔ)卡16讀取數(shù)據(jù)的裝置。裝置連接單元108例如根據(jù)來自處理器101的指令將從存儲(chǔ)裝置14或存儲(chǔ)卡16讀取的程序和數(shù)據(jù)存儲(chǔ)在RAM 102或HDD 103中。
[0072]圖4示出了查詢分配的變化的示例。節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300分別包括CEP引擎E1、CEP引擎E2和CEP引擎E3。CEP引擎E1、CEP引擎E2和CEP引擎E3執(zhí)行CEP。例如,CEP弓丨擎E1、CEP引擎E2和CEP引擎E3中的每個(gè)CEP引擎由相應(yīng)節(jié)點(diǎn)上執(zhí)行存儲(chǔ)在該節(jié)點(diǎn)的RAM中的程序的處理器來實(shí)現(xiàn)??商娲兀珻EP引擎El、CEP引擎E2和CEP引擎E3中的每個(gè)CEP引擎可以由設(shè)置在相應(yīng)節(jié)點(diǎn)中的專用硬件實(shí)現(xiàn)。
[0073]例如,與被分配給節(jié)點(diǎn)100的查詢對(duì)應(yīng)的事件被輸入到CEP引擎El。CEP引擎El生成新事件,作為查詢的結(jié)果,并且輸出該新事件。輸出事件被傳送到連接至網(wǎng)絡(luò)20的各種類型的不同的節(jié)點(diǎn)或設(shè)備。此處,CEP引擎El使得不同的節(jié)點(diǎn)執(zhí)行不同的事件處理,或控制連接到網(wǎng)絡(luò)20的設(shè)備。CEP引擎E2和CEP引擎E3以與CEP引擎El相同的方式操作。
[0074]管理節(jié)點(diǎn)400監(jiān)測節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300的處理負(fù)荷。例如假設(shè)節(jié)點(diǎn)200的處理負(fù)荷高于節(jié)點(diǎn)100的處理負(fù)荷,并且節(jié)點(diǎn)300的處理負(fù)荷低于節(jié)點(diǎn)100的處理負(fù)荷。在該情況下,管理節(jié)點(diǎn)400確定將已分配給節(jié)點(diǎn)200的查詢重新分配給節(jié)點(diǎn)300。這降低了節(jié)點(diǎn)200的處理負(fù)荷,并且也平衡了節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300之間的處理負(fù)荷。當(dāng)節(jié)點(diǎn)300的處理負(fù)荷相對(duì)增加而節(jié)點(diǎn)200的處理負(fù)荷相對(duì)減小時(shí),管理節(jié)點(diǎn)400可以確定將已分配給節(jié)點(diǎn)300的查詢重新分配給節(jié)點(diǎn)200。
[0075]管理節(jié)點(diǎn)400向節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300發(fā)出所確定的分配改變的指令。節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300中的每個(gè)節(jié)點(diǎn)根據(jù)指令來改變查詢分配。例如,在查詢從節(jié)點(diǎn)200被重新分配給節(jié)點(diǎn)300的情況下,節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300將與負(fù)責(zé)查詢的節(jié)點(diǎn)有關(guān)的信息更新為節(jié)點(diǎn)300。因此,第二實(shí)施方式提供了這樣的可擴(kuò)展系統(tǒng)。例如,第二實(shí)施方式使得查詢分配能夠靈活地響應(yīng)于節(jié)點(diǎn)的添加或刪除。
[0076]每個(gè)查詢具有與多個(gè)事件的到達(dá)情況有關(guān)的狀態(tài)(查詢狀態(tài))。根據(jù)第二實(shí)施方式,在查詢分配改變前后保持查詢狀態(tài)。具體地,最初分配的節(jié)點(diǎn)為新分配的節(jié)點(diǎn)提供重新分配的查詢的查詢狀態(tài),從而將查詢的執(zhí)行傳遞給新分配的節(jié)點(diǎn)。此處注意,查詢狀態(tài)是第一實(shí)施方式的進(jìn)度信息的示例。
[0077]圖5示出了分布式處理系統(tǒng)的軟件配置的示例。節(jié)點(diǎn)100包括查詢存儲(chǔ)單元110、管理信息存儲(chǔ)單元120、查詢執(zhí)行管理單元130、查詢狀態(tài)傳送管理單元140、查詢狀態(tài)接收管理單元150、事件傳送管理單元160、事件接收管理單元170,以及通信單元180??梢允褂肦AM 102或HDD103的存儲(chǔ)區(qū)域的一部分來實(shí)現(xiàn)查詢存儲(chǔ)單元110和管理信息存儲(chǔ)單元120。可以將查詢執(zhí)行管理單元130、查詢狀態(tài)傳送管理單元140、查詢狀態(tài)接收管理單元150、事件傳送管理單元160、事件接收管理單元170,及通信單元180實(shí)現(xiàn)為由處理器101執(zhí)行的軟件的模塊。可替代地,各個(gè)單元可以是CEP引擎El的功能的一部分(同樣適用于節(jié)點(diǎn)200和節(jié)點(diǎn)300)。
[0078]查詢存儲(chǔ)單元110存儲(chǔ)查詢及其查詢狀態(tài)。查詢存儲(chǔ)單元110預(yù)存儲(chǔ)要在分布式處理系統(tǒng)中使用的所有查詢。查詢存儲(chǔ)單元110也存儲(chǔ)每個(gè)查詢的當(dāng)前查詢狀態(tài)。查詢存儲(chǔ)單元110預(yù)存儲(chǔ)與被包括在各個(gè)事件中的流名稱和用于處理事件的查詢的標(biāo)識(shí)信息(查詢名稱)之間的對(duì)應(yīng)有關(guān)的信息。
[0079]管理信息存儲(chǔ)單元120存儲(chǔ)查詢配置表和傳送列表。查詢配置表表示每個(gè)節(jié)點(diǎn)的查詢分配,并且也指示查詢與每個(gè)查詢的當(dāng)前查詢狀態(tài)之間的對(duì)應(yīng)。傳送列表是分別存儲(chǔ)有待傳送的數(shù)據(jù)的容器。為每個(gè)目標(biāo)準(zhǔn)備一個(gè)傳送列表。
[0080]查詢執(zhí)行管理單元130管理與輸入事件對(duì)應(yīng)的查詢的執(zhí)行。在執(zhí)行查詢的情況下,查詢執(zhí)行管理單元130更新存儲(chǔ)在查詢存儲(chǔ)單元110中的查詢的查詢狀態(tài)。
[0081]查詢狀態(tài)傳送管理單元140從管理節(jié)點(diǎn)400接收指示將已分配給其自身節(jié)點(diǎn)(即,該情況下的節(jié)點(diǎn)100)的查詢重新分配給不同的節(jié)點(diǎn)的重新分配指令。作為響應(yīng),查詢狀態(tài)傳送管理單元140從查詢存儲(chǔ)單元110獲取查詢的查詢狀態(tài)。查詢狀態(tài)傳送管理單元140對(duì)所獲取的查詢狀態(tài)進(jìn)行序列化,然后將經(jīng)序列化的查詢狀態(tài)添加到要發(fā)送給目標(biāo)節(jié)點(diǎn)的傳送列表。序列化是將信息變換為可在網(wǎng)絡(luò)10上傳送的數(shù)據(jù)格式的處理。查詢狀態(tài)傳送管理單元140繼續(xù)緩沖傳送列表,直到傳送列表的數(shù)據(jù)大小達(dá)到預(yù)定數(shù)據(jù)大小為止,然后將被包括在傳送列表中的數(shù)據(jù)傳送給目標(biāo)節(jié)點(diǎn)。
[0082]查詢狀態(tài)接收管理單元150從不同的節(jié)點(diǎn)接收從所述不同的節(jié)點(diǎn)重新分配給其自身節(jié)點(diǎn)的查詢的查詢狀態(tài)。查詢狀態(tài)接收管理單元150將重新分配的查詢與其查詢狀態(tài)之間的對(duì)應(yīng)登記在查詢配置表中,該查詢配置表存儲(chǔ)在管理信息存儲(chǔ)單元120中。如稍后所描述的,由查詢狀態(tài)接收管理單元150從不同的節(jié)點(diǎn)接收的查詢狀態(tài)可以包括與該查詢對(duì)應(yīng)的一個(gè)或更多個(gè)事件。在該情況下,查詢狀態(tài)接收管理單元150請(qǐng)求查詢執(zhí)行管理單元130使用所述事件執(zhí)行查詢。
[0083]事件傳送管理單元160管理事件傳送。具體地,為了將被分配給不同節(jié)點(diǎn)的查詢的一個(gè)或更多個(gè)事件傳送給該不同節(jié)點(diǎn),事件傳送管理單元160對(duì)事件進(jìn)行序列化,并且將事件登記在傳送列表中。事件傳送管理單元160將被包括在傳送列表中的事件傳送給該不同節(jié)點(diǎn)。
[0084]事件接收管理單元170管理事件接收。具體地,事件接收管理單元170根據(jù)下面的情況#1至情況#4之一來執(zhí)行處理。
[0085]情況#1,其中所獲取的事件對(duì)應(yīng)于被分配給其自身節(jié)點(diǎn)的查詢。在該情況下,事件接收管理單元170請(qǐng)求查詢執(zhí)行管理單元130使用所述事件來執(zhí)行查詢。
[0086]情況#2,其中所獲取的事件對(duì)應(yīng)于從其自身節(jié)點(diǎn)被重新分配給不同的節(jié)點(diǎn)的查詢,并且查詢的查詢狀態(tài)被管理以指示查詢處于從其自身節(jié)點(diǎn)到不同的節(jié)點(diǎn)傳輸中。在該情況下,事件接收管理單元170將事件添加到查詢狀態(tài)的傳送列表。
[0087]情況#3,其中所獲取的事件對(duì)應(yīng)于從不同節(jié)點(diǎn)被重新分配給其自身節(jié)點(diǎn)的查詢,并且查詢的查詢狀態(tài)被管理以指示查詢處于從不同節(jié)點(diǎn)到其自身節(jié)點(diǎn)的傳送中。在該情況下,事件接收管理單元170將事件作為查詢的等待事件登記在查詢配置表中,所述查詢配置表存儲(chǔ)在管理信息存儲(chǔ)單元120中。
[0088]情況#4,其中所獲取的事件對(duì)應(yīng)于被分配給不同的節(jié)點(diǎn)的查詢。在該情況下,事件接收管理單元170將事件傳輸給不同節(jié)點(diǎn)。
[0089]事件接收管理單元170基于存儲(chǔ)在管理信息存儲(chǔ)單元120中的查詢配置表來確定上述情況#1至情況#4。注意,在情況#2和情況#3下,在查詢狀態(tài)被管理成指示“查詢處在傳送中”期間的時(shí)間幀包括用于將查詢狀態(tài)發(fā)送到網(wǎng)絡(luò)上的準(zhǔn)備時(shí)間段(用于序列化、緩沖等的傳送準(zhǔn)備時(shí)間段)。
[0090]通信單元180與節(jié)點(diǎn)200、節(jié)點(diǎn)300、管理節(jié)點(diǎn)400,以及連接到網(wǎng)絡(luò)20的各種設(shè)備通信。不同設(shè)備與各個(gè)查詢狀態(tài)傳送管理單元140、查詢狀態(tài)接收管理單元150、事件傳送管理單元160以及事件接收管理單元170之間的上述數(shù)據(jù)傳送和接收經(jīng)由通信單元180進(jìn)行。
[0091]管理節(jié)點(diǎn)400包括管理信息存儲(chǔ)單元410和配置控制單元420??梢允褂霉芾砉?jié)點(diǎn)400的RAM或HDD的存儲(chǔ)區(qū)域的一部分來實(shí)現(xiàn)管理信息存儲(chǔ)單元410??梢詫⑴渲每刂茊卧?20實(shí)現(xiàn)為由管理節(jié)點(diǎn)400的處理器執(zhí)行的軟件的模塊。
[0092]管理信息存儲(chǔ)單元410存儲(chǔ)查詢配置表。配置控制單元420監(jiān)測節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300的處理負(fù)荷。配置控制單元420根據(jù)節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300中的每個(gè)節(jié)點(diǎn)的處理負(fù)荷來改變節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300中的每個(gè)的查詢分配,從而平衡節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300之間的處理負(fù)荷。在改變查詢分配的情況下,配置控制單元420更新存儲(chǔ)在管理信息存儲(chǔ)單元410中的查詢配置表。
[0093]當(dāng)改變查詢分配時(shí),配置控制單元420向所有的節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300發(fā)出查詢重新分配的指令。指令包括重新分配的查詢,以及最初分配的節(jié)點(diǎn)的標(biāo)識(shí)信息和新分配的節(jié)點(diǎn)的標(biāo)識(shí)信息。指令也包括更新由每個(gè)節(jié)點(diǎn)保存的查詢配置表的指令??梢杂捎脩敉ㄟ^連接到管理節(jié)點(diǎn)400的預(yù)定輸入裝置來輸入該查詢重新分配指令。在該情況下,管理節(jié)點(diǎn)400響應(yīng)于從用戶輸入的操作來指示每個(gè)節(jié)點(diǎn)改變查詢分配。
[0094]圖6示出了分布式處理系統(tǒng)的軟件配置的示例(接續(xù)圖5)。節(jié)點(diǎn)200包括查詢存儲(chǔ)單元210、管理信息存儲(chǔ)單元220、查詢執(zhí)行管理單元230、查詢狀態(tài)傳送管理單元240、查詢狀態(tài)接收管理單元250、事件傳送管理單元260、事件接收管理單元270,以及通信單元280。
[0095]節(jié)點(diǎn)300包括查詢存儲(chǔ)單元310、管理信息存儲(chǔ)單元320、查詢執(zhí)行管理單元330、查詢狀態(tài)傳送管理單元340、查詢狀態(tài)接收管理單元350、事件傳送管理單元360、事件接收管理單元370,以及通信單元380。
[0096]可以使用節(jié)點(diǎn)200的RAM或HDD的存儲(chǔ)區(qū)域的一部分來實(shí)現(xiàn)查詢存儲(chǔ)單元210和管理信息存儲(chǔ)單元220,并且使用節(jié)點(diǎn)300的RAM或HDD的存儲(chǔ)區(qū)域的一部分來實(shí)現(xiàn)查詢存儲(chǔ)單元310和管理信息存儲(chǔ)單元320。可以將查詢執(zhí)行管理單元230、查詢狀態(tài)傳送管理單元240、查詢狀態(tài)接收管理單元250、事件傳送管理單元260、事件接收管理單元270及通信單元280實(shí)現(xiàn)為由節(jié)點(diǎn)200的處理器執(zhí)行的軟件的模塊,并且可以將查詢執(zhí)行管理單元330、查詢狀態(tài)傳送管理單元340、查詢狀態(tài)接收管理單元350、事件傳送管理單元360、事件接收管理單元370及通信單元380實(shí)現(xiàn)為由節(jié)點(diǎn)300的處理器執(zhí)行的軟件的模塊。由于節(jié)點(diǎn)200和節(jié)點(diǎn)300的每個(gè)功能與節(jié)點(diǎn)100的具有相同名稱的對(duì)應(yīng)部件的功能相同,因此將省略對(duì)其的說明。
[0097]圖7示出了事件的示例。事件X示出了事件的格式。事件X包括事件類型項(xiàng)、流名稱項(xiàng)及內(nèi)容項(xiàng)。對(duì)于事件類型項(xiàng)而言,事件的類型被登記。對(duì)于流名稱項(xiàng)而言,與事件對(duì)應(yīng)的流的標(biāo)識(shí)信息被登記。對(duì)于內(nèi)容項(xiàng)而言,指示事件的內(nèi)容的信息被登記。
[0098]事件Xl是事件X的示例。例如,事件Xl存儲(chǔ)有事件類型為“P”、流名稱為“輸入流”、并且內(nèi)容為“1000W”的信息。該信息指示事件Xl的類型是表示與電功率有關(guān)的信息的“P”;對(duì)應(yīng)于事件Xi的流名稱是“輸入流”;以及事件Xi的內(nèi)容是檢測到的功耗“1000W”。
[0099]圖8示出了查詢的示例。查詢111存儲(chǔ)在查詢存儲(chǔ)單元110中。查詢111是以所謂的Esper的事件查詢語言(EPL)的形式的查詢描述示例。查詢111限定了,如果事件以三個(gè)流A —B —C的順序輸入,則數(shù)據(jù)(事件)被輸出到數(shù)據(jù)流。因此,每個(gè)查詢能夠限定用于各種事件的條件。在下面的描述中,可以將具有流名稱“A”的事件表示為事件A。
[0100]圖9示出了查詢狀態(tài)的示例。查詢狀態(tài)112是查詢111的查詢狀態(tài)的示例。查詢狀態(tài)112存儲(chǔ)在查詢存儲(chǔ)單元110中。查詢狀態(tài)112表示對(duì)于查詢111而言,事件A和事件B已經(jīng)到達(dá),但是事件C尚未達(dá)到(即,等待事件C的到達(dá)的狀態(tài))。節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300保存每個(gè)查詢的當(dāng)前查詢狀態(tài)。每個(gè)查詢與其查詢狀態(tài)之間的對(duì)應(yīng)通過由節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300中的每個(gè)保存的查詢配置表管理。
[0101]圖10示出了查詢配置表的第一示例。查詢配置表121存儲(chǔ)在管理信息存儲(chǔ)單元120中。根據(jù)圖10的示例,查詢配置表121為表的形式,然而,作為替代可以使用不同的數(shù)據(jù)結(jié)構(gòu)。例如,查詢配置表121可以是使用查詢名作為關(guān)鍵字的哈希映射(HashMap)。查詢配置表121包括名為查詢名稱、分配節(jié)點(diǎn)名稱、狀態(tài)、查詢狀態(tài)引用、鎖定,以及等待事件的欄。
[0102]在查詢名稱欄中,每個(gè)字段包括查詢的標(biāo)識(shí)信息。在分配節(jié)點(diǎn)名稱欄中,每個(gè)字段包括分配(設(shè)置)有相應(yīng)查詢的節(jié)點(diǎn)(負(fù)責(zé)節(jié)點(diǎn))的名稱。在狀態(tài)欄中,每個(gè)字段包括相應(yīng)的查詢的當(dāng)前狀態(tài)。
[0103]下面是每個(gè)查詢的可能狀態(tài):(I)處在操作中(查詢可在負(fù)責(zé)節(jié)點(diǎn)中執(zhí)行);(2)正遷移到不同的節(jié)點(diǎn)(響應(yīng)于查詢分配的變化,查詢狀態(tài)從最初分配的節(jié)點(diǎn)傳送到新分配的節(jié)點(diǎn));以及(3)已遷移到不同節(jié)點(diǎn)(已經(jīng)完成將查詢狀態(tài)從最初分配的節(jié)點(diǎn)傳送到新分配的節(jié)點(diǎn))。
[0104]在查詢狀態(tài)引用欄中,每個(gè)字段包括相應(yīng)查詢的查詢狀態(tài)的指針。然而,應(yīng)注意,在查詢狀態(tài)不在其自身節(jié)點(diǎn)中被管理的情況下,則登記術(shù)語“不存在于節(jié)點(diǎn)中”。
[0105]在鎖定欄中,每個(gè)字段包括指示相應(yīng)查詢的查詢狀態(tài)是否被鎖定的信息。在等待事件欄中,每個(gè)字段包括用于相應(yīng)查詢的等待事件。等待事件是在完成將查詢的查詢狀態(tài)從初始分配的節(jié)點(diǎn)傳送到其自身節(jié)點(diǎn)之前,其自身節(jié)點(diǎn)已獲取被重新分配給其自身節(jié)點(diǎn)的查詢的事件。
[0106]例如,下列信息被登記在查詢配置表121中:查詢名稱為“Queryl”的;分配節(jié)點(diǎn)名稱為“節(jié)點(diǎn)100” ;狀態(tài)為“正遷移到節(jié)點(diǎn)200” ;查詢狀態(tài)引用為“&QueryIState” ;鎖定為“解除鎖定”;以及等待事件”為“空(null) ”。該信息指示由“Queryl”標(biāo)識(shí)的查詢當(dāng)前被分配給節(jié)點(diǎn)100,并且查詢的分配正經(jīng)歷從節(jié)點(diǎn)100到節(jié)點(diǎn)200的變化。該信息也指示查詢的查詢狀態(tài)由指針“&QuerylState”指向;查詢狀態(tài)未被鎖定;以及不存在用于查詢的等待事件。
[0107]圖11示出了查詢配置表的第二示例。查詢配置表221存儲(chǔ)在管理信息存儲(chǔ)單元220中。圖11示出了在與上述查詢配置表121相同的時(shí)間點(diǎn)獲得的查詢配置表221的登記內(nèi)容。查詢配置表221包括與查詢配置表121相同的欄項(xiàng)目,因此省略了對(duì)其的說明。
[0108]例如,對(duì)于由“Queryl”標(biāo)識(shí)的查詢而言,查詢配置表221與查詢配置表121的不同之處在于:查詢狀態(tài)引用為“不存在于節(jié)點(diǎn)中”,并且等待事件為“ α 5、α 6”。該信息指示查詢的分配正經(jīng)歷變化(查詢狀態(tài)為正遷移到節(jié)點(diǎn)200),并且其自身節(jié)點(diǎn)(節(jié)點(diǎn)200)不具有查詢狀態(tài)。信息也指示,對(duì)于該查詢,事件α5和事件α 6被獲取作為等待事件。
[0109]此外,對(duì)于由“Query8”標(biāo)識(shí)的查詢而言,查詢配置表221與查詢配置表121的不同之處在于:查詢狀態(tài)引用為“&Query8State”。這是因?yàn)楣?jié)點(diǎn)200負(fù)責(zé)查詢,因此保存查詢的查詢狀態(tài)。
[0110]圖12示出了查詢配置表的第三示例。查詢配置表321存儲(chǔ)在管理信息存儲(chǔ)單元320中。圖12示出了在與上述查詢配置表121和查詢配置表221在相同的時(shí)間點(diǎn)獲得的查詢配置表321的登記內(nèi)容。查詢配置表321包括與查詢配置表121相同的欄項(xiàng)目,因此省略了對(duì)其的說明。
[0111]例如,對(duì)于由“Queryl”標(biāo)識(shí)的查詢而言,查詢配置表321與查詢配置表121和查詢配置表221的不同之處在于:分配節(jié)點(diǎn)名稱為“節(jié)點(diǎn)200”,并且狀態(tài)為“操作中”。這是因?yàn)楣?jié)點(diǎn)300在以下查詢狀態(tài)的傳送和接收過程中不起作用:該查詢狀態(tài)與對(duì)查詢名稱為Queryl”的查詢的分配的改變相關(guān)聯(lián)。也就是說,當(dāng)從管理節(jié)點(diǎn)400接收查詢重新分配指令時(shí),每個(gè)節(jié)點(diǎn)在確定其自身節(jié)點(diǎn)不涉及與重新分配關(guān)聯(lián)的查詢狀態(tài)的傳送和接收后可以立即改變相應(yīng)的分配節(jié)點(diǎn)名稱。
[0112]此外,對(duì)于由“QuerylO”標(biāo)識(shí)的查詢而言,查詢配置表321與查詢配置表121和查詢配置表221的不同之處在于:查詢狀態(tài)引用為“&QuerylOState”。這是因?yàn)楣?jié)點(diǎn)300負(fù)責(zé)查詢,因此保存該查詢的查詢狀態(tài)。
[0113]注意,管理節(jié)點(diǎn)400保存與查詢配置表121、查詢配置表221及查詢配置表321類似的查詢配置表。在管理節(jié)點(diǎn)400的查詢配置表中,每個(gè)節(jié)點(diǎn)的各個(gè)查詢的最新分配狀態(tài)被登記。然而,應(yīng)注意,由管理節(jié)點(diǎn)400保存的查詢配置表不需要管理與查詢狀態(tài)引用、鎖定及等待事件有關(guān)的/[目息。
[0114]圖13示出了傳送數(shù)據(jù)管理結(jié)構(gòu)的示例。傳送數(shù)據(jù)管理結(jié)構(gòu)D是用于將傳送列表中的一個(gè)查詢的查詢狀態(tài)存儲(chǔ)在其中的結(jié)構(gòu)。此處示出的數(shù)據(jù)結(jié)構(gòu)是在傳送列表為雙向列表的情況下使用的數(shù)據(jù)結(jié)構(gòu),然而,傳送列表不一定必須是雙向的,并且傳送列表可以是例如單向的。傳送數(shù)據(jù)管理結(jié)構(gòu)D包括前向項(xiàng)、后向項(xiàng)、查詢狀態(tài)項(xiàng),以及事件項(xiàng)。
[0115]前向是提供對(duì)之后鏈接的傳送數(shù)據(jù)管理結(jié)構(gòu)的引用的指針(&SendBufStructure)。后向是提供對(duì)之前鏈接的傳送數(shù)據(jù)管理結(jié)構(gòu)的引用的指針(&SendBufStructure)。查詢狀態(tài)是提供對(duì)傳送目標(biāo)查詢狀態(tài)引用的指針(&QueryState)。事件是提供對(duì)存儲(chǔ)一個(gè)或更多個(gè)事件的數(shù)組的引用的指針(&Events[])。
[0116]圖14示出了傳送列表的示例。傳送列表122存儲(chǔ)在管理信息存儲(chǔ)單元120中,并且用于將信息從節(jié)點(diǎn)100傳送到節(jié)點(diǎn)200。傳送列表122是第一實(shí)施方式的傳送數(shù)據(jù)6的示例。為每個(gè)目標(biāo)節(jié)點(diǎn)生成這樣的傳送列表。當(dāng)將信息從節(jié)點(diǎn)100傳送到與節(jié)點(diǎn)200不同的節(jié)點(diǎn)時(shí),節(jié)點(diǎn)100生成不同的傳送列表。
[0117]傳送列表122是雙向列表,其中多個(gè)傳送數(shù)據(jù)管理結(jié)構(gòu)D(在下文中稱為列表兀素)是可鏈接的。傳送列表122包括列表元素122a、列表元素122b,以及列表元素122c。列表元素122a是傳送列表122的頭部(Head)。此外,列表元素122a包括指示傳送列表122是否被鎖定的信息(例如,標(biāo)記)(信息被設(shè)置在鎖定項(xiàng)中)。
[0118]列表元素122b是列表元素122a后面的列表元素。列表元素122c是列表元素122b后面的列表元素。列表元素122b和列表元素122c中的每個(gè)單獨(dú)地包括前向項(xiàng)、后向項(xiàng)、查詢狀態(tài)項(xiàng),以及事件項(xiàng)。在下文描述具體設(shè)定內(nèi)容。
[0119]對(duì)于列表元素122b而言,在各個(gè)項(xiàng)目中設(shè)定如下信息。在前向項(xiàng)中設(shè)定提供到列表元素122c的鏈接(前向鏈接)的指針。在后向項(xiàng)中設(shè)定提供到列表元素122a的鏈接(后向鏈接)的指針。在查詢狀態(tài)項(xiàng)中設(shè)定提供對(duì)由“Queryl”標(biāo)識(shí)的查詢的查詢狀態(tài)(QuerylState)的引用的指針。查詢狀態(tài)也包括指示其為由“QueryI”標(biāo)識(shí)的查詢的查詢狀態(tài)的信息。在事件項(xiàng)中設(shè)定提供已接收到的用于查詢的一列事件([α 1、α 2、α 3])的引用的指針。
[0120]對(duì)于列表元素122c而言,在各個(gè)項(xiàng)目中設(shè)定如下信息。由于之后的列表元素不存在,所以在如向項(xiàng)中設(shè)定為空(null)。在后向項(xiàng)中設(shè)定提供到列表兀素122b的鏈接的指針。在查詢狀態(tài)項(xiàng)中設(shè)定提供對(duì)由“Queryl3”標(biāo)識(shí)的查詢的查詢狀態(tài)(Queryl3State)的弓I用的指針。查詢狀態(tài)也包括指示其為由“Query 13”標(biāo)識(shí)的查詢的查詢狀態(tài)的信息。由于不存在被接收的用于查詢的事件,所以在事件中設(shè)定為空(null)。
[0121]接下來,將描述根據(jù)第二實(shí)施方式的當(dāng)改變查詢分配時(shí)所執(zhí)行的處理過程。假設(shè)在下面的描述中查詢從節(jié)點(diǎn)100被重新分配給節(jié)點(diǎn)200。然而,應(yīng)當(dāng)注意,類似的過程發(fā)生在查詢在其他節(jié)點(diǎn)之間被重新分配的情況下。
[0122]圖15是示出查詢狀態(tài)傳送管理的示例的流程圖。接下來根據(jù)流程圖中的步驟編號(hào)來描述圖15的處理。在查詢從節(jié)點(diǎn)100被重新分配給節(jié)點(diǎn)200的情況下,下面的過程由節(jié)點(diǎn)100進(jìn)行。
[0123](步驟Sll)查詢狀態(tài)傳送管理單元140從管理節(jié)點(diǎn)400接收指令,以便將已分配給節(jié)點(diǎn)100的查詢(例如,具有查詢名稱“Queryl”的查詢)重新分配給節(jié)點(diǎn)200。查詢狀態(tài)傳送管理單元140操縱查詢配置表121,以鎖定重新分配目標(biāo)查詢的查詢狀態(tài)(與該查詢對(duì)應(yīng)的條目的鎖定欄中的“解除鎖定”變?yōu)椤版i定”)。
[0124](步驟S12)查詢狀態(tài)傳送管理單元140操縱查詢配置表121,以將對(duì)應(yīng)于查詢的條目的狀態(tài)欄中的“操作中”變?yōu)椤罢w移到節(jié)點(diǎn)200” (新分配節(jié)點(diǎn)200也在其查詢配置表221中進(jìn)行相同的設(shè)置變化)。從此刻開始,查詢的執(zhí)行被中斷直到重新分配完成為止,然后在節(jié)點(diǎn)200處繼續(xù)查詢的執(zhí)行。
[0125](步驟S13)查詢狀態(tài)傳送管理單元140生成傳送數(shù)據(jù)管理結(jié)構(gòu)D。
[0126](步驟S14)查詢狀態(tài)傳送管理單元140參照查詢配置表121,使用設(shè)定在對(duì)應(yīng)于查詢的條目的查詢狀態(tài)引用欄中的指針來獲取查詢狀態(tài)。查詢狀態(tài)傳送管理單元140操縱查詢配置表121,以將該條目的查詢狀態(tài)引用欄中的信息變?yōu)樵趫D13中生成的傳送數(shù)據(jù)管理結(jié)構(gòu)D的指針。
[0127](步驟S15)查詢狀態(tài)傳送管理單元140操縱查詢配置表121,以解除對(duì)重新分配目標(biāo)查詢的查詢狀態(tài)的鎖定(該條目的鎖定欄中的“鎖定”變?yōu)椤敖獬i定”)。
[0128](步驟S16)查詢狀態(tài)傳送管理單元140對(duì)在步驟S14中獲取的查詢狀態(tài)進(jìn)行序列化。
[0129](步驟S17)查詢狀態(tài)傳送管理單元140將序列化的查詢狀態(tài)登記在在步驟S13中生成的傳送數(shù)據(jù)管理結(jié)構(gòu)D中。具體地,查詢狀態(tài)傳送管理單元140將查詢狀態(tài)的指針登記在傳送數(shù)據(jù)管理結(jié)構(gòu)D中。
[0130](步驟S18)查詢狀態(tài)傳送管理單元140鎖定傳送列表122。
[0131](步驟S19)查詢狀態(tài)傳送管理單元140將傳送數(shù)據(jù)管理結(jié)構(gòu)D(具有登記的查詢狀態(tài))鏈接到傳送列表122。
[0132](步驟S20)查詢狀態(tài)傳送管理單元140確定傳送列表122的總數(shù)據(jù)大小是否大于或等于閾值。如果總數(shù)據(jù)大小大于或等于閾值,則查詢狀態(tài)傳送管理單元140將過程移動(dòng)到步驟S21。如果總數(shù)據(jù)大小小于閾值,則查詢狀態(tài)傳送管理單元140將過程移動(dòng)到步驟S24。注意,例如用戶可以將閾值設(shè)定為取決于通信環(huán)境的值。
[0133](步驟S21)查詢狀態(tài)傳送管理單元140操作查詢配置表121,以鎖定登記在傳送列表122中的所有的查詢狀態(tài)。此處,登記在傳送列表122中的查詢狀態(tài)是各個(gè)條目具有設(shè)定在查詢配置表121的狀態(tài)欄中的“正遷移到節(jié)點(diǎn)200”的查詢狀態(tài)。
[0134](步驟S22)查詢狀態(tài)傳送管理單元140將登記在傳送列表122中的查詢狀態(tài)之一通過網(wǎng)絡(luò)10發(fā)送給節(jié)點(diǎn)200。查詢狀態(tài)傳送管理單元140操縱查詢配置表121以對(duì)與發(fā)出的查詢狀態(tài)對(duì)應(yīng)的條目進(jìn)行如下變化:將分配節(jié)點(diǎn)名稱欄中的信息(從“節(jié)點(diǎn)100”)變?yōu)椤肮?jié)點(diǎn)200” ;將狀態(tài)欄中的信息變?yōu)椤斑w移完成”;以及將查詢狀態(tài)引用欄中的信息變?yōu)椤安淮嬖谟诠?jié)點(diǎn)中”。隨后,查詢狀態(tài)傳送管理單元140操縱查詢配置表121,以解除對(duì)條目的查詢狀態(tài)的鎖定。
[0135](步驟S23)如果,在傳送列表122中,一個(gè)或更多個(gè)事件附加到在步驟S22中傳送的查詢狀態(tài),則管理單元140也將所述事件傳送給節(jié)點(diǎn)200。注意,步驟S22和步驟S23針對(duì)登記在傳送列表122中每個(gè)查詢狀態(tài)而執(zhí)行。在多個(gè)查詢狀態(tài)被登記在傳送列表122中的情況下,查詢狀態(tài)傳送管理單元140針對(duì)查詢狀態(tài)中的每個(gè)查詢狀態(tài)重復(fù)執(zhí)行步驟S22和步驟S23。
[0136](步驟S24)查詢狀態(tài)傳送管理單元140解除對(duì)傳送列表122的鎖定。
[0137]如上所述,如果傳送列表122包括與重新分配的目標(biāo)查詢關(guān)聯(lián)的事件,則節(jié)點(diǎn)100將所述事件以及查詢的查詢狀態(tài)一起傳送給節(jié)點(diǎn)200。
[0138]隨后,例如,查詢狀態(tài)傳送管理單元140從管理節(jié)點(diǎn)400接收完成查詢重新分配的通知。例如,查詢狀態(tài)傳送管理單元140在接收到通知時(shí),在查詢配置表121中將對(duì)應(yīng)于查詢的條目的狀態(tài)欄中的信息(從“遷移完成”)變?yōu)椤安僮髦小薄?br>
[0139]如上所述,在步驟S12中,在查詢狀態(tài)的傳送和接收過程中不起作用的節(jié)點(diǎn)300可以響應(yīng)于步驟Sll中的指令在查詢配置表321中將對(duì)應(yīng)于查詢的條目的分配節(jié)點(diǎn)名稱欄中的信息變?yōu)椤肮?jié)點(diǎn)200”。類似地,管理節(jié)點(diǎn)400可以在發(fā)出查詢重新分配指令時(shí)在其自身的查詢配置表中將對(duì)應(yīng)于查詢的條目的分配節(jié)點(diǎn)名稱欄中的信息變?yōu)椤肮?jié)點(diǎn)200”。
[0140]圖16是示出事件接收管理(在最初分配的節(jié)點(diǎn)處)的示例的流程圖。接下來根據(jù)流程圖中的步驟編號(hào)來描述圖16的處理。圖16示出節(jié)點(diǎn)100作為示例的情況,然而,其他節(jié)點(diǎn)遵循類似的過程。
[0141](步驟S31)事件接收管理單元170獲取事件。已經(jīng)發(fā)出事件的源可以是連接到網(wǎng)絡(luò)20的設(shè)備或節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300之一。事件接收管理單元170對(duì)獲取的事件進(jìn)行反序列化(在事件發(fā)出源是節(jié)點(diǎn)100的情況下可以不進(jìn)行反序列化)。
[0142](步驟S32)事件接收管理單元170從被包括在事件中的流名稱獲取查詢的標(biāo)識(shí)信息(查詢名稱)。查詢存儲(chǔ)單元110存儲(chǔ)有與每個(gè)流名稱和以下查詢的查詢名稱之間的對(duì)應(yīng)有關(guān)的信息:所述查詢用于處理包括流名稱的事件。因此,事件接收管理單元170通過參照所述信息,能夠基于流名稱來獲取查詢名稱。事件接收管理單元170使用查詢名稱作為關(guān)鍵字,針對(duì)對(duì)應(yīng)于事件的條目來搜索查詢配置表121。
[0143](步驟S33)事件接收管理單元170操縱查詢配置表121,以鎖定條目的查詢狀態(tài)。
[0144](步驟S34)事件接收管理單元170參照查詢配置表121來確定對(duì)條目的查詢是否可執(zhí)行。如果查詢是可執(zhí)行的,則事件接收管理單元170將過程移動(dòng)到步驟S35。如果查詢是不可執(zhí)行的,則事件接收管理單元170將過程移動(dòng)到步驟S36。當(dāng)其自身節(jié)點(diǎn)負(fù)責(zé)查詢并且狀態(tài)是“操作中”時(shí),查詢是可執(zhí)行的。另一方面,當(dāng)其自身節(jié)點(diǎn)不負(fù)責(zé)查詢時(shí),或者即使其自身節(jié)點(diǎn)負(fù)責(zé)查詢而狀態(tài)不是“操作中”時(shí),查詢是不可執(zhí)行的。
[0145](步驟S35)查詢執(zhí)行管理單元130使用所獲取的事件來執(zhí)行查詢,然后根據(jù)執(zhí)行結(jié)果來改變查詢的查詢狀態(tài)。查詢執(zhí)行管理單元130操縱查詢配置表121,以解除對(duì)查詢的查詢狀態(tài)的鎖定。隨后,查詢執(zhí)行管理單元130結(jié)束過程。
[0146](步驟S36)事件接收管理單元170參照查詢配置表121來確定與獲取的事件對(duì)應(yīng)的查詢的查詢狀態(tài)是否被緩沖。在查詢狀態(tài)被緩沖的情況下,事件接收管理單元170將處理移動(dòng)到步驟S37。如果查詢狀態(tài)未被緩沖,則事件接收管理單元170將處理移動(dòng)到步驟S42。通過參照與查詢配置表121中的查詢對(duì)應(yīng)的條目的狀態(tài)欄中的信息來確定查詢狀態(tài)是否被緩沖。如果其自身節(jié)點(diǎn)負(fù)責(zé)查詢并且狀態(tài)是“正遷移到不同的節(jié)點(diǎn)”(例如,節(jié)點(diǎn)200),則查詢狀態(tài)被緩沖。如果狀態(tài)是不同于“正遷移到不同節(jié)點(diǎn)”的狀態(tài),則查詢狀態(tài)未被緩沖。
[0147](步驟S37)事件接收管理單元170對(duì)所獲取的事件進(jìn)行序列化。
[0148](步驟S38)事件接收管理單元170在傳送列表中鎖定到傳送數(shù)據(jù)管理結(jié)構(gòu)D(列表元素)的鏈接,在該傳送數(shù)據(jù)管理結(jié)構(gòu)D中登記有對(duì)應(yīng)于事件的查詢的查詢狀態(tài)。
[0149](步驟S39)事件接收管理單元170將獲取的事件登記在傳送數(shù)據(jù)管理結(jié)構(gòu)D中(事件鏈接起來)。
[0150](步驟S40)事件接收管理單元170解除對(duì)傳送數(shù)據(jù)管理結(jié)構(gòu)D的鏈接的鎖定。
[0151](步驟S41)事件接收管理單元170操縱查詢配置表121,以解除對(duì)查詢的查詢狀態(tài)的鎖定,然后結(jié)束過程。
[0152](步驟S42)事件接收管理單元170操縱查詢配置表121,以解除對(duì)查詢的查詢狀態(tài)的鎖定。
[0153](步驟S43)事件接收管理單元170使得事件傳送管理單元160傳送所獲取的事件。稍后將詳細(xì)描述由事件傳送管理單元160執(zhí)行的處理。
[0154]如上所述,當(dāng)事件接收管理單元170獲取事件時(shí),如果用于處理事件的查詢的查詢狀態(tài)正處在傳送過程中,則事件接收管理單元170在傳送列表中將事件登記在存儲(chǔ)查詢狀態(tài)的列表元素中(步驟S37至步驟S40)。在這方面,例如可以通過使用被稱為“聚集”的應(yīng)用編程接口(API)以低成本實(shí)現(xiàn)通過查詢狀態(tài)傳送管理單元140和事件接收管理單元170來生成傳送列表的上述處理。
[0155]此外,如果事件與被分配給其自身節(jié)點(diǎn)的查詢關(guān)聯(lián),于是查詢狀態(tài)未處在傳送中,則以通常的方式執(zhí)行查詢(步驟S35)。此外,當(dāng)獲取的事件與被分配到不同的節(jié)點(diǎn)的查詢相關(guān)聯(lián)時(shí),則通過事件傳送管理單元160將事件傳送給不同的節(jié)點(diǎn)。(步驟S43)。
[0156]圖17是示出查詢狀態(tài)接收管理的示例的流程圖。接下來根據(jù)流程圖中的步驟編號(hào)來描述圖17的處理。在查詢從節(jié)點(diǎn)100被重新分配給節(jié)點(diǎn)200的情況下,下面的過程由節(jié)點(diǎn)200執(zhí)行。注意,在步驟S51之前,節(jié)點(diǎn)200已從管理節(jié)點(diǎn)400接收到查詢重新分配指令,其指示查詢從節(jié)點(diǎn)100重新分配給節(jié)點(diǎn)200。節(jié)點(diǎn)200在接收到查詢重新分配指令時(shí),在查詢配置表221中將在查詢重新分配指令中指定的查詢狀態(tài)設(shè)定為“正遷移到節(jié)點(diǎn)200”。
[0157](步驟S51)查詢狀態(tài)接收管理單元250從節(jié)點(diǎn)100接收重新分配目標(biāo)查詢(例如,具有查詢名稱“Queryl”的查詢)的查詢狀態(tài)。查詢狀態(tài)接收管理單元250對(duì)所接收的查詢狀態(tài)進(jìn)行反序列化,并且將該查詢狀態(tài)存儲(chǔ)在查詢存儲(chǔ)單元210中。
[0158](步驟S52)查詢狀態(tài)接收管理單元250確定一個(gè)或更多個(gè)事件是否被附加到所接收的查詢狀態(tài)。如果事件被附加,則查詢狀態(tài)接收管理單元250將過程移動(dòng)到步驟S53。如果事件未被附加,則查詢狀態(tài)接收管理單元250將過程移動(dòng)到步驟S55。
[0159](步驟S53)查詢狀態(tài)接收管理單元250對(duì)附加的事件(例如,事件α1、α 2、α 3)進(jìn)行反序列化,并且將反序列化的事件輸出給查詢執(zhí)行管理單元230。
[0160](步驟S54)查詢執(zhí)行管理單元230使用所獲取的事件和查詢狀態(tài)來執(zhí)行查詢,然后改變存儲(chǔ)在查詢存儲(chǔ)單元210中的查詢狀態(tài)。
[0161 ](步驟S55)查詢狀態(tài)接收管理單元250參照存儲(chǔ)在管理信息存儲(chǔ)單元220中的查詢配置表221來搜索查詢的條目。
[0162](步驟S56)查詢狀態(tài)接收管理單元250鎖定條目。
[0163](步驟S57)查詢狀態(tài)接收管理單元250將存儲(chǔ)在查詢存儲(chǔ)單元210中的查詢狀態(tài)的指針登記在條目的查詢狀態(tài)引用欄下的字段中。由指針指示的查詢狀態(tài)是在步驟S54未執(zhí)行的情況下在步驟S51中獲得的的查詢狀態(tài)。另一方面,如果步驟S54已執(zhí)行,則由指針指示的查詢狀態(tài)是根據(jù)步驟54的執(zhí)行結(jié)果的查詢狀態(tài)。
[0164](步驟S58)查詢狀態(tài)接收管理單元250確定在條目中是否存在一個(gè)或更多個(gè)等待事件。如果存在一個(gè)或更多個(gè)等待事件,則查詢狀態(tài)接收管理單元250將過程移動(dòng)到步驟S59。如果不存在一個(gè)或更多個(gè)等待事件,則查詢狀態(tài)接收管理單元250將過程移動(dòng)到S60。
[0165](步驟S59)查詢執(zhí)行管理單元230使用等待事件(例如,α5和α 6)和當(dāng)前查詢狀態(tài)來執(zhí)行查詢,然后改變查詢狀態(tài)。
[0166](步驟S60)查詢狀態(tài)接收管理單元250操縱查詢配置表221,以針對(duì)在步驟S55的搜索中找到的條目進(jìn)行如下變化:將在分配節(jié)點(diǎn)名稱欄中的信息(從“節(jié)點(diǎn)100”)變?yōu)椤肮?jié)點(diǎn)200” ;以及將狀態(tài)欄中的信息變?yōu)椤斑w移完成”。
[0167](步驟S61)查詢狀態(tài)接收管理單元250解除對(duì)條目的鎖定。
[0168]因此,如果一個(gè)或更多個(gè)事件被附加到接收的查詢狀態(tài),則查詢狀態(tài)接收管理單元250使用所述事件和查詢狀態(tài)來執(zhí)行查詢,然后更新查詢狀態(tài)。此外,如果存在用于查詢的一個(gè)或更多個(gè)等待事件,則查詢狀態(tài)接收管理單元250使用等待事件來執(zhí)行查詢,然后更新查詢狀態(tài)。
[0169]在這方面,有時(shí)存在以下情況:待在查詢中使用的事件在等待事件之前發(fā)生,但是尚未到達(dá)節(jié)點(diǎn)200 (稍后描述)。在該情況下,也使得節(jié)點(diǎn)200能夠使用查詢狀態(tài)和等待事件來執(zhí)行查詢。
[0170]在步驟S51后的某一時(shí)間,查詢狀態(tài)接收管理單元250將查詢狀態(tài)的適當(dāng)接收通知給管理節(jié)點(diǎn)400。然后,在接收到來自管理節(jié)點(diǎn)400的對(duì)所述通知的響應(yīng)(即,完成查詢重新分配的通知)時(shí),例如,查詢狀態(tài)接收管理單元250在查詢配置表221中將對(duì)應(yīng)于查詢的條目的狀態(tài)欄中的信息改為“操作中”(如果狀態(tài)在步驟S60之前已為“操作中”,則在步驟S60中不需要將該狀態(tài)改變?yōu)椤斑w移完成”)。
[0171]圖18是示出事件接收管理(在新分配的節(jié)點(diǎn)處)的示例的流程圖。接下來將根據(jù)流程圖中的步驟編號(hào)來描述圖18的處理。圖18示出了節(jié)點(diǎn)200作為示例的情況,然而,其他節(jié)點(diǎn)遵循類似的過程。
[0172](步驟S71)事件接收管理單元270獲取事件。已經(jīng)發(fā)出事件的源可以是連接到網(wǎng)絡(luò)20的設(shè)備,或節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300之一。事件接收管理單元270對(duì)獲取的事件進(jìn)行反序列化(在事件發(fā)出源是節(jié)點(diǎn)200的情況下可以不進(jìn)行反序列化)。
[0173](步驟S72)事件接收管理單元270從被包括在事件中的流名稱獲取查詢的標(biāo)識(shí)信息(查詢名稱)。查詢存儲(chǔ)單元210存儲(chǔ)有與每個(gè)流名稱和以下查詢的查詢名稱之間的對(duì)應(yīng)有關(guān)的信息,所述查詢用于處理包含流名稱的事件。因此,事件接收管理單元270通過參照信息,能夠基于流名稱來獲取查詢名稱。事件接收管理單元270使用查詢名稱作為關(guān)鍵字,針對(duì)與事件對(duì)應(yīng)的條目來搜索查詢配置表221。
[0174](步驟S73)事件接收管理單元270操縱查詢配置表221,以鎖定條目的查詢狀態(tài)。
[0175](步驟S74)事件接收管理單元270通過參照查詢配置表221來確定條目的查詢是否是可執(zhí)行的。如果查詢是可執(zhí)行的,則事件接收管理單元270將過程移動(dòng)到步驟S75。如果查詢是不可執(zhí)行的,則事件接收管理單元270將過程移動(dòng)到步驟S76。在其自身節(jié)點(diǎn)負(fù)責(zé)查詢并且狀態(tài)是“操作中”或“遷移完成”時(shí),查詢是可執(zhí)行的。另一方面,在其自身節(jié)點(diǎn)不負(fù)責(zé)查詢時(shí)或者即使其自身節(jié)點(diǎn)負(fù)責(zé)查詢但是狀態(tài)既不是“操作中”也不是“遷移完成”的情況下,查詢是不可執(zhí)行的。
[0176](步驟S75)查詢執(zhí)行管理單元230使用獲取的事件來執(zhí)行查詢,然后改變存儲(chǔ)在查詢存儲(chǔ)單元210中的、查詢的查詢狀態(tài)。查詢執(zhí)行管理單元230操縱查詢配置表221,以解除對(duì)查詢的查詢狀態(tài)的鎖定。隨后,查詢執(zhí)行管理單元230結(jié)束過程。
[0177](步驟S76)事件接收管理單元270通過參照查詢配置表221來確定與獲取的事件對(duì)應(yīng)的查詢是否等待查詢狀態(tài)的到達(dá)。如果查詢在等待查詢狀態(tài)的到達(dá),則事件接收管理單元270將過程移動(dòng)到步驟S77。如果查詢不等待查詢狀態(tài)的到達(dá),則事件接收管理單元270將過程移動(dòng)到步驟S79。當(dāng)在對(duì)應(yīng)于查詢狀態(tài)的條目的狀態(tài)欄下的字段中設(shè)定“正遷移到其自身節(jié)點(diǎn)(在該情況下,為節(jié)點(diǎn)200)”時(shí),查詢等待查詢狀態(tài)的到達(dá)。另一方面,當(dāng)在前述字段中設(shè)定不同于“正遷移到其自身節(jié)點(diǎn)”的信息時(shí),查詢不等待查詢狀態(tài)的到達(dá)。
[0178](步驟S77)事件接收管理單元270將獲取的事件(例如,α5和α 6)登記在查詢配置表221的等待事件欄下的條目的字段中。
[0179](步驟S78)事件接收管理單元270操縱查詢配置表221,以解除對(duì)條目的查詢狀態(tài)的鎖定。隨后,事件接收管理單元270結(jié)束過程。
[0180](步驟S79)事件接收管理單元270操縱查詢配置表221,以解除對(duì)與獲取的事件對(duì)應(yīng)的查詢的查詢狀態(tài)的鎖定。
[0181](步驟S80)事件接收管理單元270使得事件傳送管理單元260傳送獲取的事件。
[0182]如上所述,當(dāng)獲取與等待查詢狀態(tài)的到達(dá)的查詢對(duì)應(yīng)的事件時(shí),事件接收管理單元270將事件作為等待事件登記在查詢配置表221中(步驟S76和步驟S77)。在獲取與分配給其自身節(jié)點(diǎn)但是不等待查詢狀態(tài)的到達(dá)的查詢對(duì)應(yīng)的事件時(shí),事件接收管理單元270按照通常的方式執(zhí)行查詢(步驟S75)。在獲取與分配給不同節(jié)點(diǎn)的查詢對(duì)應(yīng)的事件時(shí),事件接收管理單元270使得事件傳送管理單元260將事件傳送給所述不同的節(jié)點(diǎn)(步驟S80)。
[0183]接下來描述的是由各個(gè)事件傳送管理單元160、事件傳送管理單元260和事件傳送管理單元360進(jìn)行的事件傳送管理的過程。下面的描述示出了由事件傳送管理單元160執(zhí)行的過程,但是事件傳送管理單元260和事件傳送管理單元360中的每個(gè)遵循類似的過程。
[0184]圖19是示出事件傳送管理的示例的流程圖。接下來根據(jù)流程圖中的步驟編號(hào)來描述圖19的處理。
[0185](步驟S81)事件傳送管理單元160獲取事件。發(fā)出事件的源可以是連接到網(wǎng)絡(luò)20的設(shè)備或節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300之一。如上所述,事件傳送管理單元160可以從事件接收管理單元170獲取與分配給不同的節(jié)點(diǎn)的查詢對(duì)應(yīng)的事件。事件傳送管理單元160對(duì)事件進(jìn)行序列化。
[0186](步驟S82)事件傳送管理單元160通過參照查詢配置表121確來定將事件傳送給其的節(jié)點(diǎn)。注意,與圖16的步驟S32和圖18的步驟S72 —樣,事件傳送管理單元160基于被包括在事件中的流名稱來確定用于處理事件的查詢的查詢名稱。負(fù)責(zé)具有所述查詢名稱的查詢的節(jié)點(diǎn)是事件被發(fā)送給其的節(jié)點(diǎn)。事件傳送管理單元160鎖定對(duì)應(yīng)于傳送目標(biāo)節(jié)點(diǎn)的傳送列表。
[0187](步驟S83)事件傳送管理單元160將序列化的事件添加到傳送列表。
[0188](步驟S84)事件傳送管理單元160確定傳送列表的總數(shù)據(jù)大小是否超過或等于閾值。如果總數(shù)據(jù)大小大于或等于閾值,則事件傳送管理單元160將過程移動(dòng)到步驟S85。如果總數(shù)據(jù)大小小于閾值,則事件傳送管理單元160將過程移動(dòng)到步驟S86。注意,可以例如由用戶根據(jù)通信環(huán)境來將閾值設(shè)定為某個(gè)值。
[0189](步驟S85)事件傳送管理單元160將傳送列表中的事件通過網(wǎng)絡(luò)10發(fā)送給傳送目標(biāo)節(jié)點(diǎn)。在這方面,如果其他事件的數(shù)據(jù)存儲(chǔ)在傳送列表中,則也傳送該數(shù)據(jù)。
[0190](步驟S86)事件傳送管理單元160解除對(duì)傳送列表的鎖定。
[0191]因此,事件傳送管理單元160在獲取與未分配給其自身節(jié)點(diǎn)的查詢對(duì)應(yīng)的事件時(shí),將事件傳送給負(fù)責(zé)查詢的節(jié)點(diǎn)。
[0192]圖20示出了查詢狀態(tài)傳送示例的第一部分。圖20示出了具有查詢名稱“Queryl”的查詢從節(jié)點(diǎn)100被重新分配給節(jié)點(diǎn)200的示例。在從管理節(jié)點(diǎn)400接收到指示查詢從節(jié)點(diǎn)100重新分配給節(jié)點(diǎn)200的查詢重新分配指令時(shí),節(jié)點(diǎn)100對(duì)查詢的查詢狀態(tài)進(jìn)行序列化,然后將查詢狀態(tài)添加到傳送列表122。在節(jié)點(diǎn)100處,查詢狀態(tài)被管理成處于傳送中。節(jié)點(diǎn)100保持將待傳送的數(shù)據(jù)添加到傳送列表122 (即,緩沖)直到傳送列表122達(dá)到預(yù)定大小為止。
[0193](I)節(jié)點(diǎn)100在緩沖期間順序地獲取事件α 1、事件α 2和事件α 3。節(jié)點(diǎn)100確認(rèn)事件α 1、事件α 2和事件α 3是與重新分配目標(biāo)查詢對(duì)應(yīng)的事件。
[0194](2)節(jié)點(diǎn)100對(duì)事件α 1、事件α 2和事件α 3進(jìn)行序列化,然后將事件α 1、事件α 2和事件α 3按照順序添加到在傳送列表122中的查詢的列表元素。
[0195]圖21示出了查詢狀態(tài)傳送示例的第二部分。圖21示出了在圖20的處理后的處理。注意,除了上述事件α?、事件α2和事件α 3之外,事件α 4、事件α 5、事件α 6和事件α 7也是待在具有查詢名稱“Queryl”的查詢中使用的事件。
[0196](3)當(dāng)傳送列表122的數(shù)據(jù)大小達(dá)到閾值時(shí),節(jié)點(diǎn)100將傳送列表122的內(nèi)容通過網(wǎng)絡(luò)10發(fā)送給節(jié)點(diǎn)200。此處,事件α 1、事件α 2和事件α 3以及具有查詢名稱“Queryl”的查詢的查詢狀態(tài)一起被發(fā)送。
[0197](4)接下來,節(jié)點(diǎn)100從節(jié)點(diǎn)300獲取事件α 4。該情況在以下時(shí)刻發(fā)生:當(dāng)節(jié)點(diǎn)300在查詢重新分配指令到達(dá)節(jié)點(diǎn)300之前通過網(wǎng)絡(luò)10發(fā)出事件α 4時(shí)。具體地,當(dāng)節(jié)點(diǎn)300發(fā)出事件α 4時(shí),在查詢配置表321中節(jié)點(diǎn)100仍為負(fù)責(zé)對(duì)應(yīng)于事件α 4的查詢的節(jié)點(diǎn)。因此,節(jié)點(diǎn)100需要在比事件α 1、事件α 2和事件α 3的傳送更晚的時(shí)刻來將事件α 4傳送給節(jié)點(diǎn)200。
[0198](5)節(jié)點(diǎn)200在由節(jié)點(diǎn)100傳送的傳送列表122的內(nèi)容到達(dá)節(jié)點(diǎn)200之前獲取事件α 5和事件α 6。在該情況下,節(jié)點(diǎn)200將事件α 5和事件α 6保存作為等待事件。
[0199](6)節(jié)點(diǎn)200從節(jié)點(diǎn)300獲取事件α 7。這樣的情況在以下時(shí)刻發(fā)生:當(dāng)節(jié)點(diǎn)300在查詢重新分配指令到達(dá)節(jié)點(diǎn)300之后通過網(wǎng)絡(luò)10發(fā)出事件α 7時(shí)(也就是說,在節(jié)點(diǎn)300的查詢配置表321中,負(fù)責(zé)對(duì)應(yīng)于事件α 7的查詢的節(jié)點(diǎn)已變?yōu)楣?jié)點(diǎn)200)。
[0200]根據(jù)上述示例,在從節(jié)點(diǎn)100接收到查詢狀態(tài)及事件α 1、事件α 2和事件α 3時(shí),節(jié)點(diǎn)200使用查詢狀態(tài)及事件α 1、事件α 2和事件α 3來執(zhí)行具有查詢名稱“Queryl”的查詢。隨后,節(jié)點(diǎn)200使用作為等待事件的事件α 5和事件α 6來執(zhí)行查詢。此外,節(jié)點(diǎn)200按照到達(dá)的順序使用事件α 4和事件α 7來執(zhí)行查詢。
[0201]因此,事件α 1、事件α 2和事件α 3的處理以及查詢狀態(tài)一起被發(fā)送給節(jié)點(diǎn)200。因此,節(jié)點(diǎn)200在獲取查詢狀態(tài)后能夠使用事件α 1、事件α 2和事件α 3來立即執(zhí)行具有查詢名稱“Queryl”的查詢。也就是說,與事件α 1、事件α 2和事件α 3沒有連同查詢狀態(tài)一起被發(fā)送給節(jié)點(diǎn)200的情況相比,這可以縮短在節(jié)點(diǎn)200處繼續(xù)執(zhí)行查詢的時(shí)間。
[0202]此處注意,根據(jù)第二實(shí)施方式的方法,例如可以按照事件α 1、事件α 2、事件α 3、事件α5、事件α6、事件α 4和事件α 7的順序使用事件來執(zhí)行查詢。另一方面,一些查詢注重事件的時(shí)間順序。例如,有時(shí)存在以下情形:如果事件α 1、事件α 2、事件α 3、事件α4、事件α5、事件α 6和事件α 7以該順序發(fā)生,則希望按照時(shí)間順序使用這些事件來執(zhí)行相應(yīng)的查詢(例如,在嚴(yán)格檢測事件之間的時(shí)間差異的科學(xué)測量的情況下)。鑒于該情況,每個(gè)查詢可用包括對(duì)是否需要嚴(yán)格按照時(shí)間順利使用事件來執(zhí)行查詢或者是否允許按照與時(shí)間順序不同的順序使用事件來執(zhí)行查詢進(jìn)行限定的信息。
[0203]對(duì)于允許按照與時(shí)間順序不同的順序使用事件來執(zhí)行每個(gè)查詢的情形,可以將指示所述情況的注解(即,表示說明性注釋的元數(shù)據(jù),該元數(shù)據(jù)例如為字符串,諸如“0ΧΧΧ”)添加到查詢。例如,如果注解被包括在查詢中,則事件連同查詢狀態(tài)一起以上述方式被傳送。另一方面,如果注解未被包括在查詢中,則例如各個(gè)節(jié)點(diǎn)暫停向負(fù)責(zé)查詢的節(jié)點(diǎn)傳送與查詢對(duì)應(yīng)的所有事件,直到完成查詢狀態(tài)的發(fā)送為止,并且使得負(fù)責(zé)節(jié)點(diǎn)能夠在完成查詢狀態(tài)的傳送后以時(shí)間順序來執(zhí)行事件中的每個(gè)事件。
[0204]以該方式,可以支持通過傳送事件連同查詢狀態(tài)來執(zhí)行查詢的方法和嚴(yán)格按照時(shí)間順序使用事件來執(zhí)行查詢的方法二者。尤其是當(dāng)事件能夠在不考慮事件的時(shí)間順序的情況下被處理時(shí),在不等待尚未到達(dá)的事件(事件α4)的情況下處理等待事件(上述示例中的事件α5和事件α6)。這使得新分配節(jié)點(diǎn)能夠快速繼續(xù)進(jìn)行事件處理。
[0205]此外,當(dāng)事件被附加到查詢狀態(tài)時(shí),在使用等待事件前首先使用附加的事件。以該方式,盡管允許以非時(shí)間順序來處理事件,但是查詢執(zhí)行在某種程度上按照事件的時(shí)間順序來進(jìn)行。這是因?yàn)楦郊拥讲樵儬顟B(tài)的事件更可能在等待事件發(fā)生前被生成。這樣的設(shè)置在以下情形下是有效的:允許在事件發(fā)生的時(shí)間差異相對(duì)較小的情況下攪亂事件的順序,但是不允許在事件發(fā)生的時(shí)間差異相對(duì)較大的情況下攪亂事件的順序。
[0206]注意,對(duì)于圖21中的(4),如果在完成將被包括在傳送列表122中的所有信息發(fā)送給網(wǎng)絡(luò)10之前,事件α4到達(dá)并且已準(zhǔn)備好傳送事件α4,則可以將事件α4的信息插入到所述所有信息中并且被發(fā)出。例如,可以在其他信息之前發(fā)出事件α 4,以使得節(jié)點(diǎn)100為節(jié)點(diǎn)200提供事件α 1、事件α 2、事件α 3和事件α 4以及查詢狀態(tài)。
[0207]圖22是示出查詢重新分配的第一示例的時(shí)序圖。接下來根據(jù)時(shí)序圖中的步驟編號(hào)來描述圖22的處理。
[0208](步驟STlI)管理節(jié)點(diǎn)400向節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300中的每個(gè)節(jié)點(diǎn)發(fā)出將查詢從節(jié)點(diǎn)100重新分配給節(jié)點(diǎn)200的指令。在此時(shí),指令尚未到達(dá)節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300。
[0209](步驟ST12)節(jié)點(diǎn)300獲取新事件(事件發(fā)生在節(jié)點(diǎn)300處)。該新事件是對(duì)應(yīng)于重新分配的查詢的事件。
[0210](步驟ST13)節(jié)點(diǎn)300參照查詢配置表321來確定節(jié)點(diǎn)100是負(fù)責(zé)查詢的節(jié)點(diǎn)。節(jié)點(diǎn)300將所獲取的事件發(fā)送給節(jié)點(diǎn)100。在此時(shí),事件尚未到達(dá)節(jié)點(diǎn)100。
[0211](步驟ST14)節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300中的每個(gè)節(jié)點(diǎn)接收在步驟STll中發(fā)出的指令。節(jié)點(diǎn)100和節(jié)點(diǎn)200分別操縱查詢配置表121和查詢配置表221,以將查詢在狀態(tài)欄中的信息變?yōu)椤罢w移到節(jié)點(diǎn)200”。節(jié)點(diǎn)300在查詢配置表321中將查詢在分配節(jié)點(diǎn)名稱中的信息變?yōu)椤肮?jié)點(diǎn)200”。節(jié)點(diǎn)100對(duì)指定查詢的查詢狀態(tài)進(jìn)行序列化,然后將登記有查詢狀態(tài)的列表元素添加到傳送列表122。隨后,節(jié)點(diǎn)100從節(jié)點(diǎn)300接收對(duì)應(yīng)于查詢的事件。節(jié)點(diǎn)100對(duì)事件進(jìn)行序列化,并且將序列化的事件添加到具有查詢狀態(tài)的列表元素。
[0212](步驟ST15)節(jié)點(diǎn)100保持緩沖,直到傳送列表122的數(shù)據(jù)大小超過或等于閾值為止。
[0213](步驟ST16)當(dāng)傳送列表122的數(shù)據(jù)大小超過或等于閾值時(shí),節(jié)點(diǎn)100將傳送列表122的內(nèi)容發(fā)送給節(jié)點(diǎn)200。在此時(shí),節(jié)點(diǎn)100也發(fā)出在步驟ST14中登記在傳送列表122中的查詢狀態(tài)。
[0214](步驟ST17)節(jié)點(diǎn)100也發(fā)出在步驟ST14中添加到查詢狀態(tài)的事件。
[0215](步驟ST18)在從節(jié)點(diǎn)100接收查詢狀態(tài)時(shí),節(jié)點(diǎn)200對(duì)查詢狀態(tài)進(jìn)行反序列化。在從節(jié)點(diǎn)100接收到附加到查詢狀態(tài)的事件時(shí),節(jié)點(diǎn)200對(duì)事件進(jìn)行反序列化。
[0216](步驟ST19)節(jié)點(diǎn)200將查詢狀態(tài)的遷移完成通知給管理節(jié)點(diǎn)400。
[0217](步驟ST20)節(jié)點(diǎn)200使用在步驟ST18中獲取的查詢狀態(tài)和事件來執(zhí)行從節(jié)點(diǎn)100重新分配給節(jié)點(diǎn)200的查詢。
[0218]如上所述,可以在查詢重新分配指令到達(dá)節(jié)點(diǎn)300前,將對(duì)應(yīng)于重新分配的查詢的事件從節(jié)點(diǎn)300發(fā)送到節(jié)點(diǎn)100。在該情況下,直到新分配節(jié)點(diǎn)200開始使用事件來執(zhí)行重新分配的查詢?yōu)橹沟难舆t時(shí)間(被稱為“事件傳輸延遲”)對(duì)應(yīng)于從步驟ST12的開始到步驟ST18的完成的時(shí)間段。注意,管理節(jié)點(diǎn)400可以在步驟ST19后將查詢重新分配的完成通知給節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300。
[0219]圖23是示出比較性查詢重新分配的第一示例的時(shí)序圖。接下來根據(jù)時(shí)序圖中的步驟編號(hào)來描述圖23的處理。圖23呈現(xiàn)了相對(duì)于圖22的比較示例,其中未采用第二實(shí)施方式的方法。在圖23的描述中,出于描述的目的,用與第二實(shí)施方式的那些參考標(biāo)記相同的參考標(biāo)記來指定各個(gè)節(jié)點(diǎn)。
[0220](步驟ST21)管理節(jié)點(diǎn)400向節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300中的每個(gè)節(jié)點(diǎn)發(fā)出將查詢從節(jié)點(diǎn)100重新分配給節(jié)點(diǎn)200的指令。在此時(shí),指令尚未到達(dá)節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300。
[0221](步驟ST22)節(jié)點(diǎn)300獲取新事件(事件發(fā)生在節(jié)點(diǎn)300處)。該新事件是對(duì)應(yīng)于重新分配的查詢的事件。
[0222](步驟ST23)節(jié)點(diǎn)300確定節(jié)點(diǎn)100是負(fù)責(zé)查詢的節(jié)點(diǎn)。節(jié)點(diǎn)300將獲取的事件發(fā)送給節(jié)點(diǎn)100。在此時(shí),事件未到達(dá)節(jié)點(diǎn)100。
[0223](步驟ST24)節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300中的每個(gè)節(jié)點(diǎn)接收步驟ST21中發(fā)出的指令。節(jié)點(diǎn)100對(duì)指定查詢的查詢狀態(tài)進(jìn)行序列化,然后將序列化的查詢狀態(tài)添加到傳送數(shù)據(jù)。隨后,節(jié)點(diǎn)100從節(jié)點(diǎn)300接收對(duì)應(yīng)于查詢的事件。
[0224](步驟ST25)節(jié)點(diǎn)100保持緩沖,直到傳送數(shù)據(jù)的數(shù)據(jù)大小超過或等于閾值為止。
[0225](步驟ST26)當(dāng)傳送數(shù)據(jù)的數(shù)據(jù)大小超過或等于閾值時(shí),節(jié)點(diǎn)100將傳送數(shù)據(jù)的內(nèi)容發(fā)送給節(jié)點(diǎn)200。傳送數(shù)據(jù)包括重新分配的查詢的查詢狀態(tài),但是不包括在步驟ST24中接收的事件。
[0226](步驟ST27)在從節(jié)點(diǎn)100接收到查詢狀態(tài)時(shí),節(jié)點(diǎn)200對(duì)查詢狀態(tài)進(jìn)行反序列化。
[0227](步驟ST28)節(jié)點(diǎn)200向管理節(jié)點(diǎn)400通知查詢狀態(tài)的遷移已完成。
[0228](步驟ST29)管理節(jié)點(diǎn)400向節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300中的每個(gè)通知查詢重新分配已完成。節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300單獨(dú)地接收所述通知。
[0229](步驟ST30)節(jié)點(diǎn)100將從節(jié)點(diǎn)300接收的事件傳送給負(fù)責(zé)查詢的新分配的節(jié)點(diǎn)200 (注意,還針對(duì)該事件進(jìn)行序列化和緩沖)。在從節(jié)點(diǎn)100接收到事件后,節(jié)點(diǎn)200對(duì)事件進(jìn)行反序列化。
[0230](步驟ST31)節(jié)點(diǎn)200使用從步驟ST27獲取的查詢狀態(tài)和在步驟ST30中獲得的事件來將查詢從節(jié)點(diǎn)100重新分配給節(jié)點(diǎn)200。
[0231]在上述比較示例的情況下,直到節(jié)點(diǎn)200結(jié)束接收已在節(jié)點(diǎn)300處發(fā)生的事件為止的事件傳輸延遲對(duì)應(yīng)于從步驟ST22的開始到步驟ST30的完成的時(shí)間段。根據(jù)比較示例,與圖22的情況相比,事件傳輸延遲由于與從步驟ST28到步驟ST30對(duì)應(yīng)的額外時(shí)間段而更長。尤其是,盡管未在圖23中示出,但是步驟ST30與步驟ST24至步驟ST26的情況一樣包括多個(gè)處理階段,例如鎖定等待、緩沖、傳輸、反序列化、登記,以及解除等待的鎖定。因此,比較示例的事件傳輸延遲也包括用于處理這些階段的延遲。
[0232]另一方面,在圖22的情況下,與步驟ST28至步驟ST30對(duì)應(yīng)的延遲時(shí)間被消除。因此,與比較示例相比,在圖22的情況下可以縮短在節(jié)點(diǎn)200處繼續(xù)執(zhí)行重新分配查詢的延遲。
[0233]注意,如果在步驟ST24和步驟ST25中傳送數(shù)據(jù)的數(shù)據(jù)大小未達(dá)到閾值,則在步驟ST26中,自節(jié)點(diǎn)300發(fā)送的事件可以連同查詢狀態(tài)一起被傳送給節(jié)點(diǎn)200。然而,應(yīng)注意,在比較示例的情況下,傳送數(shù)據(jù)僅被緩沖。也就是說,與第二實(shí)施方式不同,查詢狀態(tài)和事件沒有利用傳送數(shù)據(jù)管理結(jié)構(gòu)D來管理為完整的實(shí)體。因此,將彼此沒有關(guān)聯(lián)的查詢狀態(tài)和事件從節(jié)點(diǎn)100被傳送給節(jié)點(diǎn)200。在該情況下,節(jié)點(diǎn)200可能涉及與針對(duì)查詢狀態(tài)和與該查詢狀態(tài)有關(guān)的數(shù)據(jù)來搜索所接收的數(shù)據(jù)相關(guān)聯(lián)的計(jì)算成本和延遲。計(jì)算成本和延遲是改進(jìn)的目標(biāo)。
[0234]另一方面,在圖22的情況下,使用傳送數(shù)據(jù)管理結(jié)構(gòu)D對(duì)查詢狀態(tài)和事件一起進(jìn)行管理。這使得查詢狀態(tài)和事件能夠從節(jié)點(diǎn)100順序地被傳送。在對(duì)接收數(shù)據(jù)進(jìn)行反序列化時(shí),節(jié)點(diǎn)200緊接在提取查詢狀態(tài)之后提取事件,從而確定事件與緊接在其之前的查詢狀態(tài)相關(guān)聯(lián)。也就是說,可以通過使得節(jié)點(diǎn)200能夠有效地獲取查詢狀態(tài)和事件來使得繼續(xù)執(zhí)行重新分配的查詢的延遲進(jìn)一步被減小(即,可以改善上述計(jì)算成本和延遲)。因此,優(yōu)選的是從節(jié)點(diǎn)100順序地傳送查詢狀態(tài)和事件。
[0235]圖24是示出查詢重新分配的第二示例的時(shí)序圖。接下來根據(jù)時(shí)序圖中的步驟編號(hào)來描述圖24的處理。
[0236](步驟ST41)管理節(jié)點(diǎn)400向節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300中的每個(gè)節(jié)點(diǎn)發(fā)出將查詢從節(jié)點(diǎn)100重新分配給節(jié)點(diǎn)200的指令。
[0237](步驟ST42)節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300中的每個(gè)節(jié)點(diǎn)接收在步驟ST41發(fā)出的指令。節(jié)點(diǎn)100和節(jié)點(diǎn)200分別操縱查詢配置表121和查詢配置表221,以將查詢在狀態(tài)欄中的信息變?yōu)椤罢w移到節(jié)點(diǎn)200”。節(jié)點(diǎn)300在查詢配置表321中將查詢在分配節(jié)點(diǎn)名稱中的信息變?yōu)椤肮?jié)點(diǎn)200”。節(jié)點(diǎn)100對(duì)指定查詢的查詢狀態(tài)進(jìn)行序列化,然后將查詢狀態(tài)添加到傳送列表122。
[0238](步驟ST43)節(jié)點(diǎn)300獲取新事件(事件發(fā)生在節(jié)點(diǎn)300處)。該新事件是對(duì)應(yīng)于重新分配的查詢的事件。
[0239](步驟ST44)節(jié)點(diǎn)300參照查詢配置表321,以確定節(jié)點(diǎn)200是負(fù)責(zé)查詢的節(jié)點(diǎn)。節(jié)點(diǎn)300將獲取的事件發(fā)送給節(jié)點(diǎn)200。隨后,節(jié)點(diǎn)200接收事件,然后對(duì)所接收的事件進(jìn)行反序列化。節(jié)點(diǎn)200將事件作為重新分配的查詢的等待事件登記在查詢配置表221中。這是因?yàn)?,在?jié)點(diǎn)200的查詢配置表221中,“正遷移到其自身節(jié)點(diǎn)(在該情況下的節(jié)點(diǎn)200) ”被設(shè)定在與從節(jié)點(diǎn)300接收的事件對(duì)應(yīng)的查詢的狀態(tài)欄下的字段中。
[0240](步驟ST45)節(jié)點(diǎn)100保持緩沖直到傳送列表122的數(shù)據(jù)大小超過或等于閾值為止。
[0241](步驟ST46)當(dāng)傳送列表122的數(shù)據(jù)大小超過或等于閾值時(shí),節(jié)點(diǎn)100將傳送列表122的內(nèi)容發(fā)送給節(jié)點(diǎn)200。
[0242](步驟ST47)在從節(jié)點(diǎn)100接收到查詢狀態(tài)時(shí),節(jié)點(diǎn)200對(duì)查詢狀態(tài)進(jìn)行反序列化。
[0243](步驟ST48)節(jié)點(diǎn)200向管理節(jié)點(diǎn)400通知已完成查詢狀態(tài)的遷移。
[0244](步驟ST49)節(jié)點(diǎn)200使用在步驟ST46中獲取的查詢狀態(tài)和在步驟ST44中獲取的事件(等待事件)來執(zhí)行從節(jié)點(diǎn)100重新分配給節(jié)點(diǎn)200的查詢。
[0245]如上所述,可以緊接在查詢重新分配指令到達(dá)節(jié)點(diǎn)300后將對(duì)應(yīng)于重新分配的查詢的事件從節(jié)點(diǎn)300發(fā)送給節(jié)點(diǎn)200。在該情況下,事件傳輸延遲對(duì)應(yīng)于從步驟ST43的開始到步驟ST47的完成的時(shí)間段。注意,管理節(jié)點(diǎn)400可以在步驟ST48后向節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300通知查詢重新分配完成。
[0246]圖25是示出比較性查詢重新分配的第二示例的時(shí)序圖。接下來根據(jù)時(shí)序圖中的步驟編號(hào)來描述圖25的處理。圖25呈現(xiàn)了相對(duì)于圖24的比較示例,其中未采用第二實(shí)施方式的方法。在圖25的描述中,出于描述的目的,用與第二實(shí)施方式的那些附圖標(biāo)記相同的附圖標(biāo)記來指定各個(gè)節(jié)點(diǎn)。
[0247](步驟ST51)管理節(jié)點(diǎn)400向節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300中的每個(gè)節(jié)點(diǎn)發(fā)出將查詢從節(jié)點(diǎn)100重新分配給節(jié)點(diǎn)200的指令。
[0248](步驟ST52)節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300中的每個(gè)節(jié)點(diǎn)接收在步驟ST51發(fā)出的指令。節(jié)點(diǎn)100對(duì)指定查詢的查詢狀態(tài)進(jìn)行序列化,然后將查詢狀態(tài)添加到傳送數(shù)據(jù)。
[0249](步驟ST53)節(jié)點(diǎn)300獲取新事件(事件發(fā)生在節(jié)點(diǎn)300處)。該新事件是對(duì)應(yīng)于重新分配的查詢的事件。節(jié)點(diǎn)300在檢測到事件對(duì)應(yīng)于重新分配的查詢后,拒絕將該事件提供給負(fù)責(zé)查詢的節(jié)點(diǎn)。
[0250](步驟ST54)節(jié)點(diǎn)100保持緩沖直到傳送數(shù)據(jù)的數(shù)據(jù)大小超過或等于閾值為止。
[0251](步驟ST55)當(dāng)傳送數(shù)據(jù)的數(shù)據(jù)大小超過或等于閾值時(shí),節(jié)點(diǎn)100將傳送數(shù)據(jù)的內(nèi)容發(fā)送給節(jié)點(diǎn)200。傳送數(shù)據(jù)包括查詢狀態(tài)。
[0252](步驟ST56)節(jié)點(diǎn)200在從節(jié)點(diǎn)100接收到查詢狀態(tài)時(shí),對(duì)查詢狀態(tài)進(jìn)行反序列化。
[0253](步驟ST57)節(jié)點(diǎn)200向管理節(jié)點(diǎn)400通知查詢狀態(tài)的遷移完成。
[0254](步驟ST58)管理節(jié)點(diǎn)400向節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300中的每個(gè)節(jié)點(diǎn)通知查詢重新分配的完成。節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300單獨(dú)地接收通知。
[0255](步驟ST59)節(jié)點(diǎn)300確定在步驟ST53中獲取的事件的目標(biāo)節(jié)點(diǎn)是節(jié)點(diǎn)200。節(jié)點(diǎn)300將事件傳送給節(jié)點(diǎn)200 (注意,序列化和緩沖也針對(duì)所述事件進(jìn)行)。節(jié)點(diǎn)200在從節(jié)點(diǎn)300接收到事件時(shí),對(duì)事件進(jìn)行反序列化。
[0256](步驟ST60)節(jié)點(diǎn)200使用在步驟ST56中獲取的查詢狀態(tài)和在步驟ST59中獲取的事件來執(zhí)行從節(jié)點(diǎn)100重新分配給節(jié)點(diǎn)200的查詢。
[0257]在上述比較示例的情況下,在節(jié)點(diǎn)200結(jié)束接收在節(jié)點(diǎn)300處已經(jīng)發(fā)生的事件之前的事件傳輸延遲對(duì)應(yīng)于從步驟ST53的開始到步驟ST59的完成的時(shí)間段。根據(jù)比較示例,與圖24的情況相比,事件傳輸延遲由于對(duì)應(yīng)于步驟ST57至步驟ST59的額外時(shí)間段而更長。尤其是,盡管未在圖25中示出,但是與步驟ST52至步驟ST56的情況一樣,步驟ST59包括多個(gè)處理階段,例如鎖定等待、緩沖、傳輸、反序列化、登記,以及解除等待的鎖定。因此,比較示例的事件傳輸延遲也包括用于處理這些階段的延遲。
[0258]另一方面,在圖24的情況下,在步驟ST44中允許將事件從節(jié)點(diǎn)300傳送到節(jié)點(diǎn)200,并且節(jié)點(diǎn)200將事件作為等待事件來管理。因此,消除了對(duì)應(yīng)于步驟ST57至步驟ST59的延遲時(shí)間。也就是說,與比較示例相比,可以縮短在節(jié)點(diǎn)200處繼續(xù)執(zhí)行重新分配的查詢的延遲。
[0259]圖26示出了分布式處理系統(tǒng)的另一示例。圖2示出了使用服務(wù)器計(jì)算機(jī)(物理機(jī))來實(shí)現(xiàn)節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300的示例。另一方面,可以通過虛擬機(jī)來實(shí)現(xiàn)每個(gè)節(jié)點(diǎn)。例如,服務(wù)器51、服務(wù)器52和服務(wù)器53連接到網(wǎng)絡(luò)10。注意,圖26省略了網(wǎng)絡(luò)20和其他設(shè)備的圖示。
[0260]例如,服務(wù)器51、服務(wù)器52和服務(wù)器53執(zhí)行被稱為管理程序或虛擬機(jī)監(jiān)測器的監(jiān)管軟件,并且將設(shè)置在服務(wù)器51、服務(wù)器52和服務(wù)器53中的資源(例如CPU和RAM)分配給服務(wù)器51、服務(wù)器52和服務(wù)器53上的多個(gè)虛擬機(jī)。例如,服務(wù)器51包括虛擬機(jī)100a、虛擬機(jī)200a和虛擬機(jī)300a。
[0261]可以將虛擬機(jī)100a、虛擬機(jī)200a和虛擬機(jī)300a用作為用于分布式處理的節(jié)點(diǎn)。例如,虛擬機(jī)10a能夠?qū)崿F(xiàn)與節(jié)點(diǎn)100相同的功能。虛擬機(jī)200a能夠?qū)崿F(xiàn)與節(jié)點(diǎn)200相同的功能。虛擬機(jī)300a能夠?qū)崿F(xiàn)與節(jié)點(diǎn)300相同的功能。注意,可以將物理機(jī)和虛擬機(jī)二者用作為用于分布式處理的節(jié)點(diǎn)。同樣,在使用虛擬機(jī)100a、虛擬機(jī)200a和虛擬機(jī)300a來進(jìn)行分布式處理的情況下,可以縮短在新分配的目標(biāo)節(jié)點(diǎn)處繼續(xù)執(zhí)行查詢的延遲。也就是說,節(jié)點(diǎn)100、節(jié)點(diǎn)200和節(jié)點(diǎn)300是第一實(shí)施方式的機(jī)器(物理機(jī))的示例。虛擬機(jī)100a、虛擬機(jī)200a和虛擬機(jī)300a是第一實(shí)施方式的機(jī)器(虛擬機(jī))的示例。
[0262]在上述示例中,每個(gè)查詢被分配給節(jié)點(diǎn)。然而,可以基于查詢和被包括在對(duì)應(yīng)于查詢的每個(gè)事件中的預(yù)定關(guān)鍵字來進(jìn)行查詢分配。有時(shí)存在以下情形:對(duì)于一個(gè)查詢而言,希望根據(jù)關(guān)鍵字來分配不同的節(jié)點(diǎn)。例如,假設(shè)每個(gè)事件包括指示事件已發(fā)生的多個(gè)區(qū)域之一的信息(關(guān)鍵字),并且希望不同的節(jié)點(diǎn)負(fù)責(zé)區(qū)域中的每個(gè)區(qū)域。在該情況下,在查詢配置表121、查詢配置表221和查詢配置表321中,以與成對(duì)的查詢和關(guān)鍵字相關(guān)聯(lián)的方式來管理每個(gè)分配節(jié)點(diǎn)名稱。同樣,在該情況下,上述同樣的方法可以通過為每個(gè)查詢和關(guān)鍵字對(duì)指定查詢名稱來應(yīng)用。
[0263]注意,通過使得計(jì)算單元Ib執(zhí)行程序來實(shí)現(xiàn)第一實(shí)施方式的信息處理。同樣,通過使得處理器101執(zhí)行程序來實(shí)現(xiàn)第二實(shí)施方式的信息處理。程序可以記錄在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)(例如,光盤13、存儲(chǔ)裝置14,或存儲(chǔ)卡16)中。
[0264]例如,記錄有程序的存儲(chǔ)介質(zhì)是分布式的,以便分發(fā)程序。此外,可以將程序存儲(chǔ)在不同的計(jì)算機(jī)中,然后經(jīng)由網(wǎng)絡(luò)分發(fā)。計(jì)算機(jī)將記錄在存儲(chǔ)介質(zhì)中或從不同的計(jì)算機(jī)接收的程序存儲(chǔ)或安裝在存儲(chǔ)裝置(例如RAM 102和HDD 103)中,并且從存儲(chǔ)裝置讀取程序以執(zhí)行所述程序。
[0265]根據(jù)一個(gè)方面,可以縮短在新分配的目標(biāo)節(jié)點(diǎn)處繼續(xù)進(jìn)行處理的延遲。
【權(quán)利要求】
1.一種在包括第一計(jì)算機(jī)和第二計(jì)算機(jī)的系統(tǒng)中執(zhí)行的數(shù)據(jù)處理管理方法,所述數(shù)據(jù)處理管理方法包括: 所述第一計(jì)算機(jī)在接收到將由所述第一計(jì)算機(jī)執(zhí)行的處理重新分配給所述第二計(jì)算機(jī)的指令時(shí),將所述處理的進(jìn)度信息傳送給所述第二計(jì)算機(jī);以及 所述第一計(jì)算機(jī)在傳送所述進(jìn)度信息期間接收到與所述處理相關(guān)聯(lián)的數(shù)據(jù)時(shí),將所述數(shù)據(jù)傳送給所述第二計(jì)算機(jī)。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)處理管理方法,還包括: 所述第二計(jì)算機(jī)在所述進(jìn)度信息到達(dá)之前接收到與所述處理相關(guān)聯(lián)的不同的數(shù)據(jù)時(shí),保存所述不同的數(shù)據(jù)。
3.根據(jù)權(quán)利要求2所述的數(shù)據(jù)處理管理方法,還包括: 所述第二計(jì)算機(jī)在接收到所述進(jìn)度信息時(shí),即使在所述不同的數(shù)據(jù)生成之前已經(jīng)產(chǎn)生的并且與所述處理相關(guān)聯(lián)的數(shù)據(jù)尚未到達(dá)所述第二計(jì)算機(jī)處的情況下,仍使用所述進(jìn)度信息和所述不同的數(shù)據(jù)來執(zhí)行所述處理。
4.根據(jù)權(quán)利要求2和3中的任一項(xiàng)所述的數(shù)據(jù)處理管理方法,還包括: 所述第二計(jì)算機(jī)在接收到所述進(jìn)度信息和所述數(shù)據(jù)時(shí),使用所述進(jìn)度信息和所述數(shù)據(jù)來執(zhí)行所述處理,并且隨后使用所述不同的數(shù)據(jù)來執(zhí)行所述處理。
5.根據(jù)權(quán)利要求1至4中的任一項(xiàng)所述的數(shù)據(jù)處理管理方法,其中: 所述第一計(jì)算機(jī)順序地傳送所述進(jìn)度信息和所述數(shù)據(jù)。
6.根據(jù)權(quán)利要求1至5中的任一項(xiàng)所述的數(shù)據(jù)處理管理方法,還包括: 所述第一計(jì)算機(jī)在接收到所述指令時(shí),停止對(duì)所述處理的執(zhí)行;以及 所述第二計(jì)算機(jī)使用所述進(jìn)度信息和所述數(shù)據(jù)來繼續(xù)執(zhí)行所述處理。
7.—種信息處理設(shè)備,包括: 存儲(chǔ)裝置,所述存儲(chǔ)裝置用于存儲(chǔ)由所述信息處理設(shè)備執(zhí)行的處理的進(jìn)度信息;以及 計(jì)算裝置,所述計(jì)算裝置用于 當(dāng)接收到將所述處理重新分配給不同的信息處理設(shè)備的指令時(shí),將所述進(jìn)度信息傳送給所述不同的信息處理設(shè)備,以及 當(dāng)在傳送所述進(jìn)度信息期間接收到與所述處理相關(guān)聯(lián)的數(shù)據(jù)時(shí),將所述數(shù)據(jù)傳送給所述不同的信息處理設(shè)備。
【文檔編號(hào)】G06F9/46GK104516776SQ201410522191
【公開日】2015年4月15日 申請(qǐng)日期:2014年9月30日 優(yōu)先權(quán)日:2013年10月7日
【發(fā)明者】今村信貴 申請(qǐng)人:富士通株式會(huì)社