本公開涉及用于管理包括與分析學相關(guān)的網(wǎng)絡(luò)管理數(shù)據(jù)庫的計算機網(wǎng)絡(luò)的計算機和計算機實現(xiàn)的技術(shù)。本公開更具體地涉及用于處理網(wǎng)絡(luò)管理數(shù)據(jù)的連續(xù)查詢而不暫停和重新配置當前所執(zhí)行的查詢的技術(shù)。
背景技術(shù):
可以追求本節(jié)中描述的方法,但不一定是先前已經(jīng)構(gòu)想或追求的方法。因此,除非本文另有指示,否則本部分中描述的方法不是本申請中的權(quán)利要求的現(xiàn)有技術(shù),并且不因包括在本部分中而被承認為現(xiàn)有技術(shù)。
數(shù)據(jù)通信網(wǎng)絡(luò)可以包括一個或多個計算節(jié)點。每個節(jié)點可以接收和處理根據(jù)特定模式的無限的流數(shù)據(jù)。模式可以在數(shù)據(jù)流中定義內(nèi)容和/或內(nèi)容的格式。每個節(jié)點可以根據(jù)模式將結(jié)果發(fā)送到一個或多個下游節(jié)點、持久性存儲設(shè)備和/或一些其他接收設(shè)備。
在現(xiàn)代數(shù)據(jù)驅(qū)動系統(tǒng)中,數(shù)據(jù)流的模式或格式可以隨意改變。例如,網(wǎng)絡(luò)數(shù)據(jù)流的模式可以包括網(wǎng)絡(luò)上每個關(guān)鍵任務(wù)設(shè)備的頻繁狀態(tài)報告,該頻繁狀態(tài)報告包括設(shè)備的互聯(lián)網(wǎng)協(xié)議地址和時間戳,并且模式可以改變?yōu)榘總€設(shè)備上的功耗、CPU使用和可用存儲器。
數(shù)據(jù)流模式的改變可能導致節(jié)點停止。然而,某些情況會要求節(jié)點保持處理,在這種情況下,則不允許暫停或重新配置該節(jié)點以利用模式改變。
附圖說明
在附圖中:
圖1示出了示例實施例中的一個或多個類型的多個記錄。
圖2示出了在示例實施例中用于處理來自多個源的不同類型和子類型的流輸入數(shù)據(jù)而不暫停一個或多個節(jié)點的系統(tǒng)。
圖3示出了在一個示例實施例中用于處理多個記錄類型的流程。
圖4示出了可以在其上實現(xiàn)實施例的計算機系統(tǒng)。
雖然出于示出清楚示例的目的,每個附圖示出了特定實施例,但是其他實施例可以省略、添加、重新排序和/或修改附圖中所示的任何元件。出于示出清楚示例的目的,可以參考一個或多個其他附圖來描述一個或多個附圖,但是在其他實施例中不要求使用在一個或多個其他附圖中示出的特定布置。
具體實施方式
描述了用于在一個或多個網(wǎng)絡(luò)上分發(fā)和處理獨立數(shù)據(jù)流的技術(shù)。在下面的描述中,出于解釋的目的,闡述了許多具體細節(jié)以便提供對本公開的透徹理解。然而,對本領(lǐng)域技術(shù)人員顯而易見的是,本公開可以在沒有這些具體細節(jié)的情況下實踐。在其他實例中,以框圖形式示出了公知的結(jié)構(gòu)和設(shè)備,以避免不必要地模糊本公開。
本文根據(jù)以下概述描述了實施例:
1.0概覽
2.0結(jié)構(gòu)和功能概覽
2.1子類型、超類型、子集和超集
2.1.1子類型、超類型、子集和超集
2.1.2子類型到超類型的轉(zhuǎn)換實例
2.2示例系統(tǒng)拓撲
2.2.1路由模塊
2.2.2節(jié)點
2.2.3源
2.2.4記錄存儲
3.0流程概覽
3.1接收連續(xù)查詢
3.2基于連續(xù)查詢生成、實例化和/或初始化節(jié)點
3.3確定子類型
3.4處理記錄
3.5轉(zhuǎn)換記錄而不暫停節(jié)點
3.6處理被轉(zhuǎn)換的記錄而不暫停節(jié)點
3.7處理新的、后定義的類型的記錄,而不暫停節(jié)點
4.0實現(xiàn)機制-硬件概覽
5.0擴展和替代
1.0概覽
在實施例中,一種計算機系統(tǒng)包括:第一節(jié)點計算機,其包括被配置為基于第一操作處理一個或多個第一類型記錄的第一處理器和第一存儲器;第二節(jié)點計算機,其包括被配置為基于第二操作處理一個或多個第二類型記錄的第二處理器和第二存儲器;路由計算機,其包括被配置為執(zhí)行以下操作的處理器、存儲器和路由模塊:從第一源計算機接收包括一個或多個第一字段的第一記錄;響應(yīng)于確定第一記錄是第一類型并且第一節(jié)點計算機與第一類型相關(guān)聯(lián),向第一節(jié)點計算機發(fā)送第一記錄以被處理;從第二源計算機接收包括一個或多個第一字段和一個或多個第二字段的第二記錄;響應(yīng)于確定第二記錄是第二類型并且第二節(jié)點計算機與第二類型相關(guān)聯(lián),向第二節(jié)點計算機發(fā)送第二記錄以被處理;響應(yīng)于確定第二類型是第一類型的第一子類型,將第二記錄發(fā)送到第一節(jié)點計算機以被處理,而不暫停和重新配置第一節(jié)點計算機。
在實施例中,一種方法包括:從第一源計算機接收包括一個或多個第一字段的第一記錄;響應(yīng)于確定第一記錄是第一類型并且第一節(jié)點與第一類型相關(guān)聯(lián),向第一節(jié)點發(fā)送第一記錄以被處理;從第二源計算機接收包括一個或多個第一字段和一個或多個第二字段的第二記錄;響應(yīng)于確定第二記錄是第二類型并且第二節(jié)點計算機與第二類型相關(guān)聯(lián),向第二節(jié)點發(fā)送第二記錄以被處理;響應(yīng)于確定第二類型是第一類型的第一子類型,將第二記錄發(fā)送到第一節(jié)點以被處理,而不暫停和重新配置第一節(jié)點計算機。
在實施例中,該方法包括:響應(yīng)于確定第一記錄是第一類型并且第一節(jié)點與第一類型相關(guān)聯(lián),用第一記錄向第一節(jié)點發(fā)送第一簽名;響應(yīng)于確定第二記錄是第二類型并且第二節(jié)點與第二類型相關(guān)聯(lián),用第二記錄向第一節(jié)點發(fā)送第二簽名;響應(yīng)于確定第二類型是第一類型的第一子類型,用第二記錄向第一節(jié)點發(fā)送第一簽名。
在實施例中,該方法包括:根據(jù)一個或多個第一索引來組織第一記錄中的一個或多個第一字段;根據(jù)一個或多個第一索引來組織第二記錄中的一個或多個第一字段;根據(jù)一個或多個第二索引來組織第二記錄中的一個或多個第二字段,其中在一個或多個第一索引中的每個索引引用在由一個或多個第二索引中的每個索引引用的存儲器地址之前的存儲器地址。
在實施例中,該方法包括:從第三源計算機接收包括一個或多個第一字段、一個或多個第二字段以及一個或多個第三字段的第三記錄;響應(yīng)于確定第三記錄是第三類型并且第三節(jié)點與第三類型相關(guān)聯(lián),向第三節(jié)點發(fā)送第三記錄以被處理;響應(yīng)于確定第三類型是第二類型的第二子類型,向第二節(jié)點發(fā)送第三記錄以被處理,而不暫停和重新配置第二節(jié)點;響應(yīng)于確定第二類型是第一類型的第一子類型,將第三記錄發(fā)送到第一節(jié)點以被處理,而不暫停和重新配置第一節(jié)點。
2.0結(jié)構(gòu)和功能概覽
數(shù)據(jù)通信網(wǎng)絡(luò)可以包括一個或多個計算節(jié)點。每個節(jié)點可以接收和處理根據(jù)特定模式的無限流數(shù)據(jù)。模式可以在數(shù)據(jù)流中定義內(nèi)容和/或內(nèi)容的格式。每個節(jié)點可以根據(jù)模式將結(jié)果發(fā)送到一個或多個下游節(jié)點、持久性存儲設(shè)備和/或一些其他接收設(shè)備。
暫停節(jié)點可能導致許多問題。暫??梢园ㄍV构?jié)點和/或使節(jié)點停止處理一個或多個輸入數(shù)據(jù)流。例如,節(jié)點可以處理時間關(guān)鍵型數(shù)據(jù)(例如,聯(lián)網(wǎng)、電力或火箭遙測數(shù)據(jù))。如果節(jié)點被暫停,則下游節(jié)點或設(shè)備可能無法正確地執(zhí)行其功能,或者可能因為缺少被暫停的節(jié)點接收的數(shù)據(jù)中導出誤導數(shù)據(jù)。例如,下游節(jié)點或設(shè)備可以確定網(wǎng)絡(luò)已中斷或火箭已失去聯(lián)系,然而,未由被暫停的節(jié)點處理的數(shù)據(jù)可能指示網(wǎng)絡(luò)與一個或多個其他網(wǎng)絡(luò)具有良好的連接,或者火箭正在任務(wù)參數(shù)內(nèi)執(zhí)行。
暫停節(jié)點可能導致專用于該節(jié)點的大量儲備資源或數(shù)據(jù)丟失。例如,節(jié)點可以處理連續(xù)遞送大量數(shù)據(jù)的數(shù)據(jù)流。如果節(jié)點被暫停,則大量的數(shù)據(jù)可能開始積累,其可能需要被存儲在大型持久性數(shù)據(jù)存儲設(shè)備中。即使未處理的數(shù)據(jù)存儲在大型持久性數(shù)據(jù)存儲設(shè)備中,數(shù)據(jù)仍然可能丟失。例如,如果節(jié)點脫機時間過長,則數(shù)據(jù)存儲設(shè)備的容量會被填滿。因此,可能不對新數(shù)據(jù)進行存儲,或者可能刪除較舊的未處理數(shù)據(jù)來為新接收的數(shù)據(jù)騰出空間。此外,如果接收到的數(shù)據(jù)的帶寬大于持久性存儲設(shè)備的帶寬,則在易失性緩沖中等待被寫入持久性存儲設(shè)備時,一些數(shù)據(jù)可能丟失或重寫。
暫停節(jié)點可能導致一個或多個數(shù)據(jù)源失效。例如,如果因為接收節(jié)點被暫停,數(shù)據(jù)源接收到異常錯誤,則該數(shù)據(jù)源可能退出。因此,即使被暫停的節(jié)點恢復處理,數(shù)據(jù)源可能已經(jīng)終止。
在現(xiàn)代數(shù)據(jù)驅(qū)動系統(tǒng)中,數(shù)據(jù)流的模式或格式可以隨意改變。例如,網(wǎng)絡(luò)數(shù)據(jù)流的模式可以包括網(wǎng)絡(luò)上每個關(guān)鍵任務(wù)設(shè)備的頻繁狀態(tài)報告,該頻繁狀態(tài)報告包括設(shè)備的互聯(lián)網(wǎng)協(xié)議地址和時間戳,并且模式可以改變?yōu)榘總€設(shè)備上的功耗、CPU使用和可用存儲器。
響應(yīng)于模式的改變,可以暫停、重新配置和恢復節(jié)點。繼續(xù)前面的示例,如果管理該節(jié)點的數(shù)據(jù)使用者希望處理和/或使用數(shù)據(jù)流中的新數(shù)據(jù)(每個設(shè)備上的功耗、CPU使用和可用存儲器),則管理員可以暫停節(jié)點、重新配置節(jié)點以使用新數(shù)據(jù),然后恢復節(jié)點。在該節(jié)點離線時發(fā)送的數(shù)據(jù)可能會丟失,或者有可能被存儲在持久性存儲設(shè)備中(在該節(jié)點重新上線時)。
節(jié)點恢復處理后,節(jié)點可能不會立即開始處理最新的數(shù)據(jù)。繼續(xù)前面的示例,當被重新配置的節(jié)點恢復時,節(jié)點可以首先處理存儲在持久性存儲設(shè)備中的數(shù)據(jù),同時新接收的數(shù)據(jù)可以繼續(xù)存儲在持久性存儲設(shè)備中或丟失。例如,如果持久性存儲設(shè)備的帶寬不足以支持該節(jié)點請求的讀取和來自數(shù)據(jù)流的寫入,則數(shù)據(jù)流中的數(shù)據(jù)可能會丟失,而節(jié)點處理來自持久性存儲設(shè)備的數(shù)據(jù)。
如上所述,數(shù)據(jù)流模式的改變可能導致節(jié)點被暫停,繼而可能導致許多問題,并且可能容易出錯。此外,一些情形會要求節(jié)點保持處理,在這種情況下,則不允許暫停或重新配置節(jié)點以利用模式改變。因此,優(yōu)雅和高效地支持模式改變而不停機是非常有價值的。
本文討論一個或多個系統(tǒng)和方法以處理符合改變模式的輸入數(shù)據(jù)流而不暫停和/或重新配置運行的節(jié)點。暫停節(jié)點可以指停止節(jié)點處理和/或執(zhí)行基于第一類型記錄的一個或多個連續(xù)查詢。連續(xù)查詢可以包括一個或多個連續(xù)的查詢、子查詢、在連續(xù)查詢中定義的操作、和/或在連續(xù)查詢中定義的子操作。重新配置節(jié)點可以指暫停節(jié)點和/或使得節(jié)點來執(zhí)行和/或處理基于第二不同類型的記錄的一個或多個新的連續(xù)查詢,其中,第二類型記錄是第一類型記錄的子類型。附加地或可選地,重新配置節(jié)點可以指使得節(jié)點執(zhí)行和/或處理一個或多個新的連續(xù)查詢,其中新的連續(xù)查詢執(zhí)行一個或多個第一連續(xù)查詢的功能的超集。
數(shù)據(jù)流可以包括隨時間發(fā)送的一個或多個記錄??梢愿鶕?jù)模式來組織數(shù)據(jù)流中的記錄。根據(jù)第一模式組織的記錄可以被稱為“第一類型”或“第一類型記錄”。根據(jù)第二模式組織的記錄可以被稱為“第二類型”或“第二類型記錄”。
本文討論了針對第一節(jié)點的一種或多種系統(tǒng)和方法,被配置為處理第一類型記錄,并且還處理第二類型記錄,而不暫停和/或重新配置第一節(jié)點。例如,第二類型記錄可以被轉(zhuǎn)換為第一類型記錄并由第一節(jié)點處理,而不暫停和/或重新配置第一節(jié)點。因此,本文討論一個或多個系統(tǒng)和方法以將第二類型記錄轉(zhuǎn)換為第一類型記錄,并且如同該第二記錄原本作為第一類型記錄被接收一樣對該第二類型記錄進行處理。
2.1記錄和類型
記錄可以包括一個或多個字段。記錄還可以包括明確的簽名?!翱铡庇涗洸话鞔_的簽名??沼涗浛梢缘槐匕[含簽名。簽名可以包括將該記錄標識為特定類型記錄的一個或多個值和/或數(shù)據(jù)結(jié)構(gòu)。本文所討論的一個或多個系統(tǒng)和/或方法可以將簽名附加到記錄后面和/或前面,使得該記錄不再是空記錄。
圖1示出了示例實施例中的一個或多個類型的多個記錄。在圖1中,記錄110是示例第一類型記錄,并且包括簽名112和字段114A。簽名112可以將記錄110標識為第一類型記錄。字段114A可以包括一個或多個值、鍵值對、值和/或鍵值對的列表、分層數(shù)據(jù)結(jié)構(gòu)、指針和/或任何其他數(shù)據(jù)結(jié)構(gòu)。
記錄120是示例第二類型記錄,并且包括簽名122、字段114B和字段124A。簽名122可以將記錄120標識為第二類型記錄。記錄120中的字段114B具有與記錄110中的字段114A相同的格式和/或數(shù)據(jù)結(jié)構(gòu),但是值可以不同。字段124A可以包括不包括在字段114B中的一個或多個不同的和/或附加的值、鍵值對、值和/或鍵值對的列表、分層數(shù)據(jù)結(jié)構(gòu)、指針和/或任何其他數(shù)據(jù)結(jié)構(gòu)。
在圖1所示的示例記錄中,每個記錄包括“明確的”簽名,其中,該簽名包括值和/或數(shù)據(jù)結(jié)構(gòu)。例如,記錄110包括簽名112,并且記錄120包括簽名122。然而,在實施例中,簽名可以由記錄中的一個或多個字段的一個或多個名稱、值和/或數(shù)據(jù)結(jié)構(gòu)隱含。例如,包括名為“地址”的字段的任何記錄可以被確定為第一類型的實例,并且包括名為“距離”的字段的任何記錄可以被確定為第二類型的實例。包括字段名稱“地址”和字段名稱“距離”兩者的記錄可以被確定為第一類型和第二類型的實例。
2.1.1子類型、超類型、子集和超集
如果第二類型記錄中的字段包括第一類型記錄中的所需字段的超集,則第二類型記錄在本文中可以被稱為第一類型記錄的“子類型”。第一類型在本文中可以被稱為第二類型的“超類型”和/或“子集”。出于示出清楚示例的目的,假設(shè)字段114A中的一個或多個字段是第一類型記錄所需的,并且字段114B和字段124A中的一個或多個字段是第二類型記錄的任何實例所需的。在當前示例中,作為第二類型的實例的記錄還包括作為第一類型的實例的必需字段。因此,第二類型是第一類型的“子類型”或“超集”;并且,第一類型是第二類型的“超類型”或“子集”。
如果字段由處理第一類型記錄的一個或多個節(jié)點使用,則該字段可以是必需字段。附加地或可選地,如果字段被指定為模式中所需的,則該字段可以是必需字段。例如,定義第一類型記錄的第一模式可以包括必需字段的名稱的列表。附加地或可選地,第一模式可以將第一數(shù)據(jù)結(jié)構(gòu)中的一個或多個字段標識為必需的,并且將第二數(shù)據(jù)結(jié)構(gòu)中的一個或多個字段標識為可選的。
記錄可以具有不止一個子類型和/或超類型。例如,記錄130是第三類型記錄的示例。記錄130包括簽名132、字段114C、字段124B和字段134。簽名132可以將記錄130標識為第三類型記錄和/或可以由一個或多個第三節(jié)點處理的記錄。記錄130中的字段114C具有與記錄110中的字段114A相同的格式和/或數(shù)據(jù)結(jié)構(gòu),但是值可以不同。記錄130中的字段124B具有與記錄120中的字段124A相同的格式和/或數(shù)據(jù)結(jié)構(gòu),但是值可以不同。在圖1所示的實施例中,第三類型記錄是第一類型記錄的子類型,因為第三類型記錄具有第一類型中的一個或多個必需字段(記錄110中的字段114A和記錄130中的字段114C)。第三類型的記錄是第二類型的記錄的子類型,因為第三類型的記錄具有第二類型中的一個或多個必需字段(記錄120中的字段124A和記錄130中的字段124B)。
圖1中每個記錄的簽名和字段被示出為在存儲器中連續(xù)。然而,每個記錄的簽名和/或字段不必是連續(xù)的。例如,記錄120中的簽名122、字段114B和字段124A可以但不必在存儲器中連續(xù)存儲。此外,字段114A和/或字段114B中的每個字段可以但不必在存儲器中連續(xù)存儲。
2.1.2子類型轉(zhuǎn)換為超類型的實例
作為另一類型的子類型的記錄可以通過改變記錄中的簽名、字段和/或數(shù)據(jù)結(jié)構(gòu)而被轉(zhuǎn)換為超類型。例如,記錄121是記錄120的副本,其中記錄121是第二類型記錄,并被轉(zhuǎn)換為超類型:第一類型。記錄121包括簽名112、字段114B和字段124A。正如在記錄110中一樣,記錄121中的簽名112可以包括一個或多個值和/或數(shù)據(jù)結(jié)構(gòu),其將記錄121標識為第一類型和/或要由與簽名112和/或第一類型相關(guān)聯(lián)的一個或多個第一節(jié)點處理的記錄。然而,一個或多個第一節(jié)點可以忽略記錄121中的字段124A。
不在超類型中的一個或多個字段可以存儲在較高的存儲器地址空間中。例如,圖1中,內(nèi)存地址從左到右增長。因此,在記錄120中,引用字段114B的第一索引小于引用字段124A的第二索引。處理第一類型記錄的第一節(jié)點可以使用相同的索引來引用記錄110中的字段114A和記錄121中的字段114B,因為字段124A被分配了較高的存儲器地址。因此,第一節(jié)點可以如同記錄121原本是第一類型記錄一樣處理記錄121。
子類型和超類型之間的共同字段可以以相同的順序存儲。例如,記錄130中的字段114C和字段124B與記錄120中的字段114B和字段124A具有相同的順序。處理第二類型記錄的節(jié)點可以使用與記錄130中的字段114C和字段124B相同的索引來引用記錄120中的字段114B和字段124A。此外,處理第一類型記錄的節(jié)點可以使用相同的索引來引用記錄110中的字段114A、記錄120中的字段114B、記錄121中的字段114B和記錄130中的字段114C。
2.2示例多節(jié)點系統(tǒng)拓撲
圖2示出了在示例實施例中用于處理來自多個源的不同類型和子類型的流輸入數(shù)據(jù)而不暫停一個或多個節(jié)點的系統(tǒng)。如圖2所示,系統(tǒng)200包括跨多個互聯(lián)網(wǎng)絡(luò)分布的節(jié)點計算機集群210、路由計算機220、記錄存儲設(shè)備224、源計算機240、源計算機241、源計算機250和客戶端計算機290。節(jié)點集群210包括跨一個或多個互聯(lián)網(wǎng)絡(luò)分布并可以執(zhí)行本文討論的一種或多種方法的源節(jié)點計算機242、查詢節(jié)點計算機244、源節(jié)點計算機252、查詢節(jié)點計算機254和節(jié)點計算機212。
計算機可以是一個或多個軟件模塊、計算機、計算機組件、計算設(shè)備、數(shù)據(jù)庫、數(shù)據(jù)存儲設(shè)備、路由器、交換機和/或網(wǎng)絡(luò)互聯(lián)基礎(chǔ)設(shè)施的其他元件。除非明確說明為“單個”計算機,否則計算機可以是一個或多個計算機。
可以在單個計算機上執(zhí)行不止一個節(jié)點。例如,節(jié)點計算機212包括查詢節(jié)點246和查詢節(jié)點256,其中,查詢節(jié)點246和查詢節(jié)點256基于操作系統(tǒng)216在節(jié)點計算機212上被執(zhí)行,并且至少部分地駐留在存儲器設(shè)備214中。
雖然以上列出的一個或多個組件可以被示為在彼此獨立、遠離的計算機上運行,但以上列出的組件中的一個或多個可以是同一計算機的一部分和/或在同一計算機上執(zhí)行。例如,路由模塊222、記錄存儲設(shè)備224、源計算機250、源節(jié)點計算機252、查詢節(jié)點計算機254和/或其中包括的任何設(shè)備和/或模塊可以在同一單個計算機、局域網(wǎng)、和/或廣域網(wǎng)上執(zhí)行。
2.2.1路由模塊
路由計算機220包括路由模塊222。路由模塊222可以從一個或多個客戶端計算機接收一個或多個請求和/或查詢,生成一個或多個節(jié)點,從一個或多個源、節(jié)點、模塊和/或計算機接收一個或多個記錄,和/或?qū)⒁粋€或多個記錄發(fā)送到一個或多個其他源、節(jié)點、模塊和/或計算機。附加地或可選地,路由模塊222可以將記錄存儲在記錄存儲設(shè)備224中。附加地或可選地,路由模塊222可將記錄和/或結(jié)果發(fā)送到客戶端計算機290和/或任何其它模塊、節(jié)點和/或計算機。
模塊可以是在計算機上執(zhí)行的軟件,和/或包括邏輯和/或耦接到計算機的硬件。模塊可以包括指令和/或邏輯,其在被執(zhí)行時使得本文所討論的方法中的一個或多個被執(zhí)行。
路由模塊可以接收和/或執(zhí)行一個或多個連續(xù)查詢。連續(xù)查詢是針對數(shù)據(jù)的查詢,包括針對數(shù)據(jù)庫的查詢,其定義了對被標識為一個或多個特定類型的流輸入數(shù)據(jù)執(zhí)行的一個或多個功能。連續(xù)查詢可以由查詢語言(例如,結(jié)構(gòu)化查詢語言或連續(xù)查詢語言)定義。連續(xù)查詢可以作為數(shù)據(jù)庫查詢或數(shù)據(jù)定義語言命令被發(fā)出,或者作為數(shù)據(jù)庫查詢或數(shù)據(jù)定義語言命令的一部分被發(fā)出。由連續(xù)查詢定義的一個或多個功能可以是數(shù)據(jù)庫特定功能、聯(lián)網(wǎng)功能、分析功能、多媒體功能和/或任何其他流數(shù)據(jù)功能。例如,連續(xù)查詢可以指定在網(wǎng)絡(luò)管理應(yīng)用中匯總、聚合或過濾網(wǎng)絡(luò)分析數(shù)據(jù)。連續(xù)查詢可以定義一個或多個數(shù)據(jù)流源、模式、類型、子類型和/或超類型。連續(xù)查詢可以定義分配給一個或多個節(jié)點的一個或多個操作。連續(xù)查詢可以指示一個或多個節(jié)點等待數(shù)據(jù)到達、處理數(shù)據(jù)、然后輸出導出的、處理后的數(shù)據(jù)。本文討論的特征和過程可以用于各種目的,例如流分析數(shù)據(jù)、調(diào)試和診斷、從故障恢復以及存儲和處理先前接收的流數(shù)據(jù)。
路由模塊222可以基于一個或多個連續(xù)查詢生成一種或多種類型的節(jié)點,以執(zhí)行一種或多種類型的記錄。如果節(jié)點處理第一類型記錄,則第一節(jié)點可以是“第一類型節(jié)點”。類似地,如果節(jié)點處理第二類型記錄,則第二節(jié)點可以是“第二類型節(jié)點”。響應(yīng)于接收到定義了從源計算機240接收的第一類型記錄的連續(xù)查詢,路由模塊222可以在節(jié)點計算機212上生成、實例化和/或初始化源節(jié)點計算機242、查詢節(jié)點計算機244和查詢節(jié)點246。
路由模塊222可以編配以哪種順序?qū)⒛男┯涗洶l(fā)送到哪些節(jié)點。例如,路由模塊222可以按照以下順序?qū)⒃诘谝贿B續(xù)查詢中定義的第一類型記錄與以下節(jié)點相關(guān)聯(lián):源節(jié)點計算機242、查詢節(jié)點計算機244和查詢節(jié)點246。當?shù)谝活愋陀涗洷唤邮?,路由模塊222可以將該記錄路由到源節(jié)點計算機242。至少部分地基于路由模塊222,源節(jié)點計算機242可以將記錄和/或從記錄導出的數(shù)據(jù)發(fā)送到查詢節(jié)點計算機244。至少部分地基于路由模塊222,查詢節(jié)點計算機244可以將記錄和/或從記錄導出的數(shù)據(jù)發(fā)送到查詢節(jié)點246。至少部分地基于路由模塊222,查詢節(jié)點246可以將記錄和/或從記錄導出的數(shù)據(jù)發(fā)送到客戶端計算機290、記錄存儲設(shè)備224和/或由連續(xù)查詢定義的任何其它計算機和/或模塊。因此,路由模塊222可以包括用于存儲一個或多個連續(xù)查詢、記錄類型、簽名和/或節(jié)點之間的關(guān)聯(lián)的一個或多個表、數(shù)據(jù)庫和/或數(shù)據(jù)結(jié)構(gòu)。
路由模塊222可以設(shè)法將記錄從子類型轉(zhuǎn)換到超類型,并且利用與超類型相關(guān)聯(lián)的節(jié)點來處理“向上轉(zhuǎn)換”的記錄。例如,路由模塊222可以接收定義了第二類型并且指示第二類型是第一類型的子類型的連續(xù)查詢。作為響應(yīng),路由模塊222可以按照以下順序生成、實例化和/或初始化以下節(jié)點來處理第二類型記錄:源節(jié)點計算機252、查詢節(jié)點計算機254和查詢節(jié)點256。響應(yīng)于接收到第二類型記錄,路由模塊222可以將第二類型記錄轉(zhuǎn)換為第一類型記錄,和/或按照以下順序?qū)⒈幌蛏限D(zhuǎn)換的記錄發(fā)送到與第一類型相關(guān)聯(lián)的以下節(jié)點:源節(jié)點計算機242、查詢節(jié)點計算機244和查詢節(jié)點246。附加地或可選地,基于路由模塊222,節(jié)點可以向上轉(zhuǎn)換記錄,和/或按特定順序?qū)⒈幌蛏限D(zhuǎn)換的記錄發(fā)送到一個或多個節(jié)點。
通常,當接收到具有更新模式的記錄時,先前處理記錄的每個節(jié)點可以被暫停、重新配置以處理新數(shù)據(jù),并且然后被恢復。如本文所討論的,暫停一個或多個節(jié)點可能導致許多問題。相比之下,路由模塊222是非常規(guī)的,其實例化新節(jié)點來處理子類型或記錄中的新數(shù)據(jù),將子類型記錄轉(zhuǎn)換成超類型記錄,并且將被向上轉(zhuǎn)換的記錄路由到已經(jīng)運行的節(jié)點來處理子類型記錄和超類型記錄之間的共同數(shù)據(jù),而不暫停已經(jīng)運行的節(jié)點。因此,出于本文討論的這些和許多其它原因,本文所討論的非常規(guī)方法和/或系統(tǒng)(例如,涉及路由模塊222的方法和系統(tǒng))改進了(一個或多個)計算機和/或(一個或多個)計算機系統(tǒng)的功能。
2.2.2節(jié)點
節(jié)點可以是模塊、計算機、計算機組件、計算設(shè)備、數(shù)據(jù)庫、數(shù)據(jù)存儲設(shè)備、路由器、交換機和/或網(wǎng)絡(luò)互聯(lián)基礎(chǔ)設(shè)施的其他元件。節(jié)點可以由電路、一個或多個軟件指令、查詢和/或連續(xù)查詢定義。節(jié)點可以包括邏輯和/或指令,其在被執(zhí)行時執(zhí)行本文討論的一個或多個方法。
每個節(jié)點可以被配置為執(zhí)行一個或多個不同于另一個節(jié)點的任務(wù)、處理和/或操作。例如,源節(jié)點(例如,源節(jié)點計算機242)可以接收、格式化、入隊、出隊和/或發(fā)送記錄到一個或多個節(jié)點、路由模塊和/或存儲設(shè)備。源節(jié)點計算機242可以專用于處理第一類型記錄。源節(jié)點計算機252可以執(zhí)行與源節(jié)點計算機242相似的功能,但是可以專用于處理第二類型記錄。
查詢節(jié)點計算機244可以被配置為消除不滿足一個或多個標準的一個或多個第一類型記錄,并且將滿足一個或多個標準的記錄發(fā)送到查詢節(jié)點246。查詢節(jié)點246可以對從查詢節(jié)點計算機244接收的第一類型記錄執(zhí)行一個或多個操作,例如,加和、排序和/或一個或多個其他操作。
查詢節(jié)點計算機254可以對第二類型記錄和/或從第二類型記錄導出的數(shù)據(jù)執(zhí)行一個或多個操作,該一個或多個操作不同于查詢節(jié)點計算機244處理同一記錄的向上轉(zhuǎn)換版本和/或從同一記錄的向上轉(zhuǎn)換版本導出的數(shù)據(jù)的操作。查詢節(jié)點256可以對第二類型記錄和/或從第二類型記錄導出的數(shù)據(jù)執(zhí)行一個或多個操作,該一個或多個操作不同于查詢節(jié)點246處理同一記錄的向上轉(zhuǎn)換版本和/或從同一記錄的向上轉(zhuǎn)換版本導出的數(shù)據(jù)的操作。
從一個或多個其他節(jié)點接收一個或多個記錄的節(jié)點可以被稱為“查詢節(jié)點”。例如,源節(jié)點計算機242可以是源節(jié)點,并且查詢節(jié)點計算機244和查詢節(jié)點246可以各自是查詢節(jié)點。然而,在實施例中,源節(jié)點可以執(zhí)行查詢節(jié)點可以執(zhí)行的一個或多個操作,和/或反之亦然。例如,源節(jié)點計算機242可以從源節(jié)點計算機252接收記錄。還例如,源節(jié)點計算機242可以接收和處理第一類型記錄,并且不必將記錄和/或從記錄導出的數(shù)據(jù)發(fā)送到下游節(jié)點。
節(jié)點可以將結(jié)果返回給路由模塊222、客戶端計算機290和/或另一模塊和/或計算機。例如,查詢節(jié)點246可以接收指示一個或多個計算機的CPU使用的一個或多個記錄。查詢節(jié)點246可以確定每個計算機的CPU使用是否大于特定閾值。如果是,則查詢節(jié)點246可以向路由模塊222和/或客戶端計算機290發(fā)送指示哪些計算機的CPU使用大于特定閾值的消息。
節(jié)點可以添加、移除和/或改變記錄中的數(shù)據(jù)。例如,查詢節(jié)點246可以將數(shù)據(jù)從后面和/或前面附加到每個記錄,該數(shù)據(jù)指示包括該數(shù)據(jù)的記錄是否滿足一個或多個標準。查詢節(jié)點246可以將每個被修改的記錄發(fā)送到路由模塊222、記錄存儲設(shè)備224、客戶端計算機290和/或另一個節(jié)點和/或計算機。又例如,源節(jié)點計算機242可以從源節(jié)點計算機252接收記錄和/或記錄的副本。源節(jié)點計算機252可以已經(jīng)將與第二類型相關(guān)聯(lián)的簽名附加到記錄前面。源節(jié)點計算機242可以基于路由模塊222確定第二類型作為子類型與第一類型相關(guān)聯(lián),確定該簽名與第二類型相關(guān)聯(lián),和/或?qū)⒃摵灻鎿Q為與第一類型相關(guān)聯(lián)的簽名。
節(jié)點可以將記錄、被修改的記錄和/或從記錄導出的數(shù)據(jù)發(fā)送到另一節(jié)點和/或計算機。例如,源節(jié)點計算機242可以將記錄發(fā)送到查詢節(jié)點計算機244和/或路由模塊222用于進一步處理。又例如,路由模塊222可以從源節(jié)點計算機252接收記錄。路由模塊222可以修改記錄,和/或?qū)⒂涗洶l(fā)送到源節(jié)點計算機242。
在圖2中,節(jié)點可以直接將記錄發(fā)送和/或流式傳輸?shù)搅硪还?jié)點和/或計算機。例如,源節(jié)點計算機242可以是硬連線的和/或硬編碼的,以將處理完的記錄發(fā)送到一個或多個節(jié)點(例如,查詢節(jié)點計算機244)。又例如,源節(jié)點計算機242可以向路由模塊222查詢節(jié)點的地址和/或標識符,其中,該節(jié)點是源節(jié)點計算機242應(yīng)該至少部分地基于處理完的記錄中的簽名和/或本文討論的任何其他要素來將處理完的記錄發(fā)送到的節(jié)點。在此示例中,路由模塊222可以包括將處理完的記錄的簽名與查詢節(jié)點計算機244的地址相關(guān)聯(lián)的關(guān)系數(shù)據(jù)庫。因此,路由模塊22可以將查詢節(jié)點計算機244的地址返回到源節(jié)點242,并且源節(jié)點242可以將處理完的記錄發(fā)送到查詢節(jié)點計算機244。附加地或可選地,節(jié)點可以將數(shù)據(jù)發(fā)送和/或流式傳輸?shù)铰酚赡K222和/或記錄存儲設(shè)備224。路由模塊222和/或記錄存儲設(shè)備224可以將記錄推送到一個或多個節(jié)點。附加地或可選地,節(jié)點可以輪詢來自路由模塊222和/或記錄存儲設(shè)備224的數(shù)據(jù)。例如,查詢節(jié)點計算機244可以向路由模塊222和/或記錄存儲設(shè)備224查詢源節(jié)點計算機242處理完的和/或存儲在記錄存儲設(shè)備224中的記錄。
2.2.3源
源計算機可以是將一個或多個特定類型的記錄流式傳輸?shù)揭粋€或多個源節(jié)點的一個或多個計算機。例如,源計算機240可以是第一網(wǎng)絡(luò)上的第一代路由器,源計算機241可以是第二網(wǎng)絡(luò)上的第一代路由器,并且源計算機250可以是第三網(wǎng)絡(luò)上的第二代路由器。源計算機240和源計算機241可以各自向源節(jié)點計算機242發(fā)送多個第一類型記錄。源計算機250可以向源節(jié)點計算機252發(fā)送多個第二類型記錄。
在圖1中,每個源計算機將記錄直接流式傳輸?shù)皆垂?jié)點。附加地或可選地,源計算機可以將數(shù)據(jù)流式傳輸?shù)铰酚赡K222和/或記錄存儲設(shè)備224。路由模塊222和/或記錄存儲設(shè)備224可以將記錄推送到每個源節(jié)點。附加地或可選地,每個源節(jié)點可以輪詢來自路由模塊222和/或記錄存儲設(shè)備224的數(shù)據(jù)。
2.2.4記錄存儲設(shè)備
記錄存儲設(shè)備224可以接收、存儲和/或發(fā)送一個或多個記錄。例如,源節(jié)點計算機242可以從源計算機240接收多個記錄。源節(jié)點計算機242可以請求和/或處理記錄。源節(jié)點計算機242可以將記錄和/或從記錄導出的數(shù)據(jù)發(fā)送到記錄存儲設(shè)備224以進行存儲。當查詢節(jié)點計算機244準備好處理記錄時,查詢節(jié)點計算機244可以隨時間從記錄存儲設(shè)備224請求和/或接收記錄。附加地或可選地,路由模塊222可以請求記錄存儲設(shè)備224中的一個或多個記錄以及將一個或多個記錄發(fā)送到節(jié)點和/或計算機。附加地或可選地,路由模塊222可以存儲從一個或多個節(jié)點和/或計算機發(fā)送到路由模塊222的一個或多個記錄和/或數(shù)據(jù)。
3.0流程概覽
本文所討論的系統(tǒng)、方法和/或數(shù)據(jù)結(jié)構(gòu)可以用于接收和處理具有動態(tài)和/或演進模式的記錄,而不暫停和/或重新配置已經(jīng)在執(zhí)行的節(jié)點。圖3示出了在一個示例實施例中用于處理多個記錄類型的流程。出于示出清楚示例的目的,假設(shè)網(wǎng)絡(luò)管理員正在使用客戶端計算機290來分析和監(jiān)控三個網(wǎng)絡(luò)之間的網(wǎng)絡(luò)連接。第一網(wǎng)絡(luò)通過作為第一代路由器的源計算機240與一個或多個網(wǎng)絡(luò)通信地耦接;第二網(wǎng)絡(luò)通過也作為第一代路由器的源計算機241與一個或多個網(wǎng)絡(luò)通信地耦接;并且第三網(wǎng)絡(luò)通過作為第二代路由器的源計算機250與一個或多個網(wǎng)絡(luò)通信地耦接。從第一代路由器發(fā)送的記錄是第一類型記錄,從第二代路由器發(fā)送的記錄是第二類型記錄,并且第二類型是第一類型的子類型。因此,每個第二類型記錄可以包括“BGP下一跳”字段,而第一類型記錄不需要。
3.1接收連續(xù)查詢
在步驟305中,路由模塊將第一簽名與第一類型相關(guān)聯(lián),將第二簽名與第二類型相關(guān)聯(lián)。例如,網(wǎng)絡(luò)管理員可以通過客戶端計算機290向路由模塊222發(fā)送兩個連續(xù)查詢。第一連續(xù)查詢可以將第一類型記錄的第一簽名定義為值簽名112,并且第二連續(xù)查詢可以將第二類型記錄的第二簽名定義為值簽名122。因此,路由模塊222可以更新和/或存儲路由模塊222、路由計算機220、數(shù)據(jù)庫和/或與路由模塊222耦接的任何其他計算機中的數(shù)據(jù),其中,路由模塊222將簽名112與第一類型記錄相關(guān)聯(lián),將簽名122與第二類型記錄相關(guān)聯(lián)。
3.2基于連續(xù)查詢生成、實例化和/或初始化節(jié)點
在步驟310中,路由模塊將第一類型與第一節(jié)點相關(guān)聯(lián),并且將第二類型與第二節(jié)點相關(guān)聯(lián)。例如,第一連續(xù)查詢可以定義要對每個第一類型記錄執(zhí)行的一個或多個操作。路由模塊222可以分析一個或多個操作并生成、實例化和/或初始化源節(jié)點計算機242(以接收一個或多個第一類型記錄)、查詢節(jié)點計算機244(以執(zhí)行在第一連續(xù)查詢中定義的第一操作)以及查詢節(jié)點246(以執(zhí)行在第一連續(xù)查詢中定義的子操作)。類似地,第二連續(xù)查詢可以定義要對每個第二類型記錄執(zhí)行的一個或多個操作。路由模塊222可以分析一個或多個操作并生成、實例化和/或初始化源節(jié)點計算機252(以接收一個或多個第二類型記錄)、查詢節(jié)點計算機254(以執(zhí)行在第二連續(xù)查詢中定義的第一操作)以及查詢節(jié)點256(以執(zhí)行在第二連續(xù)查詢中定義的子操作)。
3.3確定子類型
在步驟315中,路由模塊將第二類型記錄關(guān)聯(lián)為第一類型記錄的子類型。例如,第二連續(xù)查詢可以包括明確指示第二類型記錄是第一類型的子類型的數(shù)據(jù)。作為響應(yīng),路由模塊222可以將第二簽名(簽名122)與第一簽名(簽名112)相關(guān)聯(lián),其指示具有第二簽名的記錄是第一類型的子類型的實例。附加地或可選地,路由模塊222可以分析預(yù)期要由針對第二連續(xù)查詢被初始化的節(jié)點讀取和/或?qū)懭氲?一個或多個)字段,并且可以確定那些字段是預(yù)期要由針對第一連續(xù)查詢被初始化的節(jié)點讀取和/或?qū)懭氲淖侄蔚某?。因此,路由模塊222可以更新和/或存儲路由模塊222、路由計算機220、數(shù)據(jù)庫和/或與路由模塊222耦接的任何其他計算機中的數(shù)據(jù),其指示第二類型是第一類型的子類型。
3.4處理記錄
在步驟320中,第一節(jié)點和第二節(jié)點分別接收第一記錄和第二記錄。例如,源計算機240可以向源節(jié)點計算機242發(fā)送第一記錄,其可以是空記錄和/或第一類型記錄。源計算機250可以向源節(jié)點計算機252發(fā)送第二記錄,其可以是空記錄和/或第二類型記錄。
附加地或可選地,源計算機240和源計算機250可以將第一記錄和第二記錄發(fā)送到路由模塊222。路由模塊222可以將第一記錄發(fā)送到源節(jié)點計算機242,將第二記錄發(fā)送到源節(jié)點計算機252。
附加地或可選地,路由模塊222可將記錄存儲在記錄存儲設(shè)備224中。源節(jié)點計算機242可以從路由模塊222請求與第一類型相關(guān)聯(lián)的記錄。作為響應(yīng),路由模塊222可以將第一記錄發(fā)送到源節(jié)點計算機242。類似地,源節(jié)點計算機252可以從路由模塊222請求與第二類型相關(guān)聯(lián)的記錄。作為響應(yīng),路由模塊222可以將第二記錄發(fā)送到源節(jié)點計算機252。源節(jié)點計算機242和源節(jié)點計算機252可以基于以下各項來輪詢記錄:一個或多個連續(xù)查詢、已完成對一個或多個先前接收的記錄的處理、已經(jīng)過去的時間量、可用的中央處理單元周期、可用存儲器和/或本文所討論的和/或與執(zhí)行源節(jié)點計算機242、源節(jié)點計算機252、路由模塊222和/或記錄存儲設(shè)備224的一個或多個計算機相關(guān)的任何其他因素。
在步驟325中,第一源節(jié)點確定第一記錄是第一類型,第二源節(jié)點確定第二記錄是第二類型。例如,源節(jié)點計算機242可以基于第一記錄的源、格式、模式和/或任何其他明確和/或隱含的屬性來確定第一記錄是第一類型。源節(jié)點計算機252可以基于第二記錄的源、格式、模式和/或任何其他明確和/或隱含屬性來確定第二記錄是第二類型。明確屬性可以是包括在記錄中的任何數(shù)據(jù)和/或數(shù)據(jù)結(jié)構(gòu),例如一個或多個字段名稱。隱含屬性可以是從記錄中推斷的任何數(shù)據(jù),例如,從其接收記錄的源計算機的地址、從其發(fā)送記錄的源計算機的構(gòu)造和/或型號、和/或接收到記錄的時間。
附加地或可選地,路由模塊222可以通過使用本文所討論的因素中的一個或多個來確定第一記錄是第一類型和/或第二記錄是第二類型。在實施例中,路由模塊222可以在接收到記錄時確定每個記錄的類型。
在步驟330中,第一源節(jié)點將第一簽名與第一記錄相關(guān)聯(lián),并將第二簽名與第二記錄相關(guān)聯(lián)。出于示出清楚的示例的目的,假設(shè)第一記錄是記錄110,第二記錄是記錄120;然而,記錄110不必包括簽名112,并且記錄120不必包括簽名122。在接收記錄110之后,源節(jié)點計算機242可以將第一簽名(簽名112)從前面附加到記錄110,使得簽名112成為記錄中的第一個數(shù)據(jù)。在接收記錄120之后,源節(jié)點計算機252可以將第二簽名(簽名122)從前面附加到記錄120,使得簽名122成為記錄120中的第一個數(shù)據(jù)。
附加地或可選地,路由模塊222可以通過將第一簽名從前面附加到第一記錄并將第二簽名從前面附加到第二記錄來將第一簽名與第一記錄相關(guān)聯(lián),將第二簽名與第二記錄相關(guān)聯(lián)。路由模塊222將每個記錄存儲在記錄存儲設(shè)備224中。由路由模塊222存儲的每個記錄可以包括明確簽名。
在步驟335中,第一源節(jié)點將第一記錄發(fā)送到第一查詢節(jié)點,第二源節(jié)點將第二記錄發(fā)送到第二查詢節(jié)點。例如,源節(jié)點計算機242可以將記錄110發(fā)送到查詢節(jié)點計算機244,并且源節(jié)點計算機252可以將記錄120發(fā)送到查詢節(jié)點計算機254。查詢節(jié)點計算機244可以處理記錄110,并且查詢節(jié)點計算機254可以處理記錄120。
3.5轉(zhuǎn)換記錄而不暫停節(jié)點
在步驟340中,源節(jié)點可以確定它們各自接收到的(一個或多個)記錄是否屬于另一類型的子類型。如果是,則控制可以轉(zhuǎn)到步驟345。否則,控制可以轉(zhuǎn)到步驟390。例如,源節(jié)點計算機242可以基于下述內(nèi)容中的一個或多個來確定記錄110不是子類型的實例:簽名112不與作為子類型的另一簽名相關(guān)聯(lián);記錄110不是另一類型的記錄的超集;和/或本文所討論的任何其它(一個或多個)因素。因此,源節(jié)點計算機242可以進行到步驟390。
附加地或可選地,源節(jié)點計算機242可以將記錄110發(fā)送到路由模塊222。路由模塊222可以基于本文所討論的方法中的一個或多個來確定記錄110是否是另一類型的記錄的子類型的實例。如果是,則路由模塊222可以轉(zhuǎn)到步驟345。否則,路由模塊222可以轉(zhuǎn)到步驟390。
作為步驟340的另一示例,源節(jié)點計算機252可以基于本文所討論的因素中的一個或多個來確定記錄120是超類型(第一類型)的實例,并進行到步驟345。附加地或可選地,源節(jié)點計算機252可以將記錄120發(fā)送到路由模塊222。路由模塊222可基于本文所討論的因素中的一個或多個來確定記錄120是第一類型的實例,并進行到步驟345。
在步驟345中,第一源節(jié)點和/或路由模塊可以將記錄與超類型的簽名相關(guān)聯(lián)。例如,源節(jié)點計算機242可以從源節(jié)點計算機252和/或路由模塊222接收第二記錄的副本(記錄121)。記錄121可以,但不必須是空記錄。因此,記錄121可以,但不必須包括簽名122。源節(jié)點計算機242和/或路由模塊222可以將簽名112附加到記錄121前面,和/或從記錄121移除簽名122,如圖1所示。
3.6處理被轉(zhuǎn)換的記錄而不暫停節(jié)點
在步驟350中,第一源節(jié)點可以將具有超類型的簽名的記錄發(fā)送到與超類型的簽名相關(guān)聯(lián)的節(jié)點。例如,源節(jié)點計算機242和/或路由模塊222可以將記錄121發(fā)送到與第一類型相關(guān)聯(lián)的第一查詢節(jié)點:查詢節(jié)點計算機244。然后控制可以返回到步驟340。例如,如果記錄120和/或記錄121是第三類型的子類型,則可以重復該過程。否則,控制可以進行到步驟390。在當前示例中,記錄121不是另一類型的子類型,因此源節(jié)點計算機242和/或路由模塊222可以進行到步驟390。
在步驟390中,控制可以終止、等待新記錄、和/或輪詢新記錄。例如,源節(jié)點計算機242和/或路由模塊222可以終止、等待一個或多個新記錄、和/或查詢和/或輪詢一個或多個新記錄。
3.7處理新的、后定義的類型的記錄,而不暫停節(jié)點
在前述示例中,作為第二類型并從第二代路由器(源計算機250)接收的記錄既由被配置為處理第二類型記錄的多個節(jié)點(節(jié)點252-256)處理,還由被配置為處理第一類型記錄的多個節(jié)點(節(jié)點242-246)處理。因此,源節(jié)點計算機252、查詢節(jié)點計算機254和查詢節(jié)點256可以處理第二類型記錄中的附加數(shù)據(jù)(“BGP下一跳”字段),源節(jié)點計算機242、查詢節(jié)點計算機244和查詢節(jié)點246仍然可以如同處理第一類型記錄一樣處理每個第二類型記錄,而不被暫?;蛑匦屡渲谩?/p>
在上述示例中,在接收到任何類型的任何記錄之前接收到第一和第二連續(xù)查詢。然而,可以在第一連續(xù)查詢和/或第一類型記錄被接收和/或開始由任何節(jié)點處理之后接收第二連續(xù)查詢和/或第二類型記錄。類似地,可以在節(jié)點242-246開始處理第一類型記錄之后生成、實例化和/或初始化節(jié)點252-256。
如果第三代路由器開始將第三類型記錄流式傳輸?shù)綀D2所示的系統(tǒng)中,并且第三類型記錄是第二類型記錄的子類型,則路由模塊222可以生成、實例化和/或初始化一個或多個新節(jié)點以處理包括在第三類型記錄中的附加數(shù)據(jù)。路由模塊222還可以通過使用上述方法中的一個或多個來使得每個第三類型記錄被轉(zhuǎn)換為第二類型記錄,并由節(jié)點252-256處理,而不暫停和/或重新配置節(jié)點252-256。附加地或可選地,路由模塊222還可以通過使用上述方法中的一個或多個來使得每個第三類型記錄被轉(zhuǎn)換為第一類型記錄,并由節(jié)點242-246處理,而不暫停和/或重新配置節(jié)點242-246。
通過使用以上討論的方法中的一個或多個,如果第一節(jié)點根據(jù)第一連續(xù)查詢處理數(shù)據(jù)流中的第一類型記錄,并且數(shù)據(jù)流中的記錄的模式被更新為包括新字段,則路由模塊可以將數(shù)據(jù)流中的記錄(現(xiàn)在是第二類型,并且是第一類型的子類型)發(fā)送到第二(新)節(jié)點。第二節(jié)點可以根據(jù)第二(新)連續(xù)查詢開始處理每個第二類型記錄中的新字段中的數(shù)據(jù)。路由模塊還可以將每個記錄向上轉(zhuǎn)換為第一類型記錄,并將每個被向上轉(zhuǎn)換的記錄發(fā)送到仍執(zhí)行第一連續(xù)查詢的第一節(jié)點。因此,第一節(jié)點可以繼續(xù)處理第一類型記錄和新的第二類型記錄,而不被暫停和/或重新配置。此外,每個第二類型記錄可以由第一節(jié)點和第二節(jié)點同時處理。
4.0實現(xiàn)機制-硬件概覽
根據(jù)一個實施例,本文描述的技術(shù)由一個或多個專用計算設(shè)備實現(xiàn)。專用計算設(shè)備可以是硬連線的以執(zhí)行該技術(shù),或者可以包括被永久編程以執(zhí)行該技術(shù)的數(shù)字電子設(shè)備(例如,一個或多個專用集成電路(ASIC)或現(xiàn)場可編程門陣列(FPGA)),或者可以包括被編程為根據(jù)固件、存儲器、其他存儲設(shè)備或組合中的程序指令來執(zhí)行該技術(shù)的一個或多個通用硬件處理器。這樣的專用計算設(shè)備還可以將定制的硬連線邏輯、ASIC或FPGA與定制的程序相組合以實現(xiàn)該技術(shù)。專用計算設(shè)備可以是臺式計算機系統(tǒng)、便攜式計算機系統(tǒng)、手持設(shè)備、聯(lián)網(wǎng)設(shè)備或結(jié)合了硬連線和/或程序邏輯以實現(xiàn)該技術(shù)的任何其他設(shè)備。
例如,圖4是示出可以在其上實現(xiàn)本公開的實施例的計算機系統(tǒng)400的框圖。計算機系統(tǒng)400包括用于傳遞信息的總線402或其他通信機制,以及用于處理信息并與總線402耦接的硬件處理器404。例如,硬件處理器404可以是通用微處理器。
計算機系統(tǒng)400還包括耦接到總線402的主存儲器406(例如,隨機存取存儲器(RAM)或其他動態(tài)存儲設(shè)備),用于存儲要由處理器404執(zhí)行的信息和指令。主存儲器406也可以用于在執(zhí)行要由處理器404執(zhí)行的指令期間存儲臨時變量或其他中間信息。這種指令當被存儲在處理器404可訪問的非暫態(tài)存儲介質(zhì)中時,使計算機系統(tǒng)400呈現(xiàn)為被定制成執(zhí)行指令中指定操作的專用機器。
計算機系統(tǒng)400還包括耦接到總線402的只讀存儲器(ROM)408或其他靜態(tài)存儲設(shè)備,用于存儲針對處理器404的靜態(tài)信息和指令。存儲設(shè)備410(例如,磁盤或光盤)被提供并耦接到總線402,用于存儲信息和指令。
計算機系統(tǒng)400可以經(jīng)由總線402耦接到顯示器412(例如,陰極射線管(CRT)),用于向計算機用戶顯示信息。包括字母數(shù)字鍵和其他鍵并耦接到總線402的輸入設(shè)備414,用于向處理器404傳遞信息和命令選擇。另一種類型的用戶輸入設(shè)備是光標控制416(例如,鼠標,軌跡球或光標方向鍵),用于向處理器404傳遞方向信息和命令選擇傳遞并且用于控制顯示器412上的光標移動。該輸入設(shè)備通常在兩個軸(即,第一軸(例如x)和第二軸(例如y))中具有兩個自由度,其允許設(shè)備指定平面中的位置。
計算機系統(tǒng)400可以通過使用定制的硬連線邏輯、一個或多個ASIC或FPGA、固件和/或程序邏輯來實現(xiàn)本文描述的技術(shù),其中,定制的硬連線邏輯、一個或多個ASIC或FPGA、固件和/或程序邏輯與計算機系統(tǒng)結(jié)合使得計算機系統(tǒng)400成為,或?qū)⒂嬎銠C系統(tǒng)400編程為專用機器。根據(jù)一個實施例,響應(yīng)于處理器404執(zhí)行包括在主存儲器406中的一個或多個指令的一個或多個序列,計算機系統(tǒng)400執(zhí)行本文中的技術(shù)。這種指令可以從另一存儲介質(zhì)(例如,存儲設(shè)備410)讀取到主存儲器406中。包括主存儲器406中的指令序列的執(zhí)行使得處理器404執(zhí)行本文描述的流程步驟。在替代實施例中,硬連線電路可以代替軟件指令或與軟件指令相組合使用。
本文所使用的術(shù)語“存儲介質(zhì)”是指對使得機器以具體方式操作的數(shù)據(jù)和/或指令進行存儲的任何非暫態(tài)介質(zhì)。這種存儲介質(zhì)可以包括非易失性介質(zhì)和/或易失性介質(zhì)。非易失性介質(zhì)包括例如光盤或磁盤(例如,存儲設(shè)備410)。易失性介質(zhì)包括動態(tài)存儲器(例如,主存儲器406)。存儲介質(zhì)的常見形式包括例如軟盤、可折疊磁盤、硬盤、固態(tài)驅(qū)動器、磁帶或任何其它磁性數(shù)據(jù)存儲介質(zhì)、CD-ROM、任何其他光學數(shù)據(jù)存儲介質(zhì)、具有孔圖案的任何物理介質(zhì)、RAM、PROM、以及EPROM、FLASH-EPROM、NVRAM、任何其它存儲器芯片或盒。
存儲介質(zhì)不同于傳輸介質(zhì),但可以與傳輸介質(zhì)結(jié)合使用。傳輸介質(zhì)參與在存儲介質(zhì)之間傳輸信息。例如,傳輸介質(zhì)包括同軸電纜、銅線和光纖,包括組成總線402的導線。傳輸介質(zhì)還可以采用聲波或光波的形式,例如,在無線電波和紅外數(shù)據(jù)通信期間生成的這些聲波或光波。
各種形式的介質(zhì)可以涉及將一個或多個指令的一個或多個序列載送到處理器404以供執(zhí)行。例如,指令最初可以被承載在遠程計算機的磁盤或固態(tài)驅(qū)動器上。遠程計算機可以將指令加載到其動態(tài)存儲器中,并使用調(diào)制解調(diào)器通過電話線發(fā)送指令。計算機系統(tǒng)400本地的調(diào)制解調(diào)器可以接收電話線上的數(shù)據(jù),并使用紅外發(fā)射器將數(shù)據(jù)轉(zhuǎn)換成紅外信號。紅外檢測器可以接收紅外信號中承載的數(shù)據(jù),并且適當?shù)碾娐房梢詫?shù)據(jù)放置在總線402上。總線402將數(shù)據(jù)載送到主存儲器406,處理器404從主存儲器406獲取并執(zhí)行指令。由主存儲器406接收的指令可以可選地在處理器404執(zhí)行之前或之后被存儲在存儲設(shè)備410上。
計算機系統(tǒng)400還包括耦接到總線402的通信接口418。通信接口418還通過與連接到本地網(wǎng)絡(luò)422的網(wǎng)絡(luò)鏈路420耦接來提供雙向數(shù)據(jù)通信。例如,通信接口418可以是用于向?qū)?yīng)類型的電話線提供數(shù)據(jù)通信連接的綜合業(yè)務(wù)數(shù)字網(wǎng)絡(luò)(ISDN)卡、電纜調(diào)制解調(diào)器、衛(wèi)星調(diào)制解調(diào)器或調(diào)制解調(diào)器。作為另一示例,通信接口418可以是用向可兼容的局域網(wǎng)(LAN)提供數(shù)據(jù)通信連接的局域網(wǎng)卡。還可以實現(xiàn)無線鏈路。在任何這種實施方案中,通信接口418對承載了表示各種信息類型的數(shù)字數(shù)據(jù)流的電信號、電磁信號或光信號進行發(fā)送和接收。
網(wǎng)絡(luò)鏈路420通常通過一個或多個網(wǎng)絡(luò)向其他數(shù)據(jù)設(shè)備提供數(shù)據(jù)通信。例如,網(wǎng)絡(luò)鏈路420可以通過本地網(wǎng)絡(luò)422向主機計算機424或者向由互聯(lián)網(wǎng)服務(wù)提供商(ISP)426操作的數(shù)據(jù)設(shè)備提供連接。ISP 426通過現(xiàn)在通常被稱為“互聯(lián)網(wǎng)”的全球分組數(shù)據(jù)通信網(wǎng)絡(luò)428依次提供數(shù)據(jù)通信服務(wù)。本地網(wǎng)絡(luò)422和互聯(lián)網(wǎng)428兩者都使用承載了數(shù)字數(shù)據(jù)流的電信號、電磁信號或光信號。通過在網(wǎng)絡(luò)鏈路420上的各種網(wǎng)絡(luò)和信號的信號以及通過通信接口418的信號(其載送去往和來自計算機系統(tǒng)400的數(shù)字數(shù)據(jù))是載波傳輸信息的示例性形式。
計算機系統(tǒng)400可以通過(一個或多個)網(wǎng)絡(luò)、網(wǎng)絡(luò)鏈路420和通信接口418發(fā)送消息和接收包括程序代碼的數(shù)據(jù)。在互聯(lián)網(wǎng)示例中,服務(wù)器430可以通過互聯(lián)網(wǎng)428、ISP 426、本地網(wǎng)絡(luò)422和通信接口418發(fā)送所請求的應(yīng)用程序代碼。
接收到的代碼可以在其被接收時由處理器404執(zhí)行,和/或存儲在存儲設(shè)備410或其他非易失性存儲器中用于稍后執(zhí)行時。
5.0擴展和替代
在前述說明書中,已參考可以隨實施方案變化的許多具體細節(jié)來描述本公開的實施例。因此,本公開內(nèi)容的唯一且排他的指示以及申請人旨在作為本公開的是本申請的一組權(quán)利要求,權(quán)利要求以特定形式給出,并包括任何后續(xù)的修正。本文對權(quán)利要求中包括的術(shù)語明確闡述的任何定義應(yīng)當規(guī)定權(quán)利要求中所使用的這些術(shù)語的含義。因此,沒有在權(quán)利要求中明確記載的限制、元件、性質(zhì)、特征、優(yōu)點或?qū)傩圆粦?yīng)以任何方式限制權(quán)利要求的范圍。相應(yīng)地,說明書和附圖被認為是說明性的而非限制性的。