專利名稱:用于基于流的調(diào)試的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于基于流的調(diào)試的方法和系統(tǒng)。
背景技術(shù):
當(dāng)計(jì)算機(jī)數(shù)據(jù)庫(kù)變得極其復(fù)雜時(shí),對(duì)數(shù)據(jù)庫(kù)系統(tǒng)的計(jì)算要求也快速增加。數(shù)據(jù)庫(kù)系統(tǒng)通常被配置為將存儲(chǔ)數(shù)據(jù)的過(guò)程與訪問(wèn)、操縱或使用數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù)進(jìn)行分離。 更具體地說(shuō),數(shù)據(jù)庫(kù)使用這樣的模型其中數(shù)據(jù)首先被存儲(chǔ),然后被索引,然后被查詢。但是,此模型無(wú)法滿足某些實(shí)時(shí)應(yīng)用的性能要求。例如,數(shù)據(jù)庫(kù)系統(tǒng)接收和存儲(chǔ)入站數(shù)據(jù)的速率會(huì)限制可以處理或以其他方式計(jì)算多少數(shù)據(jù),這又會(huì)限制數(shù)據(jù)庫(kù)應(yīng)用實(shí)時(shí)處理大量數(shù)據(jù)的能力。為了解決此問(wèn)題,出現(xiàn)了基于流的計(jì)算和基于流的數(shù)據(jù)庫(kù)計(jì)算作為數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)技術(shù)。目前存在這樣的產(chǎn)品所述產(chǎn)品允許用戶創(chuàng)建在流數(shù)據(jù)到達(dá)數(shù)據(jù)庫(kù)文件之前對(duì)流數(shù)據(jù)進(jìn)行處理和查詢的應(yīng)用。借助這種新興的技術(shù),用戶可以在入站數(shù)據(jù)記錄仍在流入之時(shí)指定應(yīng)用于它們的處理邏輯,且結(jié)果可以在幾毫秒之內(nèi)得出。使用此類處理構(gòu)建應(yīng)用開(kāi)啟了新的編程范例,它將允許開(kāi)發(fā)各種新穎的應(yīng)用、系統(tǒng)和過(guò)程并且為應(yīng)用編程人員和數(shù)據(jù)庫(kù)開(kāi)發(fā)人員帶來(lái)了新的挑戰(zhàn)。
發(fā)明內(nèi)容
本發(fā)明的實(shí)施例提供了用于調(diào)試基于流的數(shù)據(jù)庫(kù)應(yīng)用中的一個(gè)或多個(gè)處理單元的技術(shù)。例如,本發(fā)明的一個(gè)實(shí)施例包括一種調(diào)試從一個(gè)或多個(gè)計(jì)算節(jié)點(diǎn)上執(zhí)行的多個(gè)處理單元形成的流應(yīng)用的方法。所述方法通常可包括接收所述多個(gè)處理單元中的第一處理單元內(nèi)的調(diào)試斷點(diǎn)的位置指示,以及評(píng)估運(yùn)算符圖以識(shí)別所述第一處理單元相對(duì)于所述多個(gè)處理單元中的一個(gè)或多個(gè)其他處理單元的位置。此方法還可包括修改所述流應(yīng)用的狀態(tài)以允許調(diào)試所述第一處理單元以及啟動(dòng)所述第一處理單元的調(diào)試會(huì)話。本發(fā)明的另一實(shí)施例包括包含程序的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),當(dāng)執(zhí)行所述程序時(shí), 所述程序?qū)?zhí)行用于調(diào)試從一個(gè)或多個(gè)計(jì)算節(jié)點(diǎn)上執(zhí)行的多個(gè)處理單元形成的流應(yīng)用的操作。所述操作本身通??砂ń邮账龆鄠€(gè)處理單元中的第一處理單元內(nèi)的調(diào)試斷點(diǎn)的位置指示,以及評(píng)估運(yùn)算符圖以識(shí)別所述第一處理單元相對(duì)于所述多個(gè)處理單元中的一個(gè)或多個(gè)其他處理單元的位置。所述操作還可包括修改所述流應(yīng)用的狀態(tài)以允許調(diào)試所述第一處理單元以及啟動(dòng)所述第一處理單元的調(diào)試會(huì)話。本發(fā)明的又一實(shí)施例包括具有多個(gè)計(jì)算節(jié)點(diǎn)的系統(tǒng),每個(gè)計(jì)算節(jié)點(diǎn)包括處理器和存儲(chǔ)器。所述計(jì)算節(jié)點(diǎn)被配置為執(zhí)行流應(yīng)用的處理單元。所述系統(tǒng)還可包括同樣包含處理器和存儲(chǔ)器的管理系統(tǒng)。所述存儲(chǔ)器存儲(chǔ)流調(diào)試應(yīng)用,所述流調(diào)試應(yīng)用當(dāng)在所述管理系統(tǒng)上執(zhí)行時(shí),被配置為執(zhí)行用于調(diào)試在所述多個(gè)計(jì)算節(jié)點(diǎn)上執(zhí)行的所述流應(yīng)用的操作。所述操作本身通常可包括接收所述多個(gè)處理單元中的第一處理單元內(nèi)的調(diào)試斷點(diǎn)的位置指示,以及評(píng)估運(yùn)算符圖以識(shí)別所述第一處理單元相對(duì)于所述多個(gè)處理單元中的一個(gè)或多個(gè)其他處理單元的位置。所述操作還可包括修改所述流應(yīng)用的狀態(tài)以允許調(diào)試所述第一處理單元以及啟動(dòng)所述第一處理單元的調(diào)試會(huì)話。
通過(guò)參考附圖,可以獲得詳細(xì)地實(shí)現(xiàn)和理解上述各方面的方式,以及上面簡(jiǎn)要介紹的本發(fā)明實(shí)施例的更具體的說(shuō)明。但是需要指出,附圖僅示出本發(fā)明的典型實(shí)施例,因此不能被認(rèn)為是對(duì)本發(fā)明的范圍的限制,因?yàn)楸景l(fā)明可允許其他等同的有效實(shí)施例。圖1A-1B示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的被配置為執(zhí)行流數(shù)據(jù)庫(kù)應(yīng)用的計(jì)算基礎(chǔ)設(shè)施;圖2是根據(jù)本發(fā)明的一個(gè)實(shí)施例的圖I的分布式計(jì)算節(jié)點(diǎn)的更詳細(xì)的視圖;圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施例的流數(shù)據(jù)庫(kù)應(yīng)用中的管理計(jì)算系統(tǒng)的更詳細(xì)的視圖;圖4示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的流數(shù)據(jù)庫(kù)應(yīng)用中的計(jì)算節(jié)點(diǎn)的一個(gè)實(shí)例;圖5示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的調(diào)試流數(shù)據(jù)庫(kù)應(yīng)用中的處理單元的方法;以及圖6-8提供根據(jù)本發(fā)明的各實(shí)施例的首先在圖4中示出的被修改以例示調(diào)試流應(yīng)用的情況的計(jì)算節(jié)點(diǎn)和流應(yīng)用的實(shí)例。
具體實(shí)施例方式在流應(yīng)用中,運(yùn)算符相互連接以便數(shù)據(jù)從一個(gè)處理單元流向下一個(gè)處理單元(例如通過(guò)TCP/IP套接字)。通過(guò)跨節(jié)點(diǎn)分布應(yīng)用(通過(guò)創(chuàng)建許多小的可執(zhí)行代碼段(運(yùn)算符))以及在多個(gè)節(jié)點(diǎn)上復(fù)制處理單元并在處理單元之間進(jìn)行負(fù)載平衡來(lái)獲得可伸縮性。 流應(yīng)用中的處理單元(和運(yùn)算符)可以融合在一起以形成較大的處理單元。這樣做可允許處理單元共享公共進(jìn)程空間,從而導(dǎo)致運(yùn)算符之間的通信遠(yuǎn)快于使用進(jìn)程間通信技術(shù)(例如,使用TCP/IP套接字)獲得的通信。此外,處理單元可以被動(dòng)態(tài)地插入表示通過(guò)流應(yīng)用的數(shù)據(jù)流的運(yùn)算符圖或被從運(yùn)算符圖動(dòng)態(tài)地刪除,以及在運(yùn)行時(shí)與流應(yīng)用融合或取消融合。盡管可以通過(guò)查看運(yùn)行代碼所生成的日志文件來(lái)調(diào)試分布式流環(huán)境中的處理單元,但是通常還需要完整的調(diào)試會(huì)話。然而,無(wú)論是否命中斷點(diǎn),運(yùn)行調(diào)試器都會(huì)減緩被調(diào)試進(jìn)程的速度,并且觸發(fā)斷點(diǎn)可導(dǎo)致流過(guò)正在調(diào)試的運(yùn)算符的數(shù)據(jù)大幅減緩(如果不是完全暫停)。因此,運(yùn)行正在調(diào)試的處理單元可導(dǎo)致“流阻塞”,因?yàn)榱飨蛟撎幚韱卧械倪\(yùn)算符的數(shù)據(jù)流不會(huì)停止流動(dòng)。更概括地說(shuō),流計(jì)算基于流不斷流過(guò)運(yùn)算符的前提。當(dāng)多個(gè)處理單元融合在一起以形成單個(gè)運(yùn)行進(jìn)程時(shí),觸發(fā)一個(gè)處理單元中的斷點(diǎn)會(huì)導(dǎo)致融合后的處理單元中的所有處理單元都停止處理,從而可能使大部分運(yùn)算符圖停止。另一方面,一組解除融合后的處理單元可能包括被配置為加入來(lái)自第二和第三處理單元的數(shù)據(jù)流的第一處理單元。如果觸發(fā)第二或第三處理單元中的斷點(diǎn),則可能破壞流處理結(jié)果。本發(fā)明的各實(shí)施例提供了調(diào)試基于流的應(yīng)用中的一個(gè)或多個(gè)處理單元的技術(shù)。具體地說(shuō),本發(fā)明的各實(shí)施例提供了以降低調(diào)試一個(gè)或多個(gè)處理單元對(duì)整體運(yùn)行環(huán)境的影響的方式在調(diào)試處理單元期間修改流應(yīng)用的狀態(tài)的技術(shù)。例如,假設(shè)需要調(diào)試具有二十個(gè)運(yùn)算符的融合后的處理單元中的一個(gè)運(yùn)算符。在這種情況下,流調(diào)試器可以被配置為從運(yùn)行的流中移除融合后的處理單元、解除融合運(yùn)算符,然后將它們重新插入運(yùn)行的流。具有被調(diào)試的單個(gè)運(yùn)算符的處理單元然后可作為獨(dú)立運(yùn)行進(jìn)程(具有其自己的進(jìn)程ID (PID)和存儲(chǔ)器空間)執(zhí)行,這允許獨(dú)立于其他十九個(gè)運(yùn)算符而調(diào)試該運(yùn)算符。一旦調(diào)試會(huì)話完成,調(diào)試器可重新融合已解除融合的運(yùn)算符,將具有二十個(gè)融合后的運(yùn)算符的處理單元恢復(fù)到調(diào)試會(huì)話之前存在的同一運(yùn)行狀態(tài)。在另一實(shí)施例中,調(diào)試器可以作為調(diào)試會(huì)話的一部分而將多個(gè)獨(dú)立處理單元融合在一起。這可用于在調(diào)試一個(gè)運(yùn)算符時(shí)暫停一部分運(yùn)算符圖的運(yùn)行。例如,此操作可允許滿足處理單元之間的任何相關(guān)性。類似地,當(dāng)正在調(diào)試給定處理單元時(shí),調(diào)試器可以在適當(dāng)情況下阻止數(shù)據(jù)進(jìn)入流。這可在所調(diào)試運(yùn)算符圖中的處理單元的上游(下游)的任何點(diǎn)處發(fā)生。更具體地說(shuō),調(diào)試器可阻止數(shù)據(jù)流向源運(yùn)算符(即,是流過(guò)運(yùn)算符圖的數(shù)據(jù)的源點(diǎn)的處理單元)或阻止數(shù)據(jù)流向運(yùn)算符圖中的特定部分(或特定處理單元)。相反地,調(diào)試器可被配置為將入站數(shù)據(jù)的某些元組識(shí)別為免于斷點(diǎn)。作為阻止數(shù)據(jù)流動(dòng)的備選方式,可以“丟棄(load shed)”正在調(diào)試的處理單元處的數(shù)據(jù)(或選擇性地允許數(shù)據(jù)在某些條件下流動(dòng))。這可有助于避免在調(diào)試會(huì)話完成時(shí)由于數(shù)據(jù)而使系統(tǒng)過(guò)載;尤其是在數(shù)據(jù)因未及時(shí)處理而可能失去價(jià)值時(shí)。在另一實(shí)施例中,調(diào)試器可以被配置為復(fù)制處理單元,以便在復(fù)制的單元中進(jìn)行調(diào)試。流出被調(diào)試處理單元的數(shù)據(jù)可以被丟棄,而不是被發(fā)送到鏈接的下游運(yùn)算符。此外,可以將正在調(diào)試的運(yùn)算符輸出的結(jié)果與實(shí)際運(yùn)算符相比較以作為對(duì)調(diào)試進(jìn)程準(zhǔn)確性的檢查。以下參考了本發(fā)明的各實(shí)施例。但是應(yīng)該理解,本發(fā)明并不限于描述的特定實(shí)施例。相反,將構(gòu)想以下特性和元素(無(wú)論是否與不同實(shí)施例相關(guān))的任意組合以實(shí)施和實(shí)現(xiàn)本發(fā)明。此外,雖然本發(fā)明的各實(shí)施例可以相對(duì)于其他可能解決方案和/或相對(duì)于現(xiàn)有技術(shù)實(shí)現(xiàn)優(yōu)點(diǎn),但特定優(yōu)點(diǎn)是否由給定實(shí)施例實(shí)現(xiàn)并不會(huì)限制本發(fā)明。因此,以下方面、特性、實(shí)施例和優(yōu)點(diǎn)僅是示例性的,并不被視為所附權(quán)利要求的元素或限制,除非在權(quán)利要求 (多個(gè))中明確指出。同樣,對(duì)“本發(fā)明”的引用不應(yīng)被理解為在此披露的任何發(fā)明主題的概括,并且不應(yīng)被視為所附權(quán)利要求的元素或限制,除非在權(quán)利要求(多個(gè))中明確指出。如本領(lǐng)域的技術(shù)人員將理解的,本發(fā)明的各方面可以體現(xiàn)為系統(tǒng)、方法或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明的各方面可以采取完全硬件實(shí)施例、完全軟件實(shí)施例(包括固件、 駐留軟件、微代碼等)或組合了在此通常被稱為“電路”、“模塊”或“系統(tǒng)”的軟件和硬件方面的實(shí)施例的形式。此外,本發(fā)明的各方面可以采取體現(xiàn)在一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)(在介質(zhì)中包含計(jì)算機(jī)可讀程序代碼)中的計(jì)算機(jī)程序產(chǎn)品的形式。可以使用一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)的任意組合。所述計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī)可讀信號(hào)介質(zhì)或計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是(但不限于) 電、磁、光、電磁、紅外線或半導(dǎo)體系統(tǒng)、裝置或設(shè)備或它們的任意適當(dāng)組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的實(shí)例(非窮舉列表)可以包括以下項(xiàng)具有一條或多條線的電連接、便攜式計(jì)算機(jī)軟盤、硬盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦寫可編程只讀存儲(chǔ)器 (EPR0M或閃存)、光纖、便攜式光盤只讀存儲(chǔ)器(CD-ROM)、光存儲(chǔ)設(shè)備、磁存儲(chǔ)設(shè)備或它們的任意適當(dāng)組合。在本文檔的上下文中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是任何能夠包含或存儲(chǔ)由指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或與所述指令執(zhí)行系統(tǒng)、裝置或設(shè)備結(jié)合的程序的有形介質(zhì)。計(jì)算機(jī)可讀信號(hào)介質(zhì)可以包括例如在基帶中或作為載波的一部分傳播的帶有計(jì)算機(jī)可讀程序代碼的數(shù)據(jù)信號(hào)。此類傳播信號(hào)可以采取任何不同的形式,包括但不限于電磁、光或它們的任意適合組合。計(jì)算機(jī)可讀信號(hào)介質(zhì)可以是任何并非計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)并且可以傳送、傳播或傳輸由指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或與所述指令執(zhí)行系統(tǒng)、裝置或設(shè)備結(jié)合的程序的計(jì)算機(jī)可讀介質(zhì)??梢允褂萌魏芜m當(dāng)?shù)慕橘|(zhì)(包括但不限于無(wú)線、有線、光纜、RF等或它們的任意適當(dāng)組合)來(lái)傳輸計(jì)算機(jī)可讀介質(zhì)中包含的程序代碼。用于執(zhí)行本發(fā)明的各方面的操作的計(jì)算機(jī)程序代碼可以使用一種或多種編程語(yǔ)目的任意組合來(lái)編寫,所述編程語(yǔ)目包括諸如Java、Smalltalk、C++之類的面向?qū)ο蟮木幊陶Z(yǔ)言或者諸如“C”編程語(yǔ)言或類似的編程語(yǔ)言之類的常規(guī)過(guò)程編程語(yǔ)言。所述程序代碼可以完全地在用戶的計(jì)算上執(zhí)行、部分地在用戶的計(jì)算機(jī)上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶的計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在后一種情形中,遠(yuǎn)程計(jì)算機(jī)可以通過(guò)任何種類的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN) —連接到用戶的計(jì)算機(jī),或者,可以(例如利用因特網(wǎng)服務(wù)提供商來(lái)通過(guò)因特網(wǎng))連接到外部計(jì)算機(jī)。下面參考根據(jù)本發(fā)明的各實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方塊圖對(duì)本發(fā)明的各方面進(jìn)行描述。將理解,所述流程圖和/或方塊圖的每個(gè)方塊以及所述流程圖和/或方塊圖中的方塊的組合可以由計(jì)算機(jī)程序指令來(lái)實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以被提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或其他可編程數(shù)據(jù)處理裝置的處理器以產(chǎn)生機(jī)器,以便通過(guò)所述計(jì)算機(jī)或其他可編程數(shù)據(jù)處理裝置的處理器執(zhí)行的所述指令產(chǎn)生用于實(shí)現(xiàn)在一個(gè)或多個(gè)流程圖和/或方塊圖方塊中指定的功能/操作的裝置。這些計(jì)算機(jī)程序指令也可以被存儲(chǔ)在可引導(dǎo)計(jì)算機(jī)、其他可編程數(shù)據(jù)處理裝置或其他設(shè)備以特定方式執(zhí)行功能的計(jì)算機(jī)可讀介質(zhì)中,以便存儲(chǔ)在所述計(jì)算機(jī)可讀介質(zhì)中的所述指令產(chǎn)生一件包括實(shí)現(xiàn)在所述一個(gè)或多個(gè)流程圖和/或方塊圖方塊中指定的功能/操作的指令的制品。所述計(jì)算機(jī)程序指令還可被加載到計(jì)算機(jī)、其他可編程數(shù)據(jù)處理裝置或其他設(shè)備,以導(dǎo)致在所述計(jì)算機(jī)、其他可編程裝置或其他設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過(guò)程,從而在所述計(jì)算機(jī)或其他可編程裝置上執(zhí)行的指令提供用于實(shí)現(xiàn)在一個(gè)或多個(gè)流程圖和/或方塊圖方塊中指定的功能/操作的過(guò)程。本發(fā)明的各實(shí)施例可以通過(guò)云計(jì)算基礎(chǔ)設(shè)施被提供給最終用戶。云計(jì)算通常指通過(guò)網(wǎng)絡(luò)作為服務(wù)來(lái)供應(yīng)可擴(kuò)展的計(jì)算資源。更正式地說(shuō),云計(jì)算可以被定義為在計(jì)算資源及其基礎(chǔ)技術(shù)架構(gòu)(例如,服務(wù)器、存儲(chǔ)設(shè)備、網(wǎng)絡(luò))之間提供抽象的計(jì)算能力,從而能夠?qū)膳渲玫挠?jì)算資源共享池進(jìn)行方便、按需的網(wǎng)絡(luò)訪問(wèn),可以以最少的管理工作或服務(wù)提供商交互快速地供應(yīng)和釋放所述可配置的計(jì)算資源。因此,云計(jì)算允許用戶訪問(wèn)“云”中的虛擬計(jì)算資源(例如,存儲(chǔ)設(shè)備、數(shù)據(jù)、應(yīng)用,甚至完整的虛擬化計(jì)算系統(tǒng)),而不考慮用于提供所述計(jì)算資源的基礎(chǔ)物理系統(tǒng)(或這些系統(tǒng)的位置)。通常,云計(jì)算資源通過(guò)按使用付費(fèi)的方式被提供給用戶,其中用戶僅針對(duì)實(shí)際使用的計(jì)算資源(例如,用戶使用的存儲(chǔ)空間量或用戶實(shí)例化的虛擬化系統(tǒng)的數(shù)量)付費(fèi)。用戶可以通過(guò)因特網(wǎng)在任何時(shí)間、從任何位置訪問(wèn)駐留在云中的任何資源。在本發(fā)明的上下文中,用戶可以訪問(wèn)云中提供的應(yīng)用或相關(guān)數(shù)據(jù)。例如,用于創(chuàng)建流數(shù)據(jù)庫(kù)應(yīng)用的節(jié)點(diǎn)可以是由云服務(wù)提供商托管的虛擬機(jī)。圖1A-1B示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的被配置為執(zhí)行流應(yīng)用的計(jì)算基礎(chǔ)設(shè)施100。如所示出的,計(jì)算基礎(chǔ)設(shè)施100包括管理系統(tǒng)105和多個(gè)計(jì)算節(jié)點(diǎn)130卜4,每個(gè)計(jì)算節(jié)點(diǎn)連接到通信網(wǎng)絡(luò)120。此外,管理系統(tǒng)105包括運(yùn)算符圖132和流管理器134。如下面更詳細(xì)描述的,運(yùn)算符圖132表示從一個(gè)或多個(gè)源處理單元(PE)開(kāi)始一直到一個(gè)或多個(gè)匯(sink)處理單元的流應(yīng)用。數(shù)據(jù)元素流入流應(yīng)用的源PE并由該P(yáng)E處理。通常,處理單元從流接收具有數(shù)據(jù)元素的N元組以及將具有數(shù)據(jù)元素的N元組發(fā)出到流(除了流在該處終止的匯PE之外)。當(dāng)然,由處理單元接收的N元組不必是向下游發(fā)送的同一 N元組。此外,處理單元可以被配置為以不同于N元組的格式接收或發(fā)出數(shù)據(jù)(例如,處理單元可交換標(biāo)記為XML文檔的數(shù)據(jù))。此外,每個(gè)處理單元可以被配置為對(duì)所接收的元組執(zhí)行任何形式的數(shù)據(jù)處理功能,例如包括寫入數(shù)據(jù)庫(kù)表或執(zhí)行其他數(shù)據(jù)庫(kù)操作(例如數(shù)據(jù)聯(lián)接、拆分、讀取等)以及執(zhí)行其他數(shù)據(jù)分析功能或操作。流管理器134可以被配置為監(jiān)視在計(jì)算節(jié)點(diǎn)130卜4上運(yùn)行的流應(yīng)用,以及更改運(yùn)算符圖132的結(jié)構(gòu)。例如,流管理器134可以將處理單元(PE)從一個(gè)計(jì)算節(jié)點(diǎn)130移動(dòng)到另一個(gè)節(jié)點(diǎn),以便例如管理計(jì)算基礎(chǔ)設(shè)施100中的計(jì)算節(jié)點(diǎn)130的處理負(fù)載。進(jìn)而,流管理器134可以通過(guò)插入、刪除、融合、解除融合或以其他方式修改在計(jì)算節(jié)點(diǎn)130“上運(yùn)行的處理單元(或何種數(shù)據(jù)元組流入處理單元)來(lái)控制流應(yīng)用。圖IB示出了包括十個(gè)在計(jì)算節(jié)點(diǎn)13(V4上運(yùn)行的處理單元(標(biāo)記為PE1-PE10)的實(shí)例運(yùn)算符圖。雖然處理單元可以作為獨(dú)立運(yùn)行的進(jìn)程(具有它自己的進(jìn)程ID(PID)和存儲(chǔ)器空間)執(zhí)行,但是也可以融合多個(gè)處理單元以作為單個(gè)進(jìn)程(具有PID和存儲(chǔ)器空間) 運(yùn)行。在兩個(gè)(或更多)處理單元獨(dú)立運(yùn)行的情況下,可以使用網(wǎng)絡(luò)套接字(例如,TCP/IP 套接字)進(jìn)行進(jìn)程間通信。但是,當(dāng)進(jìn)程融合在一起時(shí),融合后的處理單元可以使用更快速的通信技術(shù)在處理單元(以及每個(gè)處理單元中的運(yùn)算符)之間傳遞N元組(或其他數(shù)據(jù))。如圖所示,運(yùn)算符圖從源PE 135 (標(biāo)示為PEl)開(kāi)始并在PE 140"(標(biāo)示為PE6和 PE10)結(jié)束。計(jì)算節(jié)點(diǎn)UO1包括源PEl以及PE2和PE3。源PEl發(fā)出PE2和PE3所接收的元組。例如,PEl可以拆分在元組中接收的數(shù)據(jù)單元并將某些數(shù)據(jù)單元傳遞到PE2,同時(shí)將其他數(shù)據(jù)元素傳遞到PE3。流向PE2的數(shù)據(jù)產(chǎn)生被發(fā)出到計(jì)算節(jié)點(diǎn)1302上的PE4的元組。 由PE4發(fā)出的數(shù)據(jù)元組流向匯PE6 140lo類似地,從PE3流向PE5的數(shù)據(jù)元組也到達(dá)匯PE6 HOp因此,除了對(duì)于此實(shí)例運(yùn)算符圖是匯之外,PE6可以被配置為執(zhí)行聯(lián)接運(yùn)算,從而組合從PE4和PE5接收的元組。此實(shí)例運(yùn)算符圖還示出了從PE3流向計(jì)算節(jié)點(diǎn)1303上的PE7的數(shù)據(jù)元組,計(jì)算節(jié)點(diǎn)1303本身示出了流向PE8并循環(huán)返回PE7的數(shù)據(jù)元組。從PE8發(fā)出的數(shù)據(jù)元組流向計(jì)算節(jié)點(diǎn)1304上的PE9,PE9又發(fā)出要由匯PElO 1402處理的元組。圖2是根據(jù)本發(fā)明的一個(gè)實(shí)施例的圖1A-1B的計(jì)算節(jié)點(diǎn)130的更詳細(xì)的視圖。如所示出的,計(jì)算節(jié)點(diǎn)130包括但不限于中央處理單元(CPU) 205、網(wǎng)絡(luò)接口 215、互連220、存儲(chǔ)器225和存儲(chǔ)單元230。計(jì)算節(jié)點(diǎn)130還可以包括用于將I/O設(shè)備212 (例如,鍵盤、顯示器和鼠標(biāo)設(shè)備)連接到計(jì)算節(jié)點(diǎn)130的I/O設(shè)備接口 210。CPU 205檢索和執(zhí)行存儲(chǔ)在存儲(chǔ)器225中的編程指令。類似地,CPU205存儲(chǔ)和檢
8索駐留在存儲(chǔ)器225中的應(yīng)用數(shù)據(jù)?;ミB220用于在CPU 205、I/O設(shè)備接口 210、存儲(chǔ)單元230、網(wǎng)絡(luò)接口 215和存儲(chǔ)器225之間傳輸編程指令和應(yīng)用數(shù)據(jù)。所包括的CPU 205表示單個(gè)CPU、多個(gè)CPU、具有多個(gè)處理核心的單個(gè)CPU等。所包括的存儲(chǔ)器225通常表示隨機(jī)存取存儲(chǔ)器。諸如硬盤驅(qū)動(dòng)器、固態(tài)設(shè)備(SSD)或閃存存儲(chǔ)驅(qū)動(dòng)器之類的存儲(chǔ)單元230可以存儲(chǔ)非易失性數(shù)據(jù)。在此實(shí)例中,存儲(chǔ)器225包括融合后的處理單元(PE) 235、解除融合后的PE 245、 調(diào)試器應(yīng)用250以及流連接數(shù)據(jù)255。融合后的PE 235包括一系列運(yùn)算符240。如上所述, 每個(gè)運(yùn)算符240可以提供被配置為處理流入處理單元(例如,PE 235)的數(shù)據(jù)以及將數(shù)據(jù)發(fā)出到該P(yáng)E中的其他運(yùn)算符240和流應(yīng)用中的其他PE的一小段可執(zhí)行代碼。此類PE可以位于同一計(jì)算節(jié)點(diǎn)130(例如,解除融合后的PE 245)上,也可以位于通過(guò)數(shù)據(jù)通信網(wǎng)絡(luò)120 訪問(wèn)的其他計(jì)算節(jié)點(diǎn)上。流連接數(shù)據(jù)255表示計(jì)算節(jié)點(diǎn)130上的PE之間的連接(例如,融合后的PE 240和解除融合后的PE 245之間的TCP/IP套接字連接),以及到具有流應(yīng)用中的上游或下游PE的其他計(jì)算節(jié)點(diǎn)130的連接(也通過(guò)TCP/IP套接字(或其他進(jìn)程間數(shù)據(jù)通信機(jī)制))。緩沖的流數(shù)據(jù)260表示從上游處理單元(或從流應(yīng)用的數(shù)據(jù)源)流入計(jì)算節(jié)點(diǎn) 105的數(shù)據(jù)的存儲(chǔ)空間。例如,緩沖的流數(shù)據(jù)可以包括等待由PE240或245之一處理的數(shù)據(jù)元組。緩沖的流數(shù)據(jù)260還可以存儲(chǔ)由PE 240或245執(zhí)行的數(shù)據(jù)處理的結(jié)果,所述結(jié)果將被發(fā)送到下游處理單元(或被丟棄)。調(diào)試器250提供被配置為允許開(kāi)發(fā)人員調(diào)試計(jì)算節(jié)點(diǎn)130上運(yùn)行的處理單元245 的軟件應(yīng)用。例如,調(diào)試器250可用于設(shè)置斷點(diǎn)、執(zhí)行指令中的指令步進(jìn)函數(shù)調(diào)用、檢查變量以及提供其他各種用于調(diào)試處理單元245的功能和/或特性。在本發(fā)明的上下文中,調(diào)試器250可以被配置為選擇性地融合和解除融合PE (或以其他方式修改流應(yīng)用的狀態(tài))以促進(jìn)調(diào)試過(guò)程。例如,在一個(gè)實(shí)施例中,調(diào)試器可以如開(kāi)發(fā)人員指定的那樣融合和解除融合 PE。備選地,調(diào)試器250可被配置為提供用于調(diào)試一個(gè)或多個(gè)給定處理單元的流狀態(tài)。為此,調(diào)試器250可以與管理系統(tǒng)130上的流調(diào)試器交互以分析運(yùn)算符圖以及處理單元跨一系列計(jì)算節(jié)點(diǎn)105的分布,以便確定如何修改與流應(yīng)用關(guān)聯(lián)的運(yùn)算符圖。除了融合和解除融合處理單元之外,調(diào)試器250還可以例如通過(guò)以下方式修改流應(yīng)用的運(yùn)行狀態(tài)暫停(或限制)跨被調(diào)試PE的數(shù)據(jù)流、指定不參與調(diào)試過(guò)程的數(shù)據(jù)、復(fù)制PE以創(chuàng)建PE的調(diào)試副本, 或執(zhí)行其他操作以允許調(diào)試一個(gè)或多個(gè)處理單元。圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施例的圖I的服務(wù)器計(jì)算系統(tǒng)105的更詳細(xì)的視圖。 如所示出的,服務(wù)器計(jì)算系統(tǒng)105包括但不限于中央處理單元(CPU) 305、網(wǎng)絡(luò)接口 315、互連320、存儲(chǔ)器325和存儲(chǔ)單元330??蛻魴C(jī)系統(tǒng)130還可以包括將I/O設(shè)備312 (例如,鍵盤、顯示器和鼠標(biāo)設(shè)備)連接到服務(wù)器計(jì)算系統(tǒng)105的I/O設(shè)備接口 310。與圖2的CPU 205 一樣,CPU 305被配置為檢索和執(zhí)行存儲(chǔ)在存儲(chǔ)器325和存儲(chǔ)單元330中的編程指令。類似地,CPU 305被配置為存儲(chǔ)和檢索駐留在存儲(chǔ)器325和存儲(chǔ)單元330中的應(yīng)用數(shù)據(jù)?;ミB320被配置為在CPU 305、I/O設(shè)備接口 310、存儲(chǔ)單元330、 網(wǎng)絡(luò)接口 315和存儲(chǔ)器325之間移動(dòng)諸如編程指令和應(yīng)用數(shù)據(jù)之類的數(shù)據(jù)。與CPU 205 — 樣,所包括的CPU 305表示單個(gè)CPU、多個(gè)CPU、具有多個(gè)處理核心的單個(gè)CPU等。所包括的存儲(chǔ)器325通常表示隨機(jī)存取存儲(chǔ)器。網(wǎng)絡(luò)接口 315被配置為通過(guò)通信網(wǎng)絡(luò)120傳輸數(shù)據(jù)。雖然被示為單個(gè)單元,但存儲(chǔ)單元330可以是固定和/或可移動(dòng)的存儲(chǔ)設(shè)備(例如固定盤驅(qū)動(dòng)器、可移動(dòng)存儲(chǔ)器卡、光存儲(chǔ)設(shè)備、SSD或閃存設(shè)備、網(wǎng)絡(luò)連接存儲(chǔ)(NAS)或到存儲(chǔ)區(qū)域網(wǎng)絡(luò)(SAN)設(shè)備的連接)的組合。如圖所示,存儲(chǔ)器325存儲(chǔ)流調(diào)試器335、流編輯器300以及流管理器132。存儲(chǔ)單元330包括運(yùn)算符圖134。如上所述,流調(diào)試器可用于管理一個(gè)(或多個(gè))計(jì)算節(jié)點(diǎn)105 上的處理單元(PE)的調(diào)試。例如,流調(diào)試器335可確定一個(gè)處理節(jié)點(diǎn)應(yīng)與其他PE融合(或解除融合)。在這種情況下,流調(diào)試器可確定(通過(guò)運(yùn)算符圖)一大組PE已在一個(gè)計(jì)算節(jié)點(diǎn)上融合,但是調(diào)試斷點(diǎn)僅包括在幾個(gè)處理單元中。在這種情況下,流調(diào)試器335可決定將具有斷點(diǎn)的PE與該較大的組解除融合。在一個(gè)實(shí)施例中,流調(diào)試器335通過(guò)調(diào)用流編輯器 340以根據(jù)需要重新編輯PE/運(yùn)算符源代碼的單元來(lái)解除融合PE。在當(dāng)前實(shí)例中,帶有斷點(diǎn)的PE可被重新編輯成第一 PE,而剩余的PE (來(lái)自融合后的PE)被重新編輯成第二 PE。準(zhǔn)備就緒之后,流管理器132可以從運(yùn)行的流中移除融合后的PE,并代之以流編輯器340所生成的第一和第二 PE。之后,命中第一 PE中的斷點(diǎn),第一 PE停止執(zhí)行而不破壞第二 PE所執(zhí)行的任何處理。圖4示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的流應(yīng)用中的計(jì)算節(jié)點(diǎn)的實(shí)例。如所示出的,計(jì)算節(jié)點(diǎn)1302上的融合后的處理單元405包括三個(gè)處理單元(標(biāo)記為PE1-PE3),處理單元405接收N元組數(shù)據(jù)流并將N元組發(fā)出到計(jì)算節(jié)點(diǎn)1303上的處理單元410 (標(biāo)記為PE4)。 在此實(shí)例中,融合后的處理單元405包括源PE 135 (標(biāo)記為PEl),源PE 135接收包括〈姓名,部門,薪金,性別 > 的元組。PEl獲得此N元組,并根據(jù)由PEl接收的元組中的性別值生成一組被發(fā)送到PE2的元組和另一組被發(fā)送到PE3的元組。依次地,PE2和PE3針對(duì)從PEl 接收的每個(gè)元組執(zhí)行數(shù)據(jù)庫(kù)寫入,并生成被發(fā)送到PE4的包括〈姓名,部門,薪金 > 的元組。 一旦接收到該元組,PE4就訪問(wèn)第三方Web服務(wù)并生成在流應(yīng)用中進(jìn)一步向下游發(fā)送的元組。圖5示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的調(diào)試流數(shù)據(jù)庫(kù)應(yīng)用中的處理單元的方法 500。如圖所示,方法500從步驟505開(kāi)始,其中調(diào)試器應(yīng)用接收流應(yīng)用的運(yùn)算符圖中包括的處理單元的斷點(diǎn)指示。在步驟510,調(diào)試器應(yīng)用可識(shí)別該處理單元在運(yùn)算符圖中相對(duì)于其他處理單元的位置。根據(jù)此位置,調(diào)試器應(yīng)用可以確定融合(或解除融合)運(yùn)算符圖中的處理單元(步驟515)。此外,調(diào)試器應(yīng)用可以例如通過(guò)復(fù)制帶有斷點(diǎn)的處理單元或使特定數(shù)據(jù)元組(或數(shù)據(jù)流)免于調(diào)試來(lái)對(duì)流應(yīng)用的操作做出其他更改。類似地,調(diào)試器應(yīng)用可以指定應(yīng)阻止某些處理單元發(fā)送(或接收)數(shù)據(jù)元組,或應(yīng)丟棄調(diào)試會(huì)話期間生成的數(shù)據(jù)處理結(jié)果。在步驟520,任何已經(jīng)融合或解除融合的PE都可以被重啟并部署到應(yīng)用流(包括帶有斷點(diǎn)的PE)。在步驟525,一旦PE在應(yīng)用流中運(yùn)行(并且調(diào)試器選擇對(duì)流應(yīng)用做出任何其他更改),便可評(píng)估被調(diào)試PE的操作。例如,當(dāng)觸發(fā)斷點(diǎn)時(shí),被調(diào)試PE可暫停執(zhí)行,從而允許開(kāi)發(fā)人員接著通過(guò)步進(jìn)函數(shù)調(diào)用以逐步的方式執(zhí)行該P(yáng)E,以便檢查變量和執(zhí)行其他任何調(diào)試功能以評(píng)估處理單元。同時(shí),數(shù)據(jù)元組繼續(xù)流向正在被調(diào)試的PE并可以被存儲(chǔ)在緩沖區(qū)中。也就是說(shuō),一旦觸發(fā)斷點(diǎn),就可以緩沖流向正在被調(diào)試的PE的元組,直到該P(yáng)E 恢復(fù)執(zhí)行。在步驟530,一旦調(diào)試會(huì)話完成,調(diào)試應(yīng)用便可恢復(fù)流應(yīng)用的狀態(tài),撤銷為了支持調(diào)試會(huì)話所做的任何更改。相應(yīng)地,可以解除融合(或再融合)作為調(diào)試會(huì)話一部分融合 (或解除融合)的PE、可以恢復(fù)元組流,或者可以丟棄緩沖的數(shù)據(jù)結(jié)果,可以刪除重復(fù)的處
理單元等。圖6-8提供根據(jù)本發(fā)明的各實(shí)施例的首先在圖4中示出的被修改以例示調(diào)試流應(yīng)用的情況的計(jì)算節(jié)點(diǎn)和流應(yīng)用的實(shí)例。首先,圖6示出圖4的融合后的處理單元405被部分地解除融合以允許調(diào)試處理單元之一的實(shí)例。假設(shè)開(kāi)發(fā)人員在PE2中添加了一個(gè)或多個(gè)斷點(diǎn)。在這種情況下,調(diào)試器應(yīng)用可確定能夠獨(dú)立于PEl和PE3執(zhí)行的處理而調(diào)試PE2,并且從融合后的處理單元405解除融合PE2。因此,如圖所示,融合后的PE 410已經(jīng)被修改為刪除PE2,從而形成部分解除融合的PE 405’。此外,PE2現(xiàn)在作為解除融合的PE 605執(zhí)行。將PE2作為獨(dú)立進(jìn)程運(yùn)行允許在數(shù)據(jù)元組流過(guò)部分解除融合的PE 405’時(shí)調(diào)試PE2而不延緩應(yīng)用流。同時(shí),運(yùn)算符圖的基本結(jié)構(gòu)保持不變;元組仍然首先流向PE1,PE1生成發(fā)送到PE2和PE3的元組。類似地,圖7示出圖4的處理單元410與其他PE融合之后的實(shí)例。在該實(shí)例中, 假設(shè)用戶在PE4中放置斷點(diǎn)。在這種情況下,調(diào)試器應(yīng)用可確定下游處理單元(PE5)具有相關(guān)性,這樣當(dāng)PE4停止執(zhí)行時(shí),PE5也應(yīng)停止執(zhí)行。例如,PE5可以被配置為按照指定間隔定期從PE4接收數(shù)據(jù)。給定此相關(guān)性,當(dāng)用戶在PE4中插入斷點(diǎn)時(shí),調(diào)試器應(yīng)用可將PE4 和PE5融合成融合后的處理單元410’。這允許在不破壞PE5的操作的情況下調(diào)試PE4,因?yàn)楫?dāng)命中PE4中的斷點(diǎn)時(shí),將停止執(zhí)行PE4和PE5兩者的操作。圖8示出修改圖4的處理單元410的另一實(shí)例。在該實(shí)例中,用戶再次在PE 410(標(biāo)示為PE4)中放置斷點(diǎn)。但是在此情況下,假設(shè)調(diào)試器應(yīng)用確定調(diào)試PE 410不應(yīng)破壞通過(guò)應(yīng)用流流向PE 805(標(biāo)示為PE5)的數(shù)據(jù)。在這種情況下,調(diào)試器應(yīng)用可以創(chuàng)建調(diào)試克隆單元(clone)410’并將該克隆單元插入應(yīng)用流。此結(jié)果在圖8中示出,其中從PE 405 流出的數(shù)據(jù)被復(fù)制并被發(fā)送到PE 410和調(diào)試克隆單元410’兩者。因此,PE 410繼續(xù)處理流并將元組發(fā)出到PE 805所接收的流。同時(shí),從PE 405流出的數(shù)據(jù)還被發(fā)送到調(diào)試克隆單元410’并將元組輸出到調(diào)試日志。這允許調(diào)試器在不破壞應(yīng)用流的情況下針對(duì)PE 410’ 運(yùn)行調(diào)試會(huì)話。 有利地,本發(fā)明的上述實(shí)施例提供了調(diào)試基于流的應(yīng)用中的一個(gè)或多個(gè)處理單元的技術(shù)。具體地說(shuō),本發(fā)明的各實(shí)施例提供了通過(guò)選擇性地融合(解除融合)在一組計(jì)算節(jié)點(diǎn)上運(yùn)行的處理單元,以降低調(diào)試一個(gè)或多個(gè)處理單元對(duì)總體運(yùn)行環(huán)境的影響的方式來(lái)調(diào)試處理單元的技術(shù)。除了融合和解除融合處理單元以外,調(diào)試應(yīng)用和流管理器還可以以各種方式修改應(yīng)用流中的數(shù)據(jù)流以盡量減少由調(diào)試會(huì)話導(dǎo)致的任何破壞。附圖中的流程圖和方塊圖示出了根據(jù)本發(fā)明的各種實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)施方式的架構(gòu)、功能和操作。在此方面,所述流程圖或方塊圖中的每個(gè)方塊都可以表示代碼的模塊、段或部分,所述代碼包括用于實(shí)現(xiàn)指定的邏輯功能(多個(gè))的一個(gè)或多個(gè)可執(zhí)行指令。還應(yīng)指出,在某些備選實(shí)施方式中,在方塊中說(shuō)明的功能可以不按圖中說(shuō)明的順序發(fā)生。例如,示為連續(xù)的兩個(gè)方塊可以實(shí)際上被基本同時(shí)地執(zhí)行,或者某些時(shí)候,取決于所涉及的功能,可以以相反的順序執(zhí)行所述方塊。還將指出,所述方塊圖和/或流程圖的每個(gè)方塊以及所述方塊圖和/或流程圖中的方塊的組合可以由執(zhí)行指定功能或操作的基于專用硬件的系統(tǒng)或?qū)S糜布陀?jì)算機(jī)指令的組合來(lái)實(shí)現(xiàn)。
雖然上述內(nèi)容涉及本發(fā)明的各實(shí)施例,但可以在不偏離本發(fā)明的基本范圍的情況下設(shè)計(jì)本發(fā)明的其他和進(jìn)一步的實(shí)施例,并且本發(fā)明的范圍由以下權(quán)利要求確定。
權(quán)利要求
1.一種調(diào)試從一個(gè)或多個(gè)計(jì)算節(jié)點(diǎn)上執(zhí)行的多個(gè)處理單元形成的流應(yīng)用的方法,所述方法包括接收所述多個(gè)處理單元中的第一處理單元內(nèi)的調(diào)試斷點(diǎn)的位置指示;評(píng)估運(yùn)算符圖以識(shí)別所述第一處理單元相對(duì)于所述多個(gè)處理單元中的一個(gè)或多個(gè)其他處理單元的位置;修改所述流應(yīng)用的狀態(tài)以允許調(diào)試所述第一處理單元;以及啟動(dòng)所述第一處理單元的調(diào)試會(huì)話。
2.如權(quán)利要求I中所述的方法,其中每個(gè)處理單元在所述計(jì)算節(jié)點(diǎn)中的一個(gè)給定計(jì)算節(jié)點(diǎn)上作為分配有進(jìn)程ID的計(jì)算進(jìn)程而執(zhí)行。
3.如權(quán)利要求I中所述的方法,其中所述第一處理單元被配置為接收第一N元組、處理所述第一 N元組,以及生成發(fā)送到第二處理單元的第二 N元組。
4.如權(quán)利要求I中所述的方法,其中修改所述流應(yīng)用的狀態(tài)以允許調(diào)試所述第一處理單元包括生成所述第一處理單元的調(diào)試克隆單元;將所述斷點(diǎn)插入所述調(diào)試克隆單元;以及將所述調(diào)試克隆單元插入所述流應(yīng)用。
5.如權(quán)利要求I中所述的方法,其中修改所述流應(yīng)用的狀態(tài)以允許調(diào)試所述第一處理單元包括暫停至少第二處理單元的執(zhí)行;從所述第一和第二處理單元生成融合后的處理單元;將所述斷點(diǎn)插入所述融合后的處理單元;以及將所述融合后的處理單元插入所述流應(yīng)用。
6.如權(quán)利要求I中所述的方法,其中所述第一處理單元是包括所述第一處理單元和第二處理單元的融合后的處理單元,并且其中修改所述流應(yīng)用的狀態(tài)以允許調(diào)試所述第一處理單元包括暫停所述第一處理單元的執(zhí)行;生成包括所述第一處理單元的第一解除融合后的處理單元;將所述斷點(diǎn)插入所述第一解除融合后的處理單元;生成包括至少所述第二處理單元的第二解除融合后的處理單元;將所述第一和第二解除融合后的處理單元插入所述流應(yīng)用。
7.如權(quán)利要求I中所述的方法,還包括在所述調(diào)試會(huì)話之后,恢復(fù)所述流應(yīng)用的狀態(tài)。
8.—種調(diào)試從一個(gè)或多個(gè)計(jì)算節(jié)點(diǎn)上執(zhí)行的多個(gè)處理單元形成的流應(yīng)用的系統(tǒng),所述系統(tǒng)包括多個(gè)計(jì)算節(jié)點(diǎn),每個(gè)計(jì)算節(jié)點(diǎn)包括處理器和存儲(chǔ)器,其中所述計(jì)算節(jié)點(diǎn)被配置為執(zhí)行流應(yīng)用的處理單元;以及包括至少處理器和存儲(chǔ)器的管理系統(tǒng),其中所述存儲(chǔ)器存儲(chǔ)流調(diào)試應(yīng)用,所述流調(diào)試應(yīng)用當(dāng)在所述管理系統(tǒng)上執(zhí)行時(shí),被配置為執(zhí)行用于調(diào)試在所述多個(gè)計(jì)算節(jié)點(diǎn)上執(zhí)行的所述流應(yīng)用的操作,所述操作包括接收所述多個(gè)處理單元中的第一處理單元內(nèi)的調(diào)試斷點(diǎn)的位置指示;評(píng)估運(yùn)算符圖以識(shí)別所述第一處理單元相對(duì)于所述多個(gè)處理單元中的一個(gè)或多個(gè)其他處理單元的位置;修改所述流應(yīng)用的狀態(tài)以允許調(diào)試所述第一處理單元;以及啟動(dòng)所述第一處理單元的調(diào)試會(huì)話。
9.如權(quán)利要求8中所述的系統(tǒng),其中每個(gè)處理單元在所述計(jì)算節(jié)點(diǎn)中的一個(gè)給定計(jì)算節(jié)點(diǎn)上作為分配有進(jìn)程ID的計(jì)算進(jìn)程而執(zhí)行。
10.如權(quán)利要求8中所述的系統(tǒng),其中所述第一處理單元被配置為接收第一N元組、處理所述第一 N元組,以及生成發(fā)送到第二處理單元的第二 N元組。
11.如權(quán)利要求8中所述的系統(tǒng),其中修改所述流應(yīng)用的狀態(tài)以允許調(diào)試所述第一處理單元包括生成所述第一處理單元的調(diào)試克隆單元;將所述斷點(diǎn)插入所述調(diào)試克隆單元;以及將所述調(diào)試克隆單元插入所述流應(yīng)用。
12.如權(quán)利要求8中所述的系統(tǒng),其中修改所述流應(yīng)用的狀態(tài)以允許調(diào)試所述第一處理單元包括暫停至少第二處理單元的執(zhí)行;從所述第一和第二處理單元生成融合后的處理單元;將所述斷點(diǎn)插入所述融合后的處理單元;以及將所述融合后的處理單元插入所述流應(yīng)用。
13.如權(quán)利要求8中所述的系統(tǒng),其中所述第一處理單元是包括所述第一處理單元和第二處理單元的融合后的處理單元,并且其中修改所述流應(yīng)用的狀態(tài)以允許調(diào)試所述第一處理單元包括暫停所述第一處理單元的執(zhí)行;生成包括所述第一處理單元的第一解除融合后的處理單元;將所述斷點(diǎn)插入所述第一解除融合后的處理單元;生成包括至少所述第二處理單元的第二解除融合后的處理單元;將所述第一和第二解除融合后的處理單元插入所述流應(yīng)用。
14.如權(quán)利要求8中所述的系統(tǒng),其中所述操作還包括在所述調(diào)試會(huì)話之后,恢復(fù)所述流應(yīng)用的狀態(tài)。
全文摘要
本發(fā)明涉及一種用于基于流的調(diào)試的方法和系統(tǒng)。描述了通過(guò)選擇性地融合(解除融合)在一組計(jì)算節(jié)點(diǎn)上運(yùn)行的處理單元,以降低調(diào)試一個(gè)或多個(gè)處理單元對(duì)總體運(yùn)行環(huán)境的影響的方式,調(diào)試基于流的數(shù)據(jù)庫(kù)應(yīng)用中的一個(gè)或多個(gè)處理單元的技術(shù)。除了融合和解除融合處理單元或以其他方式修改流應(yīng)用的狀態(tài)以外,調(diào)試應(yīng)用和流管理器還可以以各種方式修改應(yīng)用流中的數(shù)據(jù)流以盡量減少由調(diào)試會(huì)話導(dǎo)致的任何破壞。
文檔編號(hào)G06F17/30GK102591899SQ20111036007
公開(kāi)日2012年7月18日 申請(qǐng)日期2011年11月14日 優(yōu)先權(quán)日2010年11月30日
發(fā)明者E·L·巴斯尼斯, J·M·桑多索索, M·D·普法伊費(fèi)爾, R·K·克拉迪克 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司