两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種數(shù)據(jù)流程的處理方法和系統(tǒng)的制作方法

文檔序號(hào):7921506閱讀:134來源:國(guó)知局
專利名稱:一種數(shù)據(jù)流程的處理方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種數(shù)據(jù)流程的處理方法和系統(tǒng)。
背景技術(shù)
在涉及多個(gè)數(shù)據(jù)處理節(jié)點(diǎn)的網(wǎng)絡(luò)中,每個(gè)節(jié)點(diǎn)通常用于完成不同的數(shù)據(jù)處理操作,因 此希望這些節(jié)點(diǎn)并行工作以提高數(shù)據(jù)處理的效率。例如,在一個(gè)用于數(shù)據(jù)倉(cāng)庫(kù)建立的ETL (抽取轉(zhuǎn)換加栽,Extract、 Transform、 Load)系統(tǒng)中,ETL數(shù)據(jù)流程處理邏輯架構(gòu)包括 負(fù)責(zé)數(shù)據(jù)流控制的數(shù)據(jù)總線(Data Bus)和多個(gè)負(fù)責(zé)數(shù)據(jù)處理的ETL節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)用于 完成ETL操作中的不同數(shù)據(jù)處理功能,如果這些節(jié)點(diǎn)并行工作,將會(huì)極大提高ETL操作的 效率。通常, 一個(gè)獨(dú)立的ETL流程對(duì)應(yīng)于數(shù)據(jù)總線上的一個(gè)數(shù)據(jù)處理流程,多節(jié)點(diǎn)的并行 數(shù)據(jù)處理指的是將順序串行執(zhí)行的數(shù)據(jù)流程轉(zhuǎn)換為多個(gè)并行執(zhí)行的數(shù)據(jù)處理流程。在保證 數(shù)據(jù)并行處理的前提下,并行數(shù)據(jù)流程處理過程必須實(shí)現(xiàn)數(shù)據(jù)的完整性,流程的可靠傳輸 以及數(shù)據(jù)流斷點(diǎn)恢復(fù)的能力。
為完成并行數(shù)據(jù)處理任務(wù),目前的并行數(shù)據(jù)流程處理方案提供了一種節(jié)點(diǎn)內(nèi)并行、節(jié) 點(diǎn)間串行的數(shù)據(jù)處理方法,該方法在ETL數(shù)據(jù)總線之上創(chuàng)建多個(gè)執(zhí)行邏輯上并行的數(shù)據(jù)處 理子流程,在參與并行處理的數(shù)據(jù)處理節(jié)點(diǎn),對(duì)應(yīng)各個(gè)數(shù)據(jù)子流程,創(chuàng)建獨(dú)立的線程處理 數(shù)據(jù),節(jié)點(diǎn)上每一個(gè)線程對(duì)應(yīng)一個(gè)串行傳輸?shù)臄?shù)據(jù)流。在這種方式下,其中一個(gè)串行傳輸 數(shù)據(jù)流中的數(shù)據(jù)以批次為單位傳輸,由于節(jié)點(diǎn)內(nèi)的所有線程在并行工作,可以提高數(shù)據(jù)處 理的速度,但是在節(jié)點(diǎn)之間,只有當(dāng)一個(gè)節(jié)點(diǎn)上的所有線程都完成數(shù)據(jù)處理后,才會(huì)以數(shù) 據(jù)包的形式將所有線程的數(shù)據(jù)處理結(jié)果發(fā)送到下一個(gè)節(jié)點(diǎn)處理。
可見,采用上述并行數(shù)據(jù)流程處理方案分批處理數(shù)據(jù)會(huì)造成在A節(jié)點(diǎn)處理和傳輸數(shù)據(jù) 的過程中,其后續(xù)節(jié)點(diǎn)B對(duì)應(yīng)的處理線程處于等待狀態(tài),降低了流程的整體數(shù)據(jù)處理效率。 而且,每個(gè)節(jié)點(diǎn)在處理數(shù)據(jù)之前需要存儲(chǔ)當(dāng)前處理各個(gè)線程需要處理的所有批次數(shù)據(jù),占 用大量的存儲(chǔ)空間。另外,在數(shù)據(jù)流端點(diǎn)恢復(fù)處理功能實(shí)現(xiàn)上,由于數(shù)據(jù)是分批次處理的, 斷點(diǎn)恢復(fù)只能以節(jié)點(diǎn)的數(shù)據(jù)批次為單位。某批次數(shù)據(jù)處理錯(cuò)誤發(fā)生故障只能以重新執(zhí)行該 批次數(shù)據(jù)數(shù)據(jù)處理流程實(shí)現(xiàn)斷點(diǎn)恢復(fù)。也就是說, 一個(gè)節(jié)點(diǎn)中的所有線程中,只要其中的 一個(gè)線程出現(xiàn)數(shù)據(jù)處理的故障,就會(huì)導(dǎo)致其它線程數(shù)據(jù)處理結(jié)果的延遲處理,從而導(dǎo)致節(jié) 點(diǎn)整體數(shù)據(jù)處理的延遲,這不可避免地降低整個(gè)流程的數(shù)據(jù)處理效率。

發(fā)明內(nèi)容
針對(duì)現(xiàn)有的并行數(shù)據(jù)流程處理方案的缺點(diǎn),本發(fā)明要解決的問題在于,提供一種能夠 節(jié)省節(jié)點(diǎn)存儲(chǔ)資源、具有較高數(shù)據(jù)處理效率的數(shù)據(jù)流程處理方法和系統(tǒng),實(shí)現(xiàn)多節(jié)點(diǎn)網(wǎng)絡(luò)
的快速數(shù)據(jù)處理。
本發(fā)明實(shí)施例提供的數(shù)據(jù)流程的處理方法,基于邏輯上能夠互聯(lián)互通的節(jié)點(diǎn)形成的網(wǎng) 絡(luò),該方法首先將一個(gè)任務(wù)對(duì)應(yīng)的數(shù)據(jù)處理流程劃分為多個(gè)并行數(shù)據(jù)處理子流程,以及確
定所述數(shù)據(jù)處理流程或子流程涉及的節(jié)點(diǎn);基于所述節(jié)點(diǎn)和多個(gè)并行數(shù)據(jù)處理子流程,在
所述數(shù)據(jù)處理流程的源節(jié)點(diǎn)和目的節(jié)點(diǎn)之間,為每一個(gè)數(shù)據(jù)處理子流程創(chuàng)建對(duì)應(yīng)的數(shù)據(jù)管 道,利用對(duì)應(yīng)的數(shù)據(jù)管道,所述節(jié)點(diǎn)按照數(shù)據(jù)處理子流程的順序,完成每一個(gè)數(shù)據(jù)處理子 流程的數(shù)據(jù)處理操作。
對(duì)于上述方法一種優(yōu)選的方式是分別用不同的線程分別完成待處理數(shù)據(jù)的輸入、數(shù) 據(jù)處理和數(shù)據(jù)處理結(jié)果的輸出。
本發(fā)明實(shí)施例提供的數(shù)據(jù)流程的處理系統(tǒng),包括多個(gè)邏輯上能夠互聯(lián)互通的網(wǎng)絡(luò)節(jié)點(diǎn), 所述節(jié)點(diǎn)可以是系統(tǒng)中一個(gè)任務(wù)對(duì)應(yīng)的數(shù)據(jù)處理流程涉及的節(jié)點(diǎn),所述數(shù)據(jù)處理流程包括 多個(gè)并行數(shù)據(jù)處理子流程,所述節(jié)點(diǎn)包括用于執(zhí)行所述數(shù)據(jù)處理子流程的數(shù)據(jù)處理單元。 在一個(gè)數(shù)據(jù)處理流程涉及的節(jié)點(diǎn)中,由于不同的節(jié)點(diǎn)用于實(shí)現(xiàn)不同的數(shù)據(jù)操作功能,節(jié)點(diǎn) 之間相互協(xié)調(diào)才可能完成一個(gè)數(shù)據(jù)處理任務(wù),因此,節(jié)點(diǎn)之間存在相對(duì)的源和目的關(guān)系, 在系統(tǒng)的實(shí)施例中,根據(jù)所述源和目的關(guān)系,在源節(jié)點(diǎn)和目的節(jié)點(diǎn)之間,還包括為每一個(gè) 數(shù)據(jù)處理子流程創(chuàng)建的數(shù)據(jù)管道,所述數(shù)據(jù)處理單元按照數(shù)據(jù)處理子流程的順序,利用對(duì) 應(yīng)的數(shù)據(jù)管道完成每一個(gè)數(shù)據(jù)處理子流程的數(shù)據(jù)處理操作。
對(duì)于上述系統(tǒng), 一種優(yōu)選的方式是分別用不同的數(shù)據(jù)處理單元分別完成待處理數(shù)據(jù) 的輸入、數(shù)據(jù)處理和數(shù)據(jù)處理結(jié)果的輸出。
按照本發(fā)明實(shí)施例提供的數(shù)據(jù)流程的處理方法和系統(tǒng),由于在一個(gè)任務(wù)對(duì)應(yīng)的數(shù)據(jù)處 理流程中涉及的有相對(duì)關(guān)系的源節(jié)點(diǎn)和目的節(jié)點(diǎn)之間,設(shè)置有為每一個(gè)數(shù)據(jù)處理子流程創(chuàng) 建的數(shù)據(jù)管道,這樣,所述數(shù)據(jù)處理單元就可以按照數(shù)據(jù)處理子流程的順序,利用對(duì)應(yīng)的 數(shù)據(jù)管道獨(dú)立地完成每一個(gè)數(shù)據(jù)處理子流程的數(shù)據(jù)處理操作,由于數(shù)據(jù)處理子流程之間是 并行的關(guān)系,相互的數(shù)據(jù)處理不相關(guān);借助各自的&據(jù)管道, 一個(gè)節(jié)點(diǎn)內(nèi)的數(shù)據(jù)處理子流 程能夠獨(dú)自完成數(shù)據(jù)輸入、處理和輸出的任務(wù),彼此不相互影響,因此能夠最大限度地提 高數(shù)據(jù)處理子流程的并行程度,加速數(shù)據(jù)流程的處理速度,降低節(jié)點(diǎn)緩存數(shù)據(jù)所需的存儲(chǔ) 空間。尤其是,待處理數(shù)據(jù)的輸入、數(shù)據(jù)處理和數(shù)據(jù)處理結(jié)果的輸出用不同的線程完成, 使得數(shù)據(jù)傳輸和數(shù)據(jù)處理過程同時(shí)進(jìn)行,特別是在網(wǎng)絡(luò)數(shù)據(jù)傳輸延遲不可避免的情況下使 得數(shù)據(jù)處理和傳輸在時(shí)間上最大限度重疊,更能達(dá)到提高數(shù)據(jù)流處理速度的目的。
本發(fā)明的其它優(yōu)點(diǎn)在后續(xù)的文字中有詳盡的敘述。


圖1是網(wǎng)絡(luò)節(jié)點(diǎn)的邏輯關(guān)系圖2是本發(fā)明所述方法的實(shí)施例的流程圖3是圖1所述實(shí)施例的原理圖4是說明圖1所示實(shí)施例的步驟21涉及的數(shù)據(jù)處理子流程劃分原理圖; 圖5是節(jié)點(diǎn)間負(fù)載均衡處理示意圖; 圖6是本發(fā)明所述系統(tǒng)實(shí)施例邏輯圖; 圖7是圖6所述系統(tǒng)實(shí)施例采用節(jié)點(diǎn)實(shí)施例示意圖。
具體實(shí)施例方式
在實(shí)際的涉及多個(gè)數(shù)據(jù)處理節(jié)點(diǎn)的網(wǎng)絡(luò)中,無論節(jié)點(diǎn)所處的物理位置如何,也無論節(jié) 點(diǎn)之間物理上的連接關(guān)系如何,業(yè)務(wù)相關(guān)的節(jié)點(diǎn)之間形成的網(wǎng)絡(luò)結(jié)構(gòu)邏輯上都可以看作能 夠?qū)崿F(xiàn)節(jié)點(diǎn)互聯(lián)的總線型結(jié)構(gòu)。例如,圖1中,節(jié)點(diǎn)A到節(jié)點(diǎn)N是業(yè)務(wù)相關(guān)或任務(wù)相關(guān)的 節(jié)點(diǎn),節(jié)點(diǎn)之間的順序或工作關(guān)系由一個(gè)具體的任務(wù)流程確定,它們物理上可以是跨域分 布的,但邏輯上都可以連接到一個(gè)數(shù)據(jù)總線并通過該總線互聯(lián)起來,這個(gè)數(shù)據(jù)總線是邏輯 總線,其中可以包含多條邏輯數(shù)據(jù)通道,等等。圖1中的節(jié)點(diǎn)邏輯上都能夠通過各自的適 配器等與數(shù)據(jù)總線連接,因此可以實(shí)現(xiàn)互聯(lián)互通。圖1中,節(jié)點(diǎn)A到節(jié)點(diǎn)N在一個(gè)具體的 任務(wù)流中完成的功能不同,是不同的功能節(jié)點(diǎn),這些節(jié)點(diǎn)完成具體任務(wù)執(zhí)行的數(shù)據(jù)處理流 程可能需要調(diào)用網(wǎng)絡(luò)中的其它資源,如圖1中計(jì)算網(wǎng)絡(luò)的資源、數(shù)據(jù)源A到數(shù)據(jù)源N的資 源,以及集結(jié)庫(kù)資源等等,數(shù)據(jù)處理結(jié)果也可以存儲(chǔ)到節(jié)點(diǎn)以外的其它節(jié)點(diǎn),例如數(shù)據(jù)倉(cāng) 庫(kù)等。
圖1所示網(wǎng)絡(luò)只是一個(gè)簡(jiǎn)圖,其中還隱含其它節(jié)點(diǎn),例如涉及系統(tǒng)服務(wù)的用于任務(wù)制 定和管理的節(jié)點(diǎn),對(duì)一個(gè)任務(wù)進(jìn)行過程監(jiān)控的節(jié)點(diǎn)等等。本發(fā)明實(shí)施例實(shí)現(xiàn)的數(shù)據(jù)處理的 并行,通過減少數(shù)據(jù)處理子流程彼此之間的影響,并利用時(shí)延隱藏原理實(shí)現(xiàn)數(shù)據(jù)處理過程 在時(shí)間上的最大限度的重疊來實(shí)現(xiàn)快速的數(shù)據(jù)流處理。因此,本發(fā)明尤其適合應(yīng)用于ETL 系統(tǒng)的數(shù)據(jù)處理。
下面參照附圖對(duì)本發(fā)明的實(shí)施例作詳細(xì)說明。
圖2是本發(fā)明所述方法的第一個(gè)實(shí)施例流程圖。圖2所述實(shí)施例的原理參考圖3。圖3 可以看作圖1所示網(wǎng)絡(luò)的衍生實(shí)例, 一個(gè)ETL系統(tǒng)的邏輯模型,圖2所示實(shí)施例以圖3所 示ETL系統(tǒng)為例說明。圖1中的部分節(jié)點(diǎn)被抽象為圖3中系統(tǒng)層方框33中的系統(tǒng)服務(wù)節(jié)點(diǎn) 和ETL模型服務(wù)節(jié)點(diǎn);部分節(jié)點(diǎn)被抽象為圖3中組件層方框34中的任務(wù)引擎服務(wù)A節(jié)點(diǎn)、 任務(wù)引擎服務(wù)B節(jié)點(diǎn)、轉(zhuǎn)換服務(wù)節(jié)點(diǎn)、清洗服務(wù)節(jié)點(diǎn)和增量捕獲服務(wù)節(jié)點(diǎn);部分節(jié)點(diǎn)被抽 象為圖3中資源層方框35中計(jì)算服務(wù)節(jié)點(diǎn)和源數(shù)據(jù)服務(wù)節(jié)點(diǎn)。圖3描述了從三個(gè)業(yè)務(wù)庫(kù)A、 B、 C向數(shù)據(jù)倉(cāng)庫(kù)36導(dǎo)入凄t據(jù)的過程。
按照?qǐng)D2所述實(shí)施例,在步驟21將一個(gè)任務(wù)對(duì)應(yīng)的數(shù)據(jù)處理流程劃分為多個(gè)并行數(shù)據(jù) 處理子流程,以及確定所述數(shù)據(jù)處理流程或子流程涉及的節(jié)點(diǎn)。其中,所述任務(wù)由一個(gè)圖 3中或圖1中沒有繪出的用于任務(wù)制定和管理的節(jié)點(diǎn)完成,例如ETL系統(tǒng)中的一個(gè)的用于 構(gòu)建ETL任務(wù)模型的節(jié)點(diǎn)。該節(jié)點(diǎn)創(chuàng)建了一個(gè)具體的解決某個(gè)數(shù)據(jù)處理問題的任務(wù),該任務(wù)對(duì)應(yīng)的數(shù)據(jù)處理流程包含多個(gè)數(shù)據(jù)處理子流程(圖3中的方框32),即,將該任務(wù)對(duì)應(yīng) 的數(shù)據(jù)處理流程劃分為多個(gè)并行的數(shù)據(jù)處理子流程,其中的某個(gè)數(shù)據(jù)處理子流程還可能包 含另一個(gè)數(shù)據(jù)處理子流程31,即數(shù)據(jù)處理子流程可能具有嵌套關(guān)系,這根據(jù)數(shù)據(jù)處理的復(fù) 雜度決定。創(chuàng)建任務(wù)及其對(duì)應(yīng)的數(shù)據(jù)處理流程,以及將所述數(shù)據(jù)處理流程劃分為多個(gè)并行 的數(shù)據(jù)處理子流程的過程屬于公知技術(shù),例如ETL領(lǐng)域的公知技術(shù),此不贅述。當(dāng)所述數(shù) 據(jù)處理流程或子流程確定后,根據(jù)該任務(wù)需要完成的操作,就可以通過計(jì)算獲知所述數(shù)據(jù) 處理流程或子流程涉及的節(jié)點(diǎn),由于確定節(jié)點(diǎn)的過程也屬于公知技術(shù),此也不贅述。
按照?qǐng)D3的示例,數(shù)據(jù)處理流程32包含的多個(gè)并行數(shù)據(jù)處理子流程涉及的組件層節(jié)點(diǎn) 包括2個(gè)任務(wù)引擎服務(wù)節(jié)點(diǎn)和轉(zhuǎn)換服務(wù)、清洗服務(wù)、增量捕獲服務(wù)節(jié)點(diǎn)各一個(gè),各個(gè)組件 層組件以協(xié)同的方式處理數(shù)據(jù)流程,從而完成數(shù)據(jù)流的執(zhí)行。在任務(wù)執(zhí)行過程中,上述節(jié) 點(diǎn)根據(jù)數(shù)據(jù)處理子流程的需要可以調(diào)用資源層的節(jié)點(diǎn),獲得所需的數(shù)據(jù)服務(wù),也可以與系 統(tǒng)層節(jié)點(diǎn)進(jìn)行互訪調(diào)用,為其它節(jié)點(diǎn)提供數(shù)據(jù)服務(wù)。
步驟21所述數(shù)據(jù)處理子流程的劃分根據(jù)任務(wù)的不同可能有多種劃分形式,這取決于系 統(tǒng)的數(shù)據(jù)屬性和任務(wù)的要求等等,盡管這屬于公知技術(shù)的范疇,為了更好地說明本實(shí)施例, 下面舉例說明步驟21。參考圖4,數(shù)據(jù)處理流程的劃分指的是在保持?jǐn)?shù)據(jù)完整性的前提下 將單個(gè)ETL任務(wù)中的數(shù)據(jù)流分割為多個(gè)并行處理的獨(dú)立數(shù)據(jù)流程,以實(shí)現(xiàn)多個(gè)數(shù)據(jù)流的并 行處理。圖4 (a)描述了把從表DS-RELATIONS中REAL-FLOAT和IMAGE字段中抽取出來的 數(shù)據(jù)處理流程劃分成了兩個(gè)并行的子流程。圖4 (a)描述劃分?jǐn)?shù)據(jù)處理流程的方式,其前 提是假設(shè)數(shù)據(jù)處理的對(duì)象是數(shù)據(jù)元組(Tuple),這種劃分不改變抽取數(shù)據(jù)元組的結(jié)構(gòu),把 單個(gè)數(shù)據(jù)處理流程的操作劃分到兩個(gè)子流程處理。圖4 (b)描述了根據(jù)轉(zhuǎn)換定義,分別把 從表DS — RELATIONS中NAME, AGE字段中抽取出數(shù)據(jù)和從ARTICLE, MODIFY—TIME字段中抽 取出數(shù)據(jù)的數(shù)據(jù)處理流程劃分為兩個(gè)獨(dú)立的數(shù)據(jù)處理子流程并行執(zhí)行。圖4 (b)描述的劃 分方式是按照ETL流程中聚合、組合、清洗等轉(zhuǎn)換規(guī)則的定義和與目的端數(shù)據(jù)庫(kù)表中字段 的映射定義,將單個(gè)數(shù)據(jù)元組劃分為多個(gè)獨(dú)立的數(shù)據(jù)元組的數(shù)據(jù)處理流程劃分為兩個(gè)并行 處理的子流程。通常情況下需要結(jié)合兩種劃分方式實(shí)現(xiàn)ETL任務(wù)數(shù)據(jù)流的分割。需要說明 的是,對(duì)于不同任務(wù)的數(shù)據(jù)處理流程,數(shù)據(jù)處理流程的劃分規(guī)則在任務(wù)模型中定義,并交 由具體的執(zhí)行數(shù)據(jù)處理操作的節(jié)點(diǎn)執(zhí)行。
還需要說明,所述數(shù)據(jù)處理子流程的劃分可以在任務(wù)制定和管理的節(jié)點(diǎn)完成,也可以 在所述數(shù)據(jù)處理流程或子流程涉及的節(jié)點(diǎn)完成,這取決于具體的系統(tǒng)設(shè)計(jì),由于這屬于公 知的范疇,此不贅述。另外在數(shù)據(jù)處理流程或子流程涉及的節(jié)點(diǎn)開始執(zhí)行時(shí),需要向節(jié)點(diǎn) 注冊(cè)節(jié)點(diǎn)任務(wù)模板,通常,每一個(gè)數(shù)據(jù)處理流程對(duì)應(yīng)一個(gè)任務(wù)模板,所述任務(wù)模板可以釆 用文件的形式描述,例如XML文件。所述任務(wù)模板包含的信息主要考慮系統(tǒng)賦予節(jié)點(diǎn)的任 務(wù)或節(jié)點(diǎn)的功能考慮,這在不同的系統(tǒng)中有很大差異,例如
1)系統(tǒng)中可用節(jié)點(diǎn)定義如節(jié)點(diǎn)物理地址、節(jié)點(diǎn)服務(wù)接口的定義描述。這些信息用于 負(fù)載均衡過程中查找計(jì)算資源分流節(jié)點(diǎn)和建立節(jié)點(diǎn)之間數(shù)據(jù)管道用。
2 )本節(jié)點(diǎn)數(shù)據(jù)處理任務(wù)定義如數(shù)據(jù)轉(zhuǎn)換、清洗規(guī)則定義。用于描述不同數(shù)據(jù)處理流 程中數(shù)據(jù)處理方式。
3)數(shù)據(jù)流定義如數(shù)據(jù)處理流程或子流程涉及的各個(gè)數(shù)據(jù)管道(ID、類型、名稱、描 述等屬性)定義,先序、后序節(jié)點(diǎn)定義,管道安全屬性定義,等等。
圖2的步驟22,在所述數(shù)據(jù)處理流程的源節(jié)點(diǎn)和目的節(jié)點(diǎn)之間,為每一個(gè)數(shù)據(jù)處理子 流程創(chuàng)建對(duì)應(yīng)的數(shù)據(jù)管道。所述數(shù)據(jù)管道根據(jù)系統(tǒng)設(shè)計(jì)的不同,第一種情況,所述數(shù)據(jù)管 道可以是網(wǎng)絡(luò)共享內(nèi)存區(qū)域,物理上由創(chuàng)建于管道兩端節(jié)點(diǎn)之上的分布式一致性的高速緩 存和Socket連接建立的網(wǎng)絡(luò)通信信道構(gòu)成,因此也可以理解為兩端節(jié)點(diǎn)都可以訪問的同步 虛擬網(wǎng)絡(luò)存儲(chǔ)區(qū)。第二種情況,所述數(shù)據(jù)管道也可以是網(wǎng)絡(luò)通信信道或獲得系統(tǒng)虛擬總線 控制權(quán)的時(shí)間片,等等。對(duì)于第一種情況,數(shù)據(jù)管道可以是虛擬網(wǎng)絡(luò)存儲(chǔ)區(qū),也可以是有 固定網(wǎng)絡(luò)地址的用于存儲(chǔ)數(shù)據(jù)的服務(wù)器地址,這種情形下的數(shù)據(jù)管道可以用于傳輸數(shù)據(jù)、 存儲(chǔ)數(shù)據(jù),等等;對(duì)于第二種情況,數(shù)據(jù)管道就是一個(gè)單純傳輸數(shù)據(jù)的通道,即為數(shù)據(jù)處 理子流程提供用于傳輸數(shù)據(jù)的即時(shí)數(shù)據(jù)通道。
對(duì)應(yīng)地,數(shù)據(jù)管道的建立也有多種公知的方式,例如,在網(wǎng)絡(luò)中的某個(gè)承擔(dān)數(shù)據(jù)存儲(chǔ) 任務(wù)的節(jié)點(diǎn)建立一個(gè)特定的存儲(chǔ)區(qū),利用SOCKET連接建立所述管道,等等。如果釆用第 一種形式的數(shù)據(jù)管道,所述數(shù)據(jù)管道可以看成是用來完成節(jié)點(diǎn)之間數(shù)據(jù)輸入管理、數(shù)據(jù)輸 出管理進(jìn)程通訊的共享虛擬內(nèi)存區(qū)域,可以將待處理數(shù)據(jù)和處理結(jié)果數(shù)據(jù)存儲(chǔ)在所述數(shù)據(jù) 管道,因此,在數(shù)據(jù)處理過程中,考慮到數(shù)據(jù)的性質(zhì)、數(shù)據(jù)處理的獨(dú)立性、數(shù)據(jù)處理速度、 錯(cuò)誤恢復(fù)的難易等因素,所述管道中的數(shù)據(jù)最好定義為可被獨(dú)立處理的最小數(shù)據(jù)元組。
具體的數(shù)據(jù)管道創(chuàng)建過程也有多種方式,數(shù)據(jù)處理流程中的所有相對(duì)的源節(jié)點(diǎn)和目的 節(jié)點(diǎn)都可以發(fā)起創(chuàng)建管道操作。例如,在數(shù)據(jù)處理流程初始構(gòu)建時(shí)源節(jié)點(diǎn)發(fā)起管道創(chuàng)建操 作,如果節(jié)點(diǎn)采用每一個(gè)數(shù)據(jù)處理子流程對(duì)應(yīng)一個(gè)包括數(shù)據(jù)處理線程、輸入控制線程和輸 出控制線程的線程組的數(shù)據(jù)處理方式,通過創(chuàng)建本地輸出控制線程并主動(dòng)連接后序節(jié)點(diǎn)輸 入控制線程的方式創(chuàng)建數(shù)據(jù)管道。首先,數(shù)據(jù)管道創(chuàng)建發(fā)起節(jié)點(diǎn)向目的節(jié)點(diǎn)發(fā)送包含數(shù)據(jù) 處理流程標(biāo)識(shí)(ID)和管道ID的管道創(chuàng)建請(qǐng)求消息,基于該消息,目的節(jié)點(diǎn)查找本地是否 存在數(shù)據(jù)處理子流程對(duì)應(yīng)的線程組和數(shù)據(jù)管道,如果不存在,則基于本地存儲(chǔ)器中對(duì)應(yīng)ID 的數(shù)據(jù)處理流程定義創(chuàng)建數(shù)據(jù)管道和對(duì)應(yīng)的線程組,然后向數(shù)據(jù)管道創(chuàng)建發(fā)起節(jié)點(diǎn)返回請(qǐng) 求已經(jīng)執(zhí)行完成的消息;如果存在,直接向數(shù)據(jù)管道創(chuàng)建發(fā)起節(jié)點(diǎn)返回請(qǐng)求已經(jīng)執(zhí)行完成 的消息。本例中,采用SOCKET技術(shù)創(chuàng)建管道,創(chuàng)建管道需要的參數(shù)主要包含數(shù)據(jù)管道Socket 連接所需要的先序、后序節(jié)點(diǎn)關(guān)聯(lián)和數(shù)據(jù)管道安全屬性等。
對(duì)應(yīng)地,如果節(jié)點(diǎn)釆用多個(gè)數(shù)據(jù)處理子流程對(duì)應(yīng)一個(gè)包括數(shù)據(jù)處理線程、輸入控制線
程和輸出控制線程的線程組的數(shù)據(jù)處理方式,目的節(jié)點(diǎn)查找本地是否存在數(shù)據(jù)處理子流程 對(duì)應(yīng)的數(shù)據(jù)處理結(jié)構(gòu)、數(shù)據(jù)處理方式等參數(shù),以及創(chuàng)建相應(yīng)的參數(shù)和數(shù)據(jù)管道即可。
在圖2的步驟23,所述節(jié)點(diǎn)按照數(shù)據(jù)處理子流程的順序,利用對(duì)應(yīng)的數(shù)據(jù)管道完成每 一個(gè)數(shù)據(jù)處理子流程的數(shù)據(jù)處理操作。該步驟的簡(jiǎn)單數(shù)據(jù)處理方式可以是每一個(gè)數(shù)據(jù)處 理子流程的輸入數(shù)據(jù)、輸出數(shù)據(jù)在對(duì)應(yīng)的數(shù)據(jù)管道完成,各個(gè)子流程的數(shù)據(jù)處理排隊(duì)可以 參考公知的高效排隊(duì)方式,此不贅述。這種簡(jiǎn)單的數(shù)據(jù)處理方式,不但能夠保證每一個(gè)數(shù) 據(jù)處理子流程的高效執(zhí)行,當(dāng)一個(gè)子流程的數(shù)據(jù)處理由于各種原因中斷,會(huì)立即啟動(dòng)下一 個(gè)子流程的數(shù)據(jù)處理,因此,能夠保證數(shù)據(jù)處理的高效。但是,還有效率更高的數(shù)據(jù)處理 方式,在基于本第一實(shí)施例的第二個(gè)實(shí)施例中,分別用不同的線程分別完成待處理數(shù)據(jù)的 輸入、數(shù)據(jù)處理和數(shù)據(jù)處理結(jié)果的輸出,即,每一個(gè)數(shù)據(jù)處理子流程至少對(duì)應(yīng)一個(gè)數(shù)據(jù)處 理線程、輸入控制線程和輸出控制線程,才艮據(jù)數(shù)據(jù)的不同、處理流程不同等, 一個(gè)數(shù)據(jù)處 理子流程還可以對(duì)應(yīng)多個(gè)數(shù)據(jù)處理線程、輸入控制線程和/或輸出控制線程。這樣,使得數(shù) 據(jù)傳輸和數(shù)據(jù)處理過程同時(shí)進(jìn)行,在數(shù)據(jù)傳輸延遲不可避免的情況下使得數(shù)據(jù)處理和數(shù)據(jù) 傳輸在時(shí)間上最大限度重疊,達(dá)到提高數(shù)據(jù)流處理速度的目的。
,為了進(jìn)一步優(yōu)化上述實(shí)施例,在基于所述第二實(shí)施例的第三實(shí)施例中,為提高數(shù)據(jù)處 理階段的效率,為每一個(gè)數(shù)據(jù)處理子流程創(chuàng)建對(duì)應(yīng)的數(shù)據(jù)處理線程,以及,這些不同的數(shù) 據(jù)處理線程并行處理對(duì)應(yīng)的數(shù)據(jù)處理子流程待處理的lt據(jù)。
還可以通過本地存儲(chǔ)器的使用進(jìn)一步優(yōu)化本發(fā)明。在基于所述第三實(shí)施例的第四實(shí)施 例中,將每一個(gè)數(shù)據(jù)處理子流程待處理的數(shù)據(jù)通過對(duì)應(yīng)的管道讀入到本地存儲(chǔ)器暫存,以 及,在每一個(gè)數(shù)據(jù)處理子流程的數(shù)據(jù)處理結(jié)果輸出前將所述結(jié)果暫存到本地存儲(chǔ)器。在所 述第四實(shí)施例中,如果采用第 一種形式的數(shù)據(jù)管道,不但數(shù)據(jù)處理子流程的待處理數(shù)據(jù)可 以預(yù)先寫入對(duì)應(yīng)的數(shù)據(jù)管道,源節(jié)點(diǎn)在連接目的節(jié)點(diǎn)的數(shù)據(jù)管道處于空閑狀態(tài)時(shí),將數(shù)據(jù) 處理子流程的數(shù)據(jù)處理結(jié)果寫入該數(shù)據(jù)管道,通過該數(shù)據(jù)管道傳輸?shù)侥康墓?jié)點(diǎn)。具體地, 通過判斷數(shù)據(jù)管道是否可寫入,或者是否有存儲(chǔ)空間等,獲得所述數(shù)據(jù)管道是否處于空閑 狀態(tài)。
在一個(gè)具體的數(shù)據(jù)處理流程中,數(shù)據(jù)處理流程中參與數(shù)據(jù)處理的節(jié)點(diǎn)輸入、輸出處理 線程查找數(shù)據(jù)處理流程中涉及的節(jié)點(diǎn)的物理地址,相互關(guān)聯(lián)的先序、后序節(jié)點(diǎn)之間分別創(chuàng) 建數(shù)據(jù)管道,以及啟動(dòng)各個(gè)數(shù)據(jù)管道兩端對(duì)應(yīng)的數(shù)據(jù)處理線程。相對(duì)的源節(jié)點(diǎn)輸出控制線 程在向目的節(jié)點(diǎn)發(fā)送數(shù)據(jù)之前查找待發(fā)送的數(shù)據(jù)元組,并判斷后序節(jié)點(diǎn)對(duì)應(yīng)管道是否處于 可寫入的狀態(tài),如果處于不可寫入狀態(tài),等待預(yù)定時(shí)間后繼續(xù)判斷,否則發(fā)送數(shù)據(jù)元組, 在本地清除已經(jīng)發(fā)送的數(shù)據(jù)元組。目的節(jié)點(diǎn)的輸入控制線程從對(duì)應(yīng)的管道中接收數(shù)據(jù)元組 并存儲(chǔ)到本地的存儲(chǔ)器中,等待本地的數(shù)據(jù)處理線程處理。
在基于上述實(shí)施例的本發(fā)明所述方法的其它實(shí)施例中,還包括下述優(yōu)化技術(shù)方案
1、 如果某個(gè)節(jié)點(diǎn)的數(shù)據(jù)處理能力不足,例如數(shù)據(jù)處理速度過低、存儲(chǔ)的數(shù)據(jù)量過少等, 說明該節(jié)點(diǎn)的負(fù)栽過大,此時(shí)可以調(diào)用其它節(jié)點(diǎn)分擔(dān)負(fù)載。具體的過程是,節(jié)點(diǎn)判斷本地的 數(shù)據(jù)處理能力是否低于指定閥值,如果低于,選擇本節(jié)點(diǎn)的分流節(jié)點(diǎn),將所述分流節(jié)點(diǎn)作 為本節(jié)點(diǎn)和目的節(jié)點(diǎn)間的中間節(jié)點(diǎn),為所述分流節(jié)點(diǎn)分配凝:據(jù)處理任務(wù)涉及的能夠分流的 數(shù)據(jù)處理子流程,在本節(jié)點(diǎn)和分流節(jié)點(diǎn)之間,以及在分流節(jié)點(diǎn)和目的節(jié)點(diǎn)之間,為能夠分 流的數(shù)據(jù)處理子流程創(chuàng)建對(duì)應(yīng)的數(shù)據(jù)管道,所述分流節(jié)點(diǎn)按照相應(yīng)的數(shù)據(jù)處理子流程的順 序,利用對(duì)應(yīng)的數(shù)據(jù)管道完成每一個(gè)數(shù)據(jù)處理子流程的數(shù)據(jù)處理操作。
例如,如果數(shù)據(jù)處理能力用本地存儲(chǔ)器能夠存儲(chǔ)的數(shù)據(jù)量來衡量,在各個(gè)節(jié)點(diǎn)之間數(shù) 據(jù)傳輸和數(shù)據(jù)處理速度不匹配的情況下利用本地存儲(chǔ)器緩存數(shù)據(jù)就可能出現(xiàn)存儲(chǔ)能力不足 的問題,如節(jié)點(diǎn)收到的前序節(jié)點(diǎn)發(fā)送過來需要處理的數(shù)據(jù)的速度大于本節(jié)點(diǎn)的處理速度的 情況下,本節(jié)點(diǎn)緩存的待處理數(shù)據(jù)量會(huì)不斷增加,最終超過存儲(chǔ)極限。在緩存數(shù)據(jù)量超過 指定閥值時(shí)通過調(diào)用系統(tǒng)中的節(jié)點(diǎn)^^務(wù),查詢本節(jié)點(diǎn)的存儲(chǔ)資源分流節(jié)點(diǎn),并創(chuàng)建兩節(jié)點(diǎn) 之間的通信管道和處理線程實(shí)現(xiàn)節(jié)點(diǎn)之間的負(fù)載均衡。具體的負(fù)載均衡原理參考圖5。圖5 說明的是,在節(jié)點(diǎn)A的數(shù)據(jù)處理能力不足時(shí),即當(dāng)前節(jié)點(diǎn)A緩存的到后續(xù)節(jié)點(diǎn)C的處于待 處理狀態(tài)的數(shù)據(jù)量超過指定的閾值,通過查找網(wǎng)絡(luò)中其它節(jié)點(diǎn)存儲(chǔ)資源冗余情況,找出存 儲(chǔ)資源冗余的節(jié)點(diǎn)B,創(chuàng)建節(jié)點(diǎn)A到節(jié)點(diǎn)B和節(jié)點(diǎn)B到節(jié)點(diǎn)C的數(shù)據(jù)通道,啟動(dòng)節(jié)點(diǎn)A、 B、 C之間的數(shù)據(jù)管道對(duì)應(yīng)的數(shù)據(jù)輸入、輸出和數(shù)據(jù)處理線程,繼續(xù)完成數(shù)據(jù)段處理,使得通 過節(jié)點(diǎn)B分擔(dān)節(jié)點(diǎn)A的部分?jǐn)?shù)據(jù)處理子流程的數(shù)據(jù)處理任務(wù)。對(duì)應(yīng)地,如果數(shù)據(jù)處理能力 用節(jié)點(diǎn)的計(jì)算能力來衡量,則在本節(jié)點(diǎn)的計(jì)算能力不足時(shí),則通過查找網(wǎng)絡(luò)中其它節(jié)點(diǎn)計(jì) 算資源的冗余情況,通過冗余的計(jì)算資源節(jié)點(diǎn)解決負(fù)栽均衡問題。
2、 數(shù)據(jù)處理過程中如果出現(xiàn)節(jié)點(diǎn)錯(cuò)誤需要恢復(fù)的情況,節(jié)點(diǎn)部署的數(shù)據(jù)輸入、輸出和 數(shù)據(jù)模塊重新從本節(jié)點(diǎn)的存儲(chǔ)器中加載當(dāng)前各自處理的數(shù)據(jù),重新創(chuàng)建節(jié)點(diǎn)之間的數(shù)據(jù)管 道,從斷點(diǎn)繼續(xù)處理數(shù)據(jù)流程,實(shí)現(xiàn)數(shù)據(jù)的斷點(diǎn)恢復(fù)。 一個(gè)節(jié)點(diǎn)是否存在數(shù)據(jù)處理錯(cuò)誤, 可以由節(jié)點(diǎn)本身發(fā)現(xiàn),例如通過數(shù)據(jù)校驗(yàn)的方法;也可以由與其關(guān)聯(lián)的其它節(jié)點(diǎn)發(fā)現(xiàn),例 如通過數(shù)據(jù)的相關(guān)性發(fā)現(xiàn);也可以由網(wǎng)絡(luò)中負(fù)責(zé)數(shù)據(jù)處理流程管理的節(jié)點(diǎn)發(fā)現(xiàn),等等。假 設(shè)錯(cuò)誤由節(jié)點(diǎn)本身發(fā)現(xiàn),則節(jié)點(diǎn)需要預(yù)先布置錯(cuò)誤檢查流程,通過該流程,節(jié)點(diǎn)判斷本地 的數(shù)據(jù)是否有錯(cuò),如果有,重新創(chuàng)建本節(jié)點(diǎn)與源節(jié)點(diǎn)和目的節(jié)點(diǎn)之間的數(shù)據(jù)管道,利用所 述管道重新加載數(shù)據(jù),從斷點(diǎn)繼續(xù)處理數(shù)據(jù)流程。
通常,所述錯(cuò)誤種類大致可劃分為以下三種
1) 節(jié)點(diǎn)物理故障。故障節(jié)點(diǎn)在重新啟動(dòng)時(shí),執(zhí)行錯(cuò)誤恢復(fù)過程。具體為輸入、輸出 控制和數(shù)據(jù)處理線程從本地的存儲(chǔ)器中加載任務(wù)模板及其對(duì)應(yīng)數(shù)據(jù),重新創(chuàng)建數(shù)據(jù)流對(duì)應(yīng) 線程和數(shù)據(jù)管道連接,恢復(fù)緩存中的&據(jù)處理和發(fā)送過程。
2) 數(shù)據(jù)管道連接中斷。節(jié)點(diǎn)輸入、輸出控制線程在發(fā)送、接收數(shù)據(jù)時(shí)會(huì)主動(dòng)探查數(shù)據(jù) 管道連接是否中斷,如果中斷,則不斷探測(cè)數(shù)據(jù)管道的連接狀態(tài),如果在指定時(shí)間內(nèi)連接
狀態(tài)未恢復(fù),則掛起對(duì)應(yīng)的輸入或輸出控制線程,被動(dòng)等待其先序、后序節(jié)點(diǎn)發(fā)送管道創(chuàng) 建請(qǐng)求。
3)數(shù)據(jù)處理錯(cuò)誤。當(dāng)節(jié)點(diǎn)數(shù)據(jù)處理發(fā)生數(shù)據(jù)元組中數(shù)據(jù)格式、類型定義與數(shù)據(jù)處理規(guī) 則不匹配或數(shù)據(jù)處理過程中產(chǎn)生異常,直接將數(shù)據(jù)元組對(duì)象狀態(tài)標(biāo)記為處理錯(cuò)誤,并將異 常編碼寫入元組對(duì)象保存到本地存儲(chǔ)器中。此種錯(cuò)誤需要人為干預(yù)處理錯(cuò)誤元組數(shù)據(jù),因 此只需記錄。
在錯(cuò)誤恢復(fù)過程中,發(fā)生錯(cuò)誤恢復(fù)的節(jié)點(diǎn)會(huì)基于本地?cái)?shù)據(jù)流定義主動(dòng)查找先序、后序 節(jié)點(diǎn),發(fā)起管道創(chuàng)建過程,重新從本地存儲(chǔ)器中查詢數(shù)據(jù),恢復(fù)錯(cuò)誤發(fā)生的狀態(tài)。 下面通過一個(gè)具體實(shí)施例進(jìn)一步說明本發(fā)明的方法。
假設(shè)需要處理的數(shù)據(jù)元組格式定義包含Col咖n—A和Column-B兩個(gè)字段,所述數(shù)據(jù)需 要首先經(jīng)過清洗節(jié)點(diǎn)Node-Cleansing進(jìn)行數(shù)據(jù)清洗,之后經(jīng)過數(shù)據(jù)格式轉(zhuǎn)換節(jié)點(diǎn) Node-Transform處理生成最終結(jié)果數(shù)據(jù)元組。
對(duì)于每一個(gè)數(shù)據(jù)處理的子流程,源端的數(shù)據(jù)抽取節(jié)點(diǎn)的數(shù)據(jù)輸出控制線程,按照任務(wù) 定義查找數(shù)據(jù)流中參與數(shù)據(jù)處理的數(shù)據(jù)清洗節(jié)點(diǎn)(Node_Cleansing )和數(shù)據(jù)轉(zhuǎn)換節(jié)點(diǎn) (Node-Transform),并從任務(wù)定義中解析出兩節(jié)點(diǎn)物理地址信息。依次創(chuàng)建源端數(shù)據(jù)抽取 節(jié)點(diǎn)輸出到Node—Cleansing輸入的數(shù)據(jù)管道(PipeLine—1 ), Node—Cleansing的輸出到 Node—Transform輸入的數(shù)據(jù)管道(PipeLine—2 ), Node—Transform的l命出到其對(duì)應(yīng)的目的 端數(shù)據(jù)加載節(jié)點(diǎn)的輸入的數(shù)據(jù)管道(PipeLine-3)。在各個(gè)節(jié)點(diǎn)的輸入、輸出控制線程和數(shù) 據(jù)處理線程分別創(chuàng)建對(duì)應(yīng)數(shù)據(jù)管道的線程監(jiān)視數(shù)據(jù)管道和本地節(jié)點(diǎn)存儲(chǔ)器中的數(shù)據(jù)元組。
數(shù)據(jù)流源端的數(shù)據(jù)抽取節(jié)點(diǎn)從數(shù)據(jù)庫(kù)中抽取出數(shù)據(jù),并按照每個(gè)元組包含字段 Column-A、 Column_B最小單位數(shù)據(jù)生成元組數(shù)據(jù)包對(duì)象,在設(shè)置了流程標(biāo)記ID后存儲(chǔ)在 抽取節(jié)點(diǎn)的存儲(chǔ)器中,處理完畢后等待對(duì)應(yīng)數(shù)據(jù)管道的輸出控制線程讀取并將元組對(duì)象直 接寫入到對(duì)應(yīng)的數(shù)據(jù)管道中。對(duì)于輸出控制線程,將數(shù)據(jù)處理線程處理完畢的結(jié)果數(shù)據(jù)寫 入數(shù)據(jù)管道的過程與寫入本地存儲(chǔ)器的過程相同。當(dāng)數(shù)據(jù)抽取節(jié)點(diǎn)的輸出控制線程判斷數(shù) 據(jù)管道狀態(tài)為可寫入,則將元組對(duì)象寫入管道PipeLine-l后,數(shù)據(jù)會(huì)直接通過Socket連 接發(fā)送到連接Node-Cleansing的數(shù)據(jù)管道,此時(shí)Node—Cleansing輸入控制線程能夠從管 道中讀取數(shù)據(jù),將讀取的元組對(duì)象狀態(tài)設(shè)置為待處理,并寫入本地存儲(chǔ)器緩存。
Node-Cleansing的數(shù)據(jù)處理線程對(duì)應(yīng)于該管道輸入控制線程,在啟動(dòng)后不斷查詢本地 存儲(chǔ)器中指定流程標(biāo)記ID且狀態(tài)為待處理的數(shù)據(jù)元組,待數(shù)據(jù)處理完畢后再將數(shù)據(jù)處理結(jié) 果記錄在元組對(duì)象中并將對(duì)象狀態(tài)標(biāo)記為待發(fā)送。Node-Cleansing的輸出控制線程則在啟 動(dòng)后不斷查詢本地存儲(chǔ)器緩存的指定流程標(biāo)記ID且狀態(tài)為待發(fā)送的數(shù)據(jù)元組,在管道 PipeLine-2狀態(tài)為可寫入時(shí)將元組數(shù)據(jù)寫入PipeLine—2并清除寫入成功元組在本地存儲(chǔ)
器中的記錄。Node—Transform節(jié)點(diǎn)處理過程與Node—Cleansing相同。
在Node-Cleansing節(jié)點(diǎn),例如緩存控制的線程發(fā)現(xiàn)本地存儲(chǔ)器中某流程標(biāo)記ID待處 理狀態(tài)數(shù)據(jù)量超過預(yù)定的閥值100MB時(shí),則觸發(fā)輸出控制線程查找當(dāng)前網(wǎng)絡(luò)中其他節(jié)點(diǎn)資 源的使用狀態(tài),找到資源冗余的節(jié)點(diǎn)Node—Cleans ing-2并發(fā)送分配給節(jié)點(diǎn) Node-Cleansing—2的任務(wù)及相應(yīng)的數(shù)據(jù)處理子流程ID 。接著初始化節(jié)點(diǎn) Node-Cleansing—2,初始化過程包括任務(wù)的解析、創(chuàng)建相應(yīng)數(shù)據(jù)處理線程等。之后創(chuàng)建對(duì) 應(yīng)流程標(biāo)記ID的數(shù)據(jù)流程的輸出控制線程和從Node-Cleans ing節(jié)點(diǎn)到節(jié)點(diǎn) Node—Cleansing—2的凄t才居管道Pipeline—2 — 1 , 節(jié)點(diǎn)Node_Cleansing_2到Node—Transform 節(jié)點(diǎn)的數(shù)據(jù)管道PipeLine—2-2。啟動(dòng)數(shù)據(jù)管道PipeLine-2_l和PipeLine—2 —2對(duì)應(yīng)的各個(gè) 線程完成負(fù)載均衡。
本發(fā)明提供的數(shù)據(jù)流程的處理系統(tǒng),參考圖6。在圖6所示的系統(tǒng)中,網(wǎng)絡(luò)節(jié)點(diǎn)邏輯 上能夠通過一個(gè)物理或邏輯的數(shù)據(jù)總線互聯(lián)互通,圖6中的節(jié)點(diǎn)在一個(gè)具體的任務(wù)流中完 成的功能不同,是不同的功能節(jié)點(diǎn),實(shí)際中的節(jié)點(diǎn)可能是一臺(tái)服務(wù)器,也可能是一個(gè)局域 網(wǎng),而且,這些節(jié)點(diǎn)完成具體任務(wù)執(zhí)行的數(shù)據(jù)處理流程也可能涉及網(wǎng)絡(luò)中的其它節(jié)點(diǎn)。
為方便說明本實(shí)施例,可以將圖6中的節(jié)點(diǎn)可^f見為一個(gè)任務(wù)對(duì)應(yīng)的數(shù)據(jù)處理流程涉及 的節(jié)點(diǎn),且相互之間為源和目的的關(guān)系,所述數(shù)據(jù)處理流程包括多個(gè)并行數(shù)據(jù)處理子流程, 所述節(jié)點(diǎn)包括用于執(zhí)行所述數(shù)據(jù)處理子流程的數(shù)據(jù)處理單元。在圖6中的源節(jié)點(diǎn)和目的節(jié) 點(diǎn)之間,還有為每一個(gè)數(shù)據(jù)處理子流程創(chuàng)建的數(shù)據(jù)管道,通常,數(shù)據(jù)管道的數(shù)量與節(jié)點(diǎn)處 理的數(shù)據(jù)處理子流程的數(shù)量相同。這樣,節(jié)點(diǎn)的數(shù)據(jù)處理單元按照數(shù)據(jù)處理子流程的順序, 利用對(duì)應(yīng)的數(shù)據(jù)管道完成每一個(gè)數(shù)據(jù)處理子流程的數(shù)據(jù)處理操作。很多時(shí)候,數(shù)據(jù)管道的 數(shù)量與節(jié)點(diǎn)處理的數(shù)據(jù)處理子流程的數(shù)量不相同或不對(duì)應(yīng),對(duì)于部分?jǐn)?shù)據(jù)處理子流程,也 可以通過數(shù)據(jù)管道的復(fù)用構(gòu)建本發(fā)明所述系統(tǒng),鑒于復(fù)用技術(shù)是公知技術(shù),此不贅述。
圖6中,所述數(shù)據(jù)處理子流程的劃分可以在任務(wù)制定和管理的節(jié)點(diǎn)(圖6未繪出)完 成,也可以在所述數(shù)據(jù)處理流程或子流程涉及的節(jié)點(diǎn)完成,這取決于具體的系統(tǒng)設(shè)計(jì),由 于這屬于公知的范疇,此不贅述。
在本發(fā)明所述系統(tǒng)的其它實(shí)施例中,其中的節(jié)點(diǎn)還包括用于暫存每一個(gè)數(shù)據(jù)處理子 流程待處理數(shù)據(jù)和處理結(jié)果數(shù)據(jù)的數(shù)據(jù)緩存單元,以及用于管理所述待處理數(shù)據(jù)和處理結(jié) 果數(shù)據(jù)的緩存控制單元。所述節(jié)點(diǎn)還可以包括用于將每一個(gè)數(shù)據(jù)處理子流程待處理的數(shù) 據(jù)通過對(duì)應(yīng)的數(shù)據(jù)管道讀入到本地?cái)?shù)據(jù)緩存單元的輸入控制單元,以及用于輸出暫存到本 地?cái)?shù)據(jù)緩存單元數(shù)據(jù)處理結(jié)果的輸出控制單元。具有這些技術(shù)特征的節(jié)點(diǎn)參考圖7。
上述系統(tǒng)的實(shí)施例中,所述數(shù)據(jù)管道具體的是網(wǎng)絡(luò)共享內(nèi)存區(qū)域,當(dāng)然也可以是其它 方式,因此所述數(shù)據(jù)管道可以用于傳輸數(shù)據(jù)、存儲(chǔ)數(shù)據(jù),等等。另外,在數(shù)據(jù)處理過程中, 考慮到數(shù)據(jù)的性質(zhì)、數(shù)據(jù)處理的獨(dú)立性、數(shù)據(jù)處理速度、錯(cuò)誤恢復(fù)的難易等因素,所述管
道中的數(shù)據(jù)最好定義為可被獨(dú)立處理的最小數(shù)據(jù)元組。
在基于上述系統(tǒng)實(shí)施例的另 一個(gè)實(shí)施例中,數(shù)據(jù)處理單元包括為每一個(gè)數(shù)據(jù)處理子流 程創(chuàng)建對(duì)應(yīng)的數(shù)據(jù)處理線程,所述數(shù)據(jù)處理線程并行處理對(duì)應(yīng)的數(shù)據(jù)處理子流程需要處理 的數(shù)據(jù),這樣更能提高系統(tǒng)的數(shù)據(jù)處理效率。
在所述系統(tǒng)的另一個(gè)實(shí)施例中,所述節(jié)點(diǎn)還包括負(fù)載均衡單元,以圖7為例,所述負(fù) 栽均衡單元與輸入控制單元、輸出控制單元、數(shù)據(jù)處理單元、緩存控制單元和數(shù)據(jù)緩存單 元分別相連,用于判斷本地的數(shù)據(jù)處理能力。具體地,所述負(fù)栽均衡單元判斷本地的數(shù)據(jù) 處理能力是否超過指定閥值,如果超過,選擇本節(jié)點(diǎn)的分流節(jié)點(diǎn),為所述分流節(jié)點(diǎn)分配數(shù) 據(jù)處理任務(wù)涉及的分支數(shù)據(jù)處理子流程,向分流節(jié)點(diǎn)和目的節(jié)點(diǎn)發(fā)出指示,以在本節(jié)點(diǎn)和 分流節(jié)點(diǎn)之間,以及在分流節(jié)點(diǎn)和目的節(jié)點(diǎn)之間,為分支數(shù)據(jù)處理子流程創(chuàng)建對(duì)應(yīng)的數(shù)據(jù) 管道,以及,指示所述分流節(jié)點(diǎn)按照數(shù)據(jù)處理子流程的順序,利用對(duì)應(yīng)的數(shù)據(jù)管道完成每 一個(gè)數(shù)據(jù)處理子流程的數(shù)據(jù)處理操作。有關(guān)負(fù)栽均衡的其它說明可以參考本發(fā)明所述方法 部分的實(shí)施例的說明。
在所述系統(tǒng)的實(shí)施例中,還可以選擇性地設(shè)置一個(gè)包括錯(cuò)誤處理單元。所述錯(cuò)誤處理 單元如果設(shè)置在圖7所示的節(jié)點(diǎn)中,則與輸入控制單元、輸出控制單元、數(shù)據(jù)處理單元、 緩存控制單元和數(shù)據(jù)緩存單元分別相連,用于判斷本地的數(shù)據(jù)處理是否存在錯(cuò)誤,如果有, 向相關(guān)單元發(fā)出指示,例如系統(tǒng)中的管理單元或其它執(zhí)行相關(guān)操作的單元,重新創(chuàng)建本節(jié) 點(diǎn)與源節(jié)點(diǎn)和目的節(jié)點(diǎn)之間的數(shù)據(jù)管道,以利用所述管道重新加載數(shù)據(jù),從斷點(diǎn)繼續(xù)處理 數(shù)據(jù)流程。有關(guān)錯(cuò)誤處理的其它說明可以參考本發(fā)明所述方法部分的實(shí)施例的說明。
實(shí)際上,本項(xiàng)發(fā)明的技術(shù)性范圍并不局限于說明書上的內(nèi)容,還有很多根據(jù)其權(quán)利要 求確定的具體的技術(shù)性應(yīng)用方案。以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于 本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以作出若干改進(jìn)和 潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)*1為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1、一種數(shù)據(jù)流程的處理方法,基于邏輯上能夠互聯(lián)互通的節(jié)點(diǎn)形成的網(wǎng)絡(luò),其特征在于:將一個(gè)任務(wù)對(duì)應(yīng)的數(shù)據(jù)處理流程劃分為多個(gè)并行數(shù)據(jù)處理子流程,以及確定所述數(shù)據(jù)處理流程涉及的節(jié)點(diǎn);在所述數(shù)據(jù)處理流程的源節(jié)點(diǎn)和目的節(jié)點(diǎn)之間,為每一個(gè)數(shù)據(jù)處理子流程創(chuàng)建對(duì)應(yīng)的數(shù)據(jù)管道;所述節(jié)點(diǎn)按照數(shù)據(jù)處理子流程的順序,利用對(duì)應(yīng)的數(shù)據(jù)管道完成每一個(gè)數(shù)據(jù)處理子流程的數(shù)據(jù)處理操作。
2、 如權(quán)利要求l所述的方法,其特征在于用不同的線程分別完成待處理數(shù)據(jù)的輸入、 數(shù)據(jù)處理和數(shù)據(jù)處理結(jié)果的輸出。
3、 如權(quán)利要求2所述的方法,其特征在于還包括,為每一個(gè)數(shù)據(jù)處理子流程創(chuàng)建對(duì)應(yīng) 的數(shù)據(jù)處理線程,以及,所述數(shù)據(jù)處理線程并行處理對(duì)應(yīng)的數(shù)據(jù)處理子流程待處理的數(shù)據(jù)。
4、 如權(quán)利要求l、 2或3所述的方法,其特征在于,還包括將每一個(gè)數(shù)據(jù)處理子流程待處理的數(shù)據(jù)通過對(duì)應(yīng)的管道讀入到本地存儲(chǔ)器暫存,以及, 在每一個(gè)數(shù)據(jù)處理子流程的數(shù)據(jù)處理結(jié)果輸出前將所述結(jié)果暫存到本地存儲(chǔ)器。
5、 如權(quán)利要求4所述的方法,其特征在于還包括節(jié)點(diǎn)判斷本地的數(shù)據(jù)處理能力是否 超過指定閥值,如果超過,選擇本節(jié)點(diǎn)的分流節(jié)點(diǎn),為所述分流節(jié)點(diǎn)分配數(shù)據(jù)處理任務(wù)涉 及的能夠分流的數(shù)據(jù)處理子流程,在本節(jié)點(diǎn)和分流節(jié)點(diǎn)之間,以及在分流節(jié)點(diǎn)和目的節(jié)點(diǎn) 之間,為能夠分流的數(shù)據(jù)處理子流程創(chuàng)建對(duì)應(yīng)的數(shù)據(jù)管道,所述分流節(jié)點(diǎn)按照數(shù)據(jù)處理子 流程的順序,利用對(duì)應(yīng)的數(shù)據(jù)管道完成每一個(gè)數(shù)據(jù)處理子流程的數(shù)據(jù)處理操:作。
6、 如權(quán)利要求5所述的方法,其特征在于還包括節(jié)點(diǎn)判斷本地的數(shù)據(jù)是否有錯(cuò),如 果有,重新創(chuàng)建本節(jié)點(diǎn)與源節(jié)點(diǎn)和目的節(jié)點(diǎn)之間的數(shù)據(jù)管道,利用所述管道重新加載數(shù)據(jù), 從斷點(diǎn)繼續(xù)處理數(shù)據(jù)流程。
7、 如權(quán)利要求6所述的方法,其特征在于源節(jié)點(diǎn)在連接目的節(jié)點(diǎn)的數(shù)據(jù)管道處于空 閑狀態(tài)時(shí),將數(shù)據(jù)處理子流程的操作結(jié)果寫入該管道,通過該管道傳輸?shù)侥康墓?jié)點(diǎn)。
8、 如權(quán)利要求l所述的方法,其特征在于,所述管道是網(wǎng)絡(luò)共享內(nèi)存區(qū)域或網(wǎng)絡(luò)通信 信道。
9、 如權(quán)利要求1所述的方法,其特征在于,所述數(shù)據(jù)是能夠獨(dú)立處理的最小數(shù)據(jù)元組。
10、 如權(quán)利要求l所述的方法,其特征在于,利用SOCKET連接建立所述管道或通信信道。
11、 一種數(shù)據(jù)流程的處理系統(tǒng),包括多個(gè)邏輯上能夠互聯(lián)互通的網(wǎng)絡(luò)節(jié)點(diǎn),所述節(jié)點(diǎn) 是一個(gè)任務(wù)對(duì)應(yīng)的數(shù)據(jù)處理流程涉及的節(jié)點(diǎn),所述數(shù)據(jù)處理流程包括多個(gè)并行數(shù)據(jù)處理子 流程,所述節(jié)點(diǎn)包括用于執(zhí)行所述數(shù)據(jù)處理子流程的數(shù)據(jù)處理單元,其特征在于還包括 在所述數(shù)據(jù)處理流程的源節(jié)點(diǎn)和目的節(jié)點(diǎn)之間,為每一個(gè)數(shù)據(jù)處理子流程創(chuàng)建的數(shù)據(jù) 管道,所述數(shù)據(jù)處理單元按照數(shù)據(jù)處理子流程的順序,利用對(duì)應(yīng)的數(shù)據(jù)管道完成每一個(gè)數(shù) 據(jù)處理子流程的數(shù)據(jù)處理操作。
12、 如權(quán)利要求11所述的系統(tǒng),其特征在于,所述節(jié)點(diǎn)還包括用于暫存每一個(gè)數(shù)據(jù)處理子流程待處理數(shù)據(jù)和處理結(jié)果數(shù)據(jù)的數(shù)據(jù)緩存單元,以及, 用于管理所述待處理數(shù)據(jù)和處理結(jié)果數(shù)據(jù)的緩存控制單元。
13、 如權(quán)利要求12所述的系統(tǒng),其特征在于,所述節(jié)點(diǎn)還包括用于將每一個(gè)數(shù)據(jù)處理子流程待處理的數(shù)據(jù)通過對(duì)應(yīng)的數(shù)據(jù)管道讀入到本地存儲(chǔ)器的 輸入控制單元,以及,用于輸出暫存到本地存儲(chǔ)器的數(shù)據(jù)處理結(jié)果的輸出控制單元。
14、 如權(quán)利要求2所述的系統(tǒng),其特征在于,所述節(jié)點(diǎn)還包括負(fù)載均衡單元,判斷本地的數(shù)據(jù)處理能力是否超過指定岡值,如果超過,選擇本節(jié)點(diǎn) 的分流節(jié)點(diǎn),為所述分流節(jié)點(diǎn)分配數(shù)據(jù)處理任務(wù)涉及的能夠分流的數(shù)據(jù)處理子流程,向分 流節(jié)點(diǎn)和目的節(jié)點(diǎn)發(fā)出指示,以在本節(jié)點(diǎn)和分流節(jié)點(diǎn)之間,以及在分流節(jié)點(diǎn)和目的節(jié)點(diǎn)之 間,為能夠分流的數(shù)據(jù)處理子流程創(chuàng)建對(duì)應(yīng)的數(shù)據(jù)管道,以及,指示所述分流節(jié)點(diǎn)按照數(shù) 據(jù)處理子流程的順序,利用對(duì)應(yīng)的數(shù)據(jù)管道完成每一個(gè)數(shù)據(jù)處理子流程的數(shù)據(jù)處理操作。
15、 如權(quán)利要求14所述的方法,其特征在于,所述節(jié)點(diǎn)還包括錯(cuò)誤處理單元,判斷本地的數(shù)據(jù)是否有錯(cuò),如果有,重新創(chuàng)建本節(jié)點(diǎn)與源節(jié)點(diǎn)和目的 節(jié)點(diǎn)之間的數(shù)據(jù)管道,以利用所述管道重新加載數(shù)據(jù),從斷點(diǎn)繼續(xù)處理數(shù)據(jù)流程。
16、 如權(quán)利要求ll、 12、 13、 14和15所述的系統(tǒng),其特征在于數(shù)據(jù)處理單元包括 為每一個(gè)數(shù)據(jù)處理子流程創(chuàng)建對(duì)應(yīng)的數(shù)據(jù)處理線程,所述數(shù)據(jù)處理線程并行處理對(duì)應(yīng)的數(shù) 據(jù)處理子流程需要處理的數(shù)據(jù)。
17、 如權(quán)利要求11所述的方法,其特征在于,所述管道是網(wǎng)絡(luò)共享內(nèi)存區(qū)域或網(wǎng)絡(luò)通 信信道。
18、 如權(quán)利要求11所述的方法,其特征在于,所述數(shù)據(jù)是獨(dú)立處理的最小數(shù)據(jù)元組。
全文摘要
一種數(shù)據(jù)流程的處理方法,基于邏輯上能夠互聯(lián)互通的節(jié)點(diǎn)形成的網(wǎng)絡(luò),該方法將一個(gè)任務(wù)對(duì)應(yīng)的數(shù)據(jù)處理流程劃分為多個(gè)并行數(shù)據(jù)處理子流程,以及確定所述數(shù)據(jù)處理流程涉及的節(jié)點(diǎn),在所述數(shù)據(jù)處理流程的源節(jié)點(diǎn)和目的節(jié)點(diǎn)之間,為每一個(gè)數(shù)據(jù)處理子流程創(chuàng)建對(duì)應(yīng)的數(shù)據(jù)管道,所述節(jié)點(diǎn)按照數(shù)據(jù)處理子流程的順序,利用對(duì)應(yīng)的數(shù)據(jù)管道完成每一個(gè)數(shù)據(jù)處理子流程的數(shù)據(jù)處理操作。該方法能夠最大限度地提高數(shù)據(jù)處理子流程的并行程度,加速數(shù)據(jù)流程的處理,降低節(jié)點(diǎn)緩存數(shù)據(jù)所需的存儲(chǔ)空間。本發(fā)明還提供一種數(shù)據(jù)流程的處理系統(tǒng)。
文檔編號(hào)H04L12/56GK101388844SQ20081017651
公開日2009年3月18日 申請(qǐng)日期2008年11月7日 優(yōu)先權(quán)日2008年11月7日
發(fā)明者霞 張, 柴永春, 勇 紀(jì), 力 許 申請(qǐng)人:東軟集團(tuán)股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
嘉兴市| 西盟| 周宁县| 凤阳县| 五河县| 平邑县| 高安市| 年辖:市辖区| 依兰县| 永康市| 年辖:市辖区| 临安市| 湖南省| 宁强县| 九台市| 商洛市| 丹东市| 页游| 阿鲁科尔沁旗| 军事| 夏河县| 北京市| 汉中市| 灵寿县| 奉化市| 台中市| 米泉市| 高陵县| 平定县| 防城港市| 刚察县| 扶绥县| 天镇县| 清涧县| 馆陶县| 建水县| 常德市| 乃东县| 晋州市| 镇雄县| 佛冈县|