分布式的實時流處理裝置、方法和單元的制作方法
【專利摘要】本發(fā)明公開了一種分布式的實時流處理裝置、方法及單元,屬于數(shù)據(jù)處理領域。方法包括:接收輸入單元分發(fā)的一批數(shù)據(jù)流,該一批數(shù)據(jù)流包括多個子數(shù)據(jù)流;對接收到的子數(shù)據(jù)流進行并行處理,得到數(shù)據(jù)處理結果;將得到的至少一個數(shù)據(jù)處理結果發(fā)送給排序輸出單元,當確定屬于同一批次的數(shù)據(jù)流的子數(shù)據(jù)流處理完成時,向排序輸出單元發(fā)送標識事件,該數(shù)據(jù)處理結果及標識事件用于排序輸出單元在判斷收集齊全所有業(yè)務處理單元發(fā)送的標識事件后,將收集到的屬于同一批次的數(shù)據(jù)流的所有數(shù)據(jù)處理結果進行排序輸出。本發(fā)明通過排序輸出單元將同一批次的數(shù)據(jù)處理結果進行排序輸出,實現(xiàn)了分布式的實時流處理的全局排序,更為規(guī)整和簡便,方便后續(xù)處理。
【專利說明】分布式的實時流處理裝置、方法和單元
【技術領域】
[0001] 本發(fā)明涉及數(shù)據(jù)處理領域,特別涉及一種分布式的實時流處理裝置、方法和單元。
【背景技術】
[0002] 在各種數(shù)據(jù)爆炸式增長的時代背景下,網(wǎng)絡中傳輸?shù)臄?shù)據(jù)量日益增多,因此對數(shù) 據(jù)傳輸?shù)膶崟r性要求也越來越高。數(shù)據(jù)在傳輸過程中是不斷流動的,在數(shù)據(jù)處理領域中將 流動的數(shù)據(jù)稱為數(shù)據(jù)流,將對數(shù)據(jù)流的處理稱為流處理。為了實現(xiàn)對海量數(shù)據(jù)流的實時處 理,一般米用分布式實時流處理方式。
[0003] 現(xiàn)有技術對海量數(shù)據(jù)流進行分布式實時流處理的具體實現(xiàn)方式為:首先利用輸入 單元實時接收一批數(shù)據(jù)流,并將該數(shù)據(jù)流采用分布式分發(fā)的方式下發(fā)到多個處理單元,每 個處理單元接收輸入單元分發(fā)的一至多個數(shù)據(jù)流;各個處理單元對數(shù)據(jù)流進行實時的分析 和排序等處理,每處理完一個數(shù)據(jù)流隨即將數(shù)據(jù)處理結果發(fā)送到后續(xù)的輸出單元;此外,每 一個處理單元中都會定義一個用于標識數(shù)據(jù)處理結束的標識事件,當每個處理單元處理完 輸入單元本批分發(fā)的多個數(shù)據(jù)流后,會發(fā)送該標識事件給后續(xù)的輸出單元;輸出單元接收 每個處理單元發(fā)送的數(shù)據(jù)處理結果,并在收到任何一個處理單元的標識事件后,都會直接 輸出當前已接收到的所有數(shù)據(jù)處理結果,輸出的數(shù)據(jù)處理結果中除了包含了本批數(shù)據(jù)流的 一部分數(shù)據(jù)處理結果,還可能包含下一批數(shù)據(jù)流的一部分數(shù)據(jù)處理結果。
[0004] 在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術至少存在以下問題:
[0005] 由于標識事件的局限性,輸出單元每次輸出的數(shù)據(jù)處理結果除了包含本批數(shù)據(jù)流 中的一部分數(shù)據(jù)處理結果,還可能包含下一批數(shù)據(jù)流的一部分數(shù)據(jù)處理結果,導致每批數(shù) 據(jù)流的數(shù)據(jù)處理結果都無法完整有序輸出,給數(shù)據(jù)流的后續(xù)處理造成困難。
【發(fā)明內(nèi)容】
[0006] 為了解決現(xiàn)有技術的問題,本發(fā)明實施例提供了一種分布式的實時流處理的裝 置、方法和單元。所述技術方案如下:
[0007] 第一方面,提供了一種分布式的實時流處理裝置,所述裝置包括:輸入單元、至少 兩個業(yè)務處理單元及排序輸出單元;
[0008] 所述輸入單元,用于實時接收一批數(shù)據(jù)流,所述一批數(shù)據(jù)流包括多個子數(shù)據(jù)流,并 將所述多個子數(shù)據(jù)流發(fā)送給多個業(yè)務處理單元,其中,每個業(yè)務處理單元對應至少一個子 數(shù)據(jù)流;
[0009] 所述每個業(yè)務處理單元,用于接收所述輸入單元發(fā)送的子數(shù)據(jù)流,對接收到的所 述子數(shù)據(jù)流進行并行處理,將得到的至少一個數(shù)據(jù)處理結果發(fā)送給所述排序輸出單元,當 確定屬于同一批次的數(shù)據(jù)流的子數(shù)據(jù)流處理完成時,向所述排序輸出單元發(fā)送標識事件, 所述標識事件用于指示同一批次的數(shù)據(jù)流處理完成;
[0010] 所述排序輸出單元,用于接收所述每個業(yè)務處理單元發(fā)送的至少一個數(shù)據(jù)處理結 果及所述標識事件,并在判斷收集齊全所有業(yè)務處理單元發(fā)送的所述標識事件后,將收集 到的屬于同一批次的數(shù)據(jù)流的所有數(shù)據(jù)處理結果進行排序輸出。
[0011] 結合第一方面,在第一方面的第一種可能的實現(xiàn)方式中,所述每個業(yè)務處理單元, 用于每得到一個數(shù)據(jù)處理結果后,為每個數(shù)據(jù)處理結果添加本業(yè)務處理單元標識,將添加 了本業(yè)務處理單元標識的每個數(shù)據(jù)處理結果實時發(fā)送給所述排序輸出單元,并在將處理完 當前批次的數(shù)據(jù)流得到的數(shù)據(jù)處理結果全部發(fā)送給排序輸出單元后,將記錄有業(yè)務處理單 元標識的標識事件發(fā)送給排序輸出單元;
[0012] 所述排序輸出單元,接收到每個業(yè)務處理單元實時發(fā)送的攜帶本業(yè)務處理單元標 識的數(shù)據(jù)處理結果,以及每個業(yè)務處理單元發(fā)送的標識事件之后,根據(jù)業(yè)務處理單元標識 將不同業(yè)務處理單元發(fā)送的數(shù)據(jù)處理結果進行分區(qū)存放,對每個分區(qū)存放的數(shù)據(jù)處理結果 作排序后輸出之后,清除分區(qū)中已輸出的標識事件。
[0013] 結合第一方面的第一種可能的實現(xiàn)方式,在第一方面的第三種可能的實現(xiàn)方式 中,所述排序輸出單元,還用于記錄接收到所述每個業(yè)務處理單元發(fā)送的所述標識事件的 時間,按照接收到所述標識事件的時間先后順序,將所述每個業(yè)務處理單元發(fā)送的屬于同 一批次的數(shù)據(jù)流的數(shù)據(jù)處理結果進行排序輸出。
[0014] 結合第一方面及第一方面的第一種至第二種可能的實現(xiàn)方式中的任一種實現(xiàn)方 式,在第一方面的第三種可能的實現(xiàn)方式中,所述排序輸出單元,還用于根據(jù)接收到所述每 個業(yè)務處理單元發(fā)送的所述標識事件的時間,調(diào)整所述每個業(yè)務處理單元的并發(fā)度。
[0015] 結合第一方面的第三種可能的實現(xiàn)方式,在第一方面的第四種可能的實現(xiàn)方式 中,所述排序輸出單元,具體用于根據(jù)接收到所述每個業(yè)務處理單元發(fā)送的所述標識事件 的時間,確定所述每個業(yè)務處理單元處理所述屬于同一個批次的數(shù)據(jù)流所耗費的時間,根 據(jù)每個業(yè)務處理單元所耗費的時間,確定每個業(yè)務處理單元調(diào)整后的并發(fā)度。
[0016] 結合第一方面的第四種可能的實現(xiàn)方式,在第一方面的第五種可能的實現(xiàn)方式 中,具體用于根據(jù)每個業(yè)務處理單元所耗費的時間,獲得各個業(yè)務處理單元耗費時間比,根 據(jù)所有業(yè)務處理單元的總并發(fā)度的數(shù)量和所述各個業(yè)務處理單元耗費時間比,調(diào)整下一次 每個業(yè)務處理單元的并發(fā)度,調(diào)整后的每個業(yè)務處理單元的并發(fā)度與所述各個業(yè)務處理單 元耗費時間比成正比。
[0017] 第二方面,提供了一種分布式的實時流處理方法,所述方法包括:
[0018] 接收每個業(yè)務處理單元發(fā)送的至少一個數(shù)據(jù)處理結果及標識事件;
[0019] 判斷是否收集齊全所有業(yè)務處理單元發(fā)送的所述標識事件;
[0020] 如果判斷收集齊全所有業(yè)務處理單元發(fā)送的標識事件,則將收集到的屬于同一批 次的數(shù)據(jù)流的所有數(shù)據(jù)處理結果進行排序輸出。
[0021] 結合第二方面,在第二方面的第一種可能的實現(xiàn)方式中,所述方法還包括:
[0022] 記錄接收到所述每個業(yè)務處理單元發(fā)送的所述標識事件的時間,按照接收到所述 標識事件的時間先后順序,將所述每個業(yè)務處理單元發(fā)送的屬于同一批次的數(shù)據(jù)流的數(shù)據(jù) 處理結果進行排序輸出。
[0023] 結合第二方面,在第二方面的第二種可能的實現(xiàn)方式中,所述接收每個業(yè)務處理 單元發(fā)送的至少一個數(shù)據(jù)處理結果及標識事件,包括:
[0024] 接收每個業(yè)務處理單元實時發(fā)送的攜帶本業(yè)務處理單元標識的數(shù)據(jù)處理結果,以 及每個業(yè)務處理單元發(fā)送的標識事件;
[0025] 所述將接收到的屬于同一批次的數(shù)據(jù)流的所有數(shù)據(jù)處理結果進行排序輸出,包 括:
[0026] 根據(jù)業(yè)務處理單元標識將不同業(yè)務處理單元發(fā)送的數(shù)據(jù)處理結果進行分區(qū)存放, 對每個分區(qū)存放的數(shù)據(jù)處理結果作排序后輸出之后,清除分區(qū)中已輸出的標識事件。
[0027] 結合第二方面、第二方面的第一種至第二種可能的實現(xiàn)方式,在第二方面的第三 種可能的實現(xiàn)方式中,所述接收每個業(yè)務處理單元發(fā)送的至少一個數(shù)據(jù)處理結果及標識事 件之后,還包括:
[0028] 根據(jù)接收到所述每個業(yè)務處理單元發(fā)送的所述標識事件的時間,調(diào)整所述每個業(yè) 務處理單元的并發(fā)度。
[0029] 結合第二方面的第三種可能的實現(xiàn)方式,在第二方面的第四種可能的實現(xiàn)方式 中,所述根據(jù)接收到所述每個業(yè)務處理單元發(fā)送的所述標識事件的時間,調(diào)整所述每個業(yè) 務處理單元的并發(fā)度,包括 :
[0030] 根據(jù)接收到所述每個業(yè)務處理單元發(fā)送的所述標識事件的時間,確定所述每個業(yè) 務處理單元處理所述屬于同一個批次的數(shù)據(jù)流所耗費的時間,根據(jù)每個業(yè)務處理單元所耗 費的時間,確定每個業(yè)務處理單元調(diào)整后的并發(fā)度。
[0031] 結合第二方面的第四種可能的實現(xiàn)方式,在第二方面的第五種可能的實現(xiàn)方式 中,所述根據(jù)接收到所述每個業(yè)務處理單元發(fā)送的所述標識事件的時間,確定所述每個業(yè) 務處理單元處理所述屬于同一個批次的數(shù)據(jù)流所耗費的時間,根據(jù)每個業(yè)務處理單元所耗 費的時間,確定每個業(yè)務處理單元調(diào)整后的并發(fā)度,包括:
[0032] 根據(jù)每個業(yè)務處理單元所耗費的時間,獲得各個業(yè)務處理單元耗費時間比,根據(jù) 所有業(yè)務處理單元的總并發(fā)度的數(shù)量和所述各個業(yè)務處理單元耗費時間比,調(diào)整下一次每 個業(yè)務處理單元的并發(fā)度,調(diào)整后的每個業(yè)務處理單元的并發(fā)度與所述各個業(yè)務處理單元 耗費時間比成正比。
[0033] 第三方面,提供了一種業(yè)務處理單元,所述單元包括:
[0034] 接收模塊,用于接收輸入單元分發(fā)的一批數(shù)據(jù)流,所述一批數(shù)據(jù)流包括多個子數(shù) 據(jù)流;
[0035] 處理模塊,用于對接收到的子數(shù)據(jù)流進行并行處理,得到數(shù)據(jù)處理結果;
[0036] 發(fā)送模塊,用于將得到的至少一個數(shù)據(jù)處理結果發(fā)送給排序輸出單元,當確定屬 于同一批次的數(shù)據(jù)流的子數(shù)據(jù)流處理完成時,向所述排序輸出單元發(fā)送標識事件,所述數(shù) 據(jù)處理結果及標識事件用于所述排序輸出單元在判斷收集齊全所有業(yè)務處理單元發(fā)送的 所述標識事件后,將收集到的屬于同一批次的數(shù)據(jù)流的所有數(shù)據(jù)處理結果進行輸出。
[0037] 結合第三方面,在第三方面的第一種可能的實現(xiàn)方式中,所述發(fā)送模塊,用于每得 到一個數(shù)據(jù)處理結果后,為每個數(shù)據(jù)處理結果添加業(yè)務處理單元標識,將添加了業(yè)務處理 單元標識的數(shù)據(jù)處理結果實時發(fā)送給所述排序輸出單元,并在將處理完當前批次的數(shù)據(jù)流 得到的數(shù)據(jù)處理結果全部發(fā)送給排序輸出單元后,將記錄有業(yè)務處理單元標識的標識事件 發(fā)送給排序輸出單元。
[0038] 第四方面,提供了一種排序輸出單元,所述排序輸出單元包括:
[0039] 接收模塊,用于接收每個業(yè)務處理單元發(fā)送的至少一個數(shù)據(jù)處理結果及標識事 件;
[0040] 判斷模塊,用于判斷是否收集齊全所有業(yè)務處理單元發(fā)送的所述標識事件;
[0041] 排序輸出模塊,用于當判斷收集齊全所有業(yè)務處理單元發(fā)送的標識事件時,將收 集到的屬于同一批次的數(shù)據(jù)流的所有數(shù)據(jù)處理結果進行排序輸出。
[0042] 結合第四方面,在第四方面的第一種可能的實現(xiàn)方式中,所述排序輸出模塊,用于 記錄接收到所述每個業(yè)務處理單元發(fā)送的所述標識事件的時間,按照接收到所述標識事件 的時間先后順序,將所述每個業(yè)務處理單元發(fā)送的屬于同一批次的數(shù)據(jù)流的數(shù)據(jù)處理結果 進行排序輸出。
[0043] 結合第四方面,在第四方面的第二種可能的實現(xiàn)方式中,所述接收模塊,用于接收 每個業(yè)務處理單元實時發(fā)送的攜帶本業(yè)務處理單元標識的數(shù)據(jù)處理結果,以及每個業(yè)務處 理單元發(fā)送的標識事件;
[0044] 所述排序輸出模塊,用于根據(jù)業(yè)務處理單元標識將不同業(yè)務處理單元發(fā)送的數(shù)據(jù) 處理結果進行分區(qū)存放,對每個分區(qū)存放的數(shù)據(jù)處理結果作排序后輸出之后,清除分區(qū)中 已輸出的標識事件。
[0045] 結合第四方面、第四方面的第一種至第二種可能的實現(xiàn)方式,在第四方面的第三 種可能的實現(xiàn)方式中,所述單元,還包括:
[0046] 調(diào)整模塊,用于根據(jù)接收到所述每個業(yè)務處理單元發(fā)送的所述標識事件的時間, 調(diào)整所述每個業(yè)務處理單元的并發(fā)度。
[0047] 結合第四方面的第三種可能的實現(xiàn)方式,在第四方面的第四種可能的實現(xiàn)方式 中,所述調(diào)整模塊,用于根據(jù)接收到所述每個業(yè)務處理單元發(fā)送的所述標識事件的時間,確 定所述每個業(yè)務處理單元處理所述屬于同一個批次的數(shù)據(jù)流所耗費的時間,根據(jù)每個業(yè)務 處理單元所耗費的時間,確定每個業(yè)務處理單元調(diào)整后的并發(fā)度。
[0048] 結合第四方面的第四種可能的實現(xiàn)方式,在第四方面的第五種可能的實現(xiàn)方式 中,所述調(diào)整模塊,用于根據(jù)每個業(yè)務處理單元所耗費的時間,獲得各個業(yè)務處理單元耗費 時間比,根據(jù)所有業(yè)務處理單元的總并發(fā)度的數(shù)量和所述各個業(yè)務處理單元耗費時間比, 調(diào)整下一次每個業(yè)務處理單元的并發(fā)度,調(diào)整后的每個業(yè)務處理單元的并發(fā)度與所述各個 業(yè)務處理單元耗費時間比成正比。
[0049] 本發(fā)明實施例提供的技術方案帶來的有益效果是:
[0050] 通過各個業(yè)務處理單元對接收到的數(shù)據(jù)流進行處理,將得到的數(shù)據(jù)處理結果及記 錄有業(yè)務處理單元標識的標識事件發(fā)送給排序輸出單元,由排序輸出單元在判斷收集到所 有業(yè)務處理單元發(fā)送的標識事件后,將接收到的同一批次的所有數(shù)據(jù)處理結果進行排序輸 出,實現(xiàn)了分布式的實時流處理的全局排序,較現(xiàn)有分布式的實時流處理方式更為規(guī)整和 簡便,方便數(shù)據(jù)流的后續(xù)處理。
【專利附圖】
【附圖說明】
[0051] 為了更清楚地說明本發(fā)明實施例中的技術方案,下面將對實施例描述中所需要使 用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于 本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他 的附圖。
[0052] 圖1是本發(fā)明一實施例提供的一種分布式的實時流處理裝置的結構示意圖;
[0053] 圖2是本發(fā)明另一實施例提供的一種分布式的實時流處理方法所涉及的實施環(huán) 境不意圖;
[0054] 圖3是本發(fā)明另一實施例提供的一種分布式的實時流處理方法流程圖;
[0055] 圖4是本發(fā)明另一實施例提供的一種分布式的實時流處理方法流程圖;
[0056] 圖5是本發(fā)明另一實施例提供的一種分布式的實時流處理方法流程圖;
[0057] 圖6是本發(fā)明另一實施例提供的一種業(yè)務處理單元的結構示意圖;
[0058] 圖7是本發(fā)明另一實施例提供的一種排序輸出單元的結構示意圖;
[0059] 圖8是本發(fā)明另一實施例提供的一種排序輸出單元的結構示意圖。
【具體實施方式】
[0060] 為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面將結合附圖對本發(fā)明實施方 式作進一步地詳細描述。
[0061] 為了提供一種規(guī)整和簡便的分布式的實時流處理方法,方便數(shù)據(jù)流的后續(xù)處理, 本實施例提供了一種分布式的實時流處理裝置,參見圖1,該實時流處理裝置包括:輸入單 元11、至少兩個業(yè)務處理單元12及排序輸出單元13 ;
[0062] 輸入單元11,用于實時接收一批數(shù)據(jù)流,該一批數(shù)據(jù)流包括多個子數(shù)據(jù)流,并將多 個子數(shù)據(jù)流發(fā)送給多個業(yè)務處理單元12,其中,每個業(yè)務處理單元12對應至少一個子數(shù)據(jù) 流;
[0063] 每個業(yè)務處理單元12,用于接收輸入單元11發(fā)送的子數(shù)據(jù)流,對接收到的子數(shù)據(jù) 流進行并行處理,將得到的至少一個數(shù)據(jù)處理結果發(fā)送給排序輸出單元13,當確定屬于同 一批次的數(shù)據(jù)流的子數(shù)據(jù)流處理完成時,向排序輸出單元13發(fā)送標識事件,該標識事件用 于指示同一批次的數(shù)據(jù)流處理完成;
[0064] 排序輸出單元13,用于接收每個業(yè)務處理單元12發(fā)送的至少一個數(shù)據(jù)處理結果 及標識事件,并在判斷收集齊全所有業(yè)務處理單元12發(fā)送的標識事件后,將收集到的屬于 同一批次的數(shù)據(jù)流的所有數(shù)據(jù)處理結果進行排序輸出。
[0065] 作為一種可選實施例,每個業(yè)務處理單元12,用于每得到一個數(shù)據(jù)處理結果后,為 每個數(shù)據(jù)處理結果添加業(yè)務處理單元標識,將添加了業(yè)務處理單元標識的數(shù)據(jù)處理結果實 時發(fā)送給排序輸出單元13,并在將處理完當前批次的數(shù)據(jù)流得到的數(shù)據(jù)處理結果全部發(fā)送 給排序輸出單元13后,將記錄有業(yè)務處理單元標識的標識事件發(fā)送給排序輸出單元13。排 序輸出單元13,用于接收到每個業(yè)務處理單元12實時發(fā)送的攜帶業(yè)務處理單元標識的數(shù) 據(jù)處理結果,以及每個業(yè)務處理單元12在處理完一批數(shù)據(jù)流發(fā)送的標識事件之后,根據(jù)業(yè) 務處理單元標識將不同業(yè)務處理單元發(fā)送的數(shù)據(jù)處理結果和標識事件進行分區(qū)存放,對所 有分區(qū)中第一個標識事件之前的所有數(shù)據(jù)處理結果作排序后輸出之后,清除所有分區(qū)中的 第一個標識事件。
[0066] 作為一種可選實施例,排序輸出單元13,還用于記錄接收到每個業(yè)務處理單元12 發(fā)送的所述標識事件的時間,按照接收到所述標識事件的時間先后順序,將每個業(yè)務處理 單元12發(fā)送的屬于同一批次的數(shù)據(jù)流的數(shù)據(jù)處理結果進行排序輸出。
[0067] 作為一種可選實施例,排序輸出單元13,還用于根據(jù)接收到每個業(yè)務處理單元12 發(fā)送的標識事件的時間,調(diào)整每個業(yè)務處理單元12的并發(fā)度。
[0068] 作為一種可選實施例,排序輸出單元13,具體用于根據(jù)接收到每個業(yè)務處理單元 發(fā)送的標識事件的時間,確定每個業(yè)務處理單元12處理屬于同一個批次的數(shù)據(jù)流所耗費 的時間,根據(jù)每個業(yè)務處理單元所耗費的時間,確定每個業(yè)務處理單元調(diào)整后的并發(fā)度。 [0069] 作為一種可選實施例,排序輸出單元13,具體用于根據(jù)每個業(yè)務處理單元12所耗 費的時間,獲得各個業(yè)務處理單元12耗費時間比,根據(jù)所有業(yè)務處理單元12的總并發(fā)度的 數(shù)量和各個業(yè)務處理單元12耗費時間比,調(diào)整下一次每個業(yè)務處理單元12的并發(fā)度,調(diào)整 后的每個業(yè)務處理單元12的并發(fā)度與各個業(yè)務處理單元12耗費時間比成正比。
[0070] 本實施例提供的裝置,通過各個業(yè)務處理單元對接收到的數(shù)據(jù)流進行處理,將得 到的數(shù)據(jù)處理結果及記錄有業(yè)務處理單元標識的標識事件發(fā)送給排序輸出單元,由排序輸 出單元在判斷收集到所有業(yè)務處理單元發(fā)送的標識事件后,將接收到的同一批次的所有數(shù) 據(jù)處理結果進行排序輸出,實現(xiàn)了分布式的實時流處理的全局排序,較現(xiàn)有分布式的實時 流處理方式更為規(guī)整和簡便,方便數(shù)據(jù)流的后續(xù)處理。
[0071] 結合上述圖1所示的裝置,本發(fā)明另一實施例提供了一種分布式的實時流處理 方法,為了便于說明,以圖2所示的網(wǎng)絡拓撲圖作為應用本實施例提供的方法進行分布式 的實時流處理的實施環(huán)境為例,對本實施例提供的分布式的實時流處理的過程進行解釋說 明。圖2所示的網(wǎng)絡拓撲圖中包括一個輸入單元、四個業(yè)務處理單元、一個排序輸出單元。 其中,輸入單元用于接收外部數(shù)據(jù)流,并將接收到的數(shù)據(jù)流分發(fā)給各個業(yè)務處理單元;各個 業(yè)務處理單元用于對接收到的數(shù)據(jù)流進行處理,并將處理得到的數(shù)據(jù)處理結果輸出給排序 輸出單元;排序輸出單元對各個業(yè)務處理單元輸出的數(shù)據(jù)處理結果進行排序輸出。結合圖 2所示的網(wǎng)絡拓撲圖,以業(yè)務處理單元的角度為例,參見圖3,本實施例提供的方法流程包 括:
[0072] 301 :接收輸入單元分發(fā)的一批數(shù)據(jù)流,該一批數(shù)據(jù)流包括多個子數(shù)據(jù)流;
[0073] 302 :對接收到的子數(shù)據(jù)流進行并行處理,得到數(shù)據(jù)處理結果;
[0074] 303:將得到的至少一個數(shù)據(jù)處理結果發(fā)送給排序輸出單元,當確定屬于同一批次 的數(shù)據(jù)流的子數(shù)據(jù)流處理完成時,向排序輸出單元發(fā)送標識事件,該數(shù)據(jù)處理結果及標識 事件用于排序輸出單元在判斷收集齊全所有業(yè)務處理單元發(fā)送的標識事件后,將收集到的 屬于同一批次的數(shù)據(jù)流的所有數(shù)據(jù)處理結果進行排序輸出。
[0075] 作為一種可選實施例,將得到的至少一個數(shù)據(jù)處理結果發(fā)送給排序輸出單元,當 確定屬于同一批次的數(shù)據(jù)流的子數(shù)據(jù)流處理完成時,向排序輸出單元發(fā)送標識事件,包 括:
[0076] 每得到一個數(shù)據(jù)處理結果后,為每個數(shù)據(jù)處理結果添加業(yè)務處理單元標識,將添 加了業(yè)務處理單元標識的數(shù)據(jù)處理結果實時發(fā)送給排序輸出單元,并在將處理完當前批次 的數(shù)據(jù)流得到的數(shù)據(jù)處理結果全部發(fā)送給排序輸出單元后,將記錄有業(yè)務處理單元標識的 標識事件發(fā)送給排序輸出單元。
[0077] 以排序輸出單元的角度為例,參見圖4,本實施例提供的方法流程包括:
[0078] 401:接收每個業(yè)務處理單元發(fā)送的至少一個數(shù)據(jù)處理結果及標識事件。
[0079] 402:判斷是否收集齊全所有業(yè)務處理單元發(fā)送的標識事件。
[0080] 403:如果判斷收集齊全所有業(yè)務處理單元發(fā)送的標識事件,則將收集到的屬于同 一批次的數(shù)據(jù)流的所有數(shù)據(jù)處理結果進行排序輸出。
[0081] 作為一種可選實施例,該方法還包括:
[0082] 記錄接收到每個業(yè)務處理單元發(fā)送的標識事件的時間,按照接收到標識事件的時 間先后順序,將每個業(yè)務處理單元發(fā)送的屬于同一批次的數(shù)據(jù)流的數(shù)據(jù)處理結果進行排序 輸出。
[0083] 作為一種可選實施例,接收每個業(yè)務處理單元發(fā)送的至少一個數(shù)據(jù)處理結果及標 識事件,包括:
[0084] 接收每個業(yè)務處理單元實時發(fā)送的攜帶本業(yè)務處理單元標識的數(shù)據(jù)處理結果,以 及每個業(yè)務處理單元發(fā)送的標識事件;
[0085] 將接收到的屬于同一批次的數(shù)據(jù)流的所有數(shù)據(jù)處理結果進行排序輸出,包括:
[0086] 根據(jù)業(yè)務處理單元標識將不同業(yè)務處理單元發(fā)送的數(shù)據(jù)處理結果進行分區(qū)存放, 對每個分區(qū)存放的數(shù)據(jù)處理結果作排序后輸出之后,清除分區(qū)中已輸出的標識事件。
[0087] 作為一種可選實施例,接收每個業(yè)務處理單元發(fā)送的至少一個數(shù)據(jù)處理結果及標 識事件之后,還包括:
[0088] 根據(jù)接收到每個業(yè)務處理單元發(fā)送的所述標識事件的時間,調(diào)整每個業(yè)務處理單 元的并發(fā)度。
[0089] 作為一種可選實施例,根據(jù)接收到每個業(yè)務處理單元發(fā)送的標識事件的時間,調(diào) 整每個業(yè)務處理單元的并發(fā)度,包括:
[0090] 根據(jù)接收到每個業(yè)務處理單元發(fā)送的標識事件的時間,確定每個業(yè)務處理單元處 理屬于同一個批次的數(shù)據(jù)流所耗費的時間,根據(jù)每個業(yè)務處理單元所耗費的時間,確定每 個業(yè)務處理單元調(diào)整后的并發(fā)度。
[0091] 作為一種可選實施例,根據(jù)接收到每個業(yè)務處理單元發(fā)送的標識事件的時間,確 定每個業(yè)務處理單元處理屬于同一個批次的數(shù)據(jù)流所耗費的時間,根據(jù)每個業(yè)務處理單元 所耗費的時間,確定每個業(yè)務處理單元調(diào)整后的并發(fā)度,包括:
[0092] 根據(jù)每個業(yè)務處理單元所耗費的時間,獲得各個業(yè)務處理單元耗費時間比,根據(jù) 所有業(yè)務處理單元的總并發(fā)度的數(shù)量和所述各個業(yè)務處理單元耗費時間比,調(diào)整下一次每 個業(yè)務處理單元的并發(fā)度,調(diào)整后的每個業(yè)務處理單元的并發(fā)度與所述各個業(yè)務處理單元 耗費時間比成正比。
[0093] 本實施例提供的方法,通過各個業(yè)務處理單元對接收到的數(shù)據(jù)流進行處理,將得 到的數(shù)據(jù)處理結果及記錄有業(yè)務處理單元標識的標識事件發(fā)送給排序輸出單元,由排序輸 出單元在判斷收集到所有業(yè)務處理單元發(fā)送的標識事件后,將接收到的同一批次的所有數(shù) 據(jù)處理結果進行排序輸出,實現(xiàn)了分布式的實時流處理的全局排序,較現(xiàn)有分布式的實時 流處理方式更為規(guī)整和簡便,方便數(shù)據(jù)流的后續(xù)處理。
[0094] 結合上述圖1所示的裝置、圖2所示的實施環(huán)境以及上述實施例的內(nèi)容,本發(fā)明另 一實施例提供了一種分布式的實時流處理方法,參見圖5,本實施例提供的方法流程包括:[0095] 501:輸入單元實時接收一批數(shù)據(jù)流,該一批數(shù)據(jù)流包括多個子數(shù)據(jù)流,并將多個 子數(shù)據(jù)流發(fā)送給多個業(yè)務處理單元,其中,每個業(yè)務處理單元對應至少一個子數(shù)據(jù)流。
[0096] 其中,輸入單元實時接收的數(shù)據(jù)流可以來源于外部網(wǎng)絡或其他來源,本實施例在 此不對輸入單元接收的數(shù)據(jù)流的來源進行限定,同樣不對輸入單元接收到的一批數(shù)據(jù)流中 數(shù)據(jù)流的數(shù)量以及每個數(shù)據(jù)流的內(nèi)容進行限定。
[0097]此外,輸入單元將多個子數(shù)據(jù)流發(fā)送給多個業(yè)務處理單元時,可以按照平均分配、 隨機分配或按需分配的方式將多個子數(shù)據(jù)流發(fā)送給多個業(yè)務處理單元。其中,采用按需分 配的方式將多個子數(shù)據(jù)流發(fā)送給多個業(yè)務處理單元的【具體實施方式】包括但不限于根據(jù)數(shù) 據(jù)流的數(shù)據(jù)量以及每個業(yè)務處理單元處理數(shù)據(jù)流的能力將多個子數(shù)據(jù)流發(fā)送給多個業(yè)務 處理單元。例如,可為處理數(shù)據(jù)流的能力高的業(yè)務處理單元分發(fā)數(shù)據(jù)量大的數(shù)據(jù)流,為處理 數(shù)據(jù)流的能力低的業(yè)務處理單元分發(fā)數(shù)據(jù)量小的數(shù)據(jù)流。當然,輸入單元除了按照上述分 發(fā)方式將多個子數(shù)據(jù)流發(fā)送給多個業(yè)務處理單元外,還可以按照其他分發(fā)方式進行數(shù)據(jù)流 的分發(fā),本實施例對此不作具體限定。
[0098]進一步地,無論輸入單元采用哪種分配方式將接收的一批數(shù)據(jù)流分發(fā)給多個業(yè)務 處理單元,輸入單元均可以采用一定分發(fā)順序進行分發(fā)。該分發(fā)順序包括但不限于按照隨 機分發(fā)順序進行分發(fā)或者按照每個業(yè)務處理單元被分配的數(shù)據(jù)流大小順序進行分發(fā)等。 [0099] 作為一種可選實施例,輸入單元在將多個子數(shù)據(jù)流發(fā)送給多個業(yè)務處理單元之 前,輸入單元還可對實時接收的一批數(shù)據(jù)流進行預處理,具體的預處理方式包括但不限于 格式化處理等等,本實施例不對具體的預處理方式進行限定。無論輸入單元對實時接收的 一批數(shù)據(jù)流進行何種預處理,均需要將預處理之后的數(shù)據(jù)流分發(fā)給每個業(yè)務處理單元。
[0100] 502 :每個業(yè)務處理單元接收輸入單元發(fā)送的子數(shù)據(jù)流,并對接收的子數(shù)據(jù)流進行 處理,得到至少一個數(shù)據(jù)處理結果。
[0101] 每個業(yè)務處理單元接收輸入單元發(fā)送的子數(shù)據(jù)流,可以接收輸入單元發(fā)送的一個 或多個子數(shù)據(jù)流,關于每個業(yè)務處理單元接收輸入單元發(fā)送的子數(shù)據(jù)流的數(shù)量、大小及內(nèi) 容,本實施例不作具體限定。每個業(yè)務處理單元對接收的子數(shù)據(jù)流進行處理時,本實施例不 對具體處理方式進行限定,具體實施時,可依據(jù)實際情況采取對應的處理方式,例如,包括 但不限于對接收的每個子數(shù)據(jù)流進行分析處理及排序處理等。
[0102] 503 :每個業(yè)務處理單元將得到的至少一個數(shù)據(jù)處理結果發(fā)送給排序輸出單元,當 確定屬于同一批次的數(shù)據(jù)流的子數(shù)據(jù)流處理完成時,向排序輸出單元發(fā)送標識事件,該標 識事件用于指示同一批次的數(shù)據(jù)流處理完成。
[0103] 每個業(yè)務處理單元將得到的至少一個數(shù)據(jù)處理結果發(fā)送給排序輸出單元的方式, 具體包括但不限于:在得到至少一個數(shù)據(jù)處理結果之后,將所有數(shù)據(jù)處理結果一次性發(fā)送 給排序輸出單元,或者,每得到一個數(shù)據(jù)處理結果,按照數(shù)據(jù)處理結果的產(chǎn)生順序?qū)⒌玫降?每個數(shù)據(jù)處理結果實時發(fā)送給排序輸出單元,直至將得到的所有數(shù)據(jù)處理結果全部發(fā)送給 排序輸出單元。
[0104]無論業(yè)務處理單元采用哪種方式將其得到的至少一個數(shù)據(jù)處理結果發(fā)送給排序 輸出單元,當每個業(yè)務處理單元將處理完一批數(shù)據(jù)流得到的所有數(shù)據(jù)處理結果發(fā)送給排序 輸出單元后,為了使排序輸出單元能夠根據(jù)接收到的標識事件中記錄的業(yè)務處理單元標識 來區(qū)分哪些業(yè)務處理單元已經(jīng)處理完當前批次的數(shù)據(jù)流,業(yè)務處理單元在將其得到的至少 一個數(shù)據(jù)處理結果發(fā)送給排序輸出單元之后,還包括向排序輸出單元發(fā)送記錄有業(yè)務處理 單元標識的標識事件。
[0105]進一步地,為了使排序輸出單元能夠區(qū)分接收到的數(shù)據(jù)處理結果對應于哪批數(shù)據(jù) 流,即區(qū)分屬于同一批數(shù)據(jù)流的數(shù)據(jù)處理結果,業(yè)務處理單元向排序輸出單元發(fā)送數(shù)據(jù)處 理結果的方式包括但不限于:
[0106] 業(yè)務處理單元對當前批次的子數(shù)據(jù)流進行處理,每得到一個數(shù)據(jù)處理結果,就會 為每個數(shù)據(jù)處理結果添加該業(yè)務處理單元標識,將添加了業(yè)務處理單元標識的數(shù)據(jù)處理結 果實時發(fā)送給排序輸出單元,并在將處理完當前批次的子數(shù)據(jù)流得到的數(shù)據(jù)處理結果全部 發(fā)送給排序輸出單元后,將記錄有業(yè)務處理單元標識的標識事件發(fā)送給排序輸出單元,以 使排序輸出單元根據(jù)每個數(shù)據(jù)處理結果中添加的業(yè)務處理單元標識能夠區(qū)分開不同業(yè)務 處理單元發(fā)送的數(shù)據(jù)處理結果,根據(jù)接收到的標識事件中記錄的業(yè)務處理單元標識來區(qū)分 哪些業(yè)務處理單元已經(jīng)處理完當前批次的子數(shù)據(jù)流。
[0107] 例如,仍以圖2所示的實施環(huán)境示意圖為例,由于圖2所示的網(wǎng)絡拓撲圖中包括四 個業(yè)務處理單元,將四個業(yè)務處理單元分別記為業(yè)務處理單元1、業(yè)務處理單元2、業(yè)務處 理單元3、業(yè)務處理單元4,四個業(yè)務處理單元對應的標識分別為標識A、標識B、標識C、標識 D,四個業(yè)務處理單元對應的標識事件分別為攜帶了標識A的標識事件1、攜帶了標識B的標 識事件2、攜帶了標識C的標識事件3、攜帶了標識D的標識事件4 ;業(yè)務處理單元1對子數(shù) 據(jù)流進行處理后,每得到一個數(shù)據(jù)處理結果,就為該數(shù)據(jù)處理結果添加標識A ;業(yè)務處理單 元2對子數(shù)據(jù)流進行處理后,每得到一個數(shù)據(jù)處理結果,就為該數(shù)據(jù)處理結果添加標識B ; 業(yè)務處理單元3對子數(shù)據(jù)流進行處理后,每得到一個數(shù)據(jù)處理結果,就為該數(shù)據(jù)處理結果 添加標識C ;業(yè)務處理單元4對子數(shù)據(jù)流進行處理后,每得到一個數(shù)據(jù)處理結果,就為該數(shù) 據(jù)處理結果添加標識D。同時,業(yè)務處理單元將每一個添加了標識的數(shù)據(jù)處理結果實時發(fā)送 給排序輸出單元。并且,業(yè)務處理單元1在將處理完一批子數(shù)據(jù)流得到的數(shù)據(jù)處理結果全 部發(fā)送給排序輸出單元后,將攜帶有標識A的標識事件1發(fā)送給排序輸出單元;業(yè)務處理單 元2在將處理完一批子數(shù)據(jù)流得到的數(shù)據(jù)處理結果全部發(fā)送給排序輸出單元后,將攜帶有 標識B的標識事件2發(fā)送給排序輸出單元;其余的業(yè)務處理單元依此類推。
[0108] 需要說明的是,由于每個業(yè)務處理單元發(fā)送的標識事件用于排序輸出單元來區(qū)分 業(yè)務處理單元是否處理完當前批次的子數(shù)據(jù)流,因而每個業(yè)務處理單元在處理完當前批次 的數(shù)據(jù)流之后,將得到的所有數(shù)據(jù)處理結果發(fā)送給排序輸出單元,并向排序輸出單元發(fā)送 記錄有業(yè)務處理單元標識的標識事件。具體實施時,每個業(yè)務處理單元在處理子數(shù)據(jù)流時, 還可以設置處理子數(shù)據(jù)流的時間窗口。當業(yè)務處理單元處理完當前批次的子數(shù)據(jù)流之后, 時間窗口到期,進而觸發(fā)每個業(yè)務處理單元向排序輸出單元發(fā)送記錄有業(yè)務處理單元標識 的標識事件。
[0109] 504:排序輸出單元接收每個業(yè)務處理單元發(fā)送的至少一個數(shù)據(jù)處理結果及標識 事件,并在判斷收集齊全所有業(yè)務處理單元發(fā)送的標識事件后,將接收到的屬于同一批次 的數(shù)據(jù)流的所有數(shù)據(jù)處理結果進行排序輸出。
[0110] 其中,由于每個業(yè)務處理單元處理子數(shù)據(jù)流的大小、處理子數(shù)據(jù)流的方式及處理 子數(shù)據(jù)流的能力不同,每個業(yè)務處理單元向排序輸出單元發(fā)送數(shù)據(jù)處理結果及標識事件的 時間也將不同,因此,排序輸出單元接收各個業(yè)務處理單元發(fā)送的數(shù)據(jù)處理結果及標識事 件的時間不同,本實施例不對排序輸出單元接收各個業(yè)務處理單元發(fā)送的數(shù)據(jù)處理結果及 標識事件的順序進行限定。
[0111] 排序輸出單元每接收到一個業(yè)務處理單元發(fā)送的標識事件后,由于標識事件中記 錄有業(yè)務處理單元標識,因而排序輸出單元可以根據(jù)接收到的標識事件中記錄的業(yè)務處理 單元標識確定哪些業(yè)務處理單元處理完當前批次的子數(shù)據(jù)流。
[0112] 具體實施時,排序輸出單元中可以記錄所有業(yè)務處理單元的標識,由于標識事件 攜帶了對應的業(yè)務處理單元的標識,當排序輸出單元接收各個業(yè)務處理單元發(fā)送的數(shù)據(jù)處 理結果及標識事件后,可以將接收到的標識事件所攜帶的業(yè)務處理單元的標識與記錄的業(yè) 務處理單元的標識進行對比。當收集到所有業(yè)務處理單元的標識之后,即判斷收集到了所 有業(yè)務處理單元發(fā)送的標識事件。當排序輸出單元接收到所有業(yè)務處理單元發(fā)送的標識事 件后,即可判斷一批數(shù)據(jù)流處理完畢。
[0113] 同時,為了將不同批的數(shù)據(jù)流對應的數(shù)據(jù)處理結果區(qū)分開,從而將接收到的不同 批數(shù)據(jù)流的數(shù)據(jù)處理結果按照批次進行排序輸出,針對上述業(yè)務處理單元發(fā)送所有數(shù)據(jù)處 理結果及標識事件的發(fā)送方式,本實施例采用了如下的排序輸出方式:
[0114] 排序輸出單元接收到各個業(yè)務處理單元實時發(fā)送的攜帶業(yè)務處理單元標識的數(shù) 據(jù)處理結果,以及每個業(yè)務處理單元在處理完一批數(shù)據(jù)流發(fā)送的標識事件之后,可以根據(jù) 業(yè)務處理單元標識將不同業(yè)務處理單元發(fā)送的數(shù)據(jù)處理結果和標識事件進行分區(qū)存放。每 收到一個業(yè)務處理單元發(fā)送的標識事件,并將該標識事件存放在該業(yè)務處理單元對應的分 區(qū)后,該分區(qū)中第一個標識事件之前的所有數(shù)據(jù)處理結果即為該業(yè)務處理單元發(fā)送的對同 一批數(shù)據(jù)流處理后得到的數(shù)據(jù)處理結果。同理,可以按照上述方法得到其他業(yè)務處理單元 發(fā)送的對同一批數(shù)據(jù)流處理后得到的數(shù)據(jù)處理結果,對所有分區(qū)中第一個標識事件之前的 所有數(shù)據(jù)處理結果作排序后輸出,同時清除所有分區(qū)中已輸出的標識事件,以進行后續(xù)數(shù) 據(jù)處理結果的排序輸出;至此,就能將業(yè)務處理單元發(fā)送的不同批數(shù)據(jù)處理結果區(qū)分開來, 將同一批數(shù)據(jù)處理結果作排序輸出了。
[0115] 例如,仍以圖2所示的實施環(huán)境示意圖為例,針對上述業(yè)務處理單元發(fā)送所有數(shù) 據(jù)處理結果及標識事件的發(fā)送方式二所舉的例子,排序輸出單元實時接收到攜帶標識A、標 識B、標識C、標識D的數(shù)據(jù)處理結果時,可判斷該數(shù)據(jù)處理結果分別是由業(yè)務處理單元1、 業(yè)務處理單元2、業(yè)務處理單元3、業(yè)務處理單元4發(fā)送的,并將攜帶標識A、標識B、標識C、 標識D的數(shù)據(jù)處理結果分別放在一區(qū)、二區(qū)、三區(qū)、四區(qū);當排序輸出單元接收到攜帶標識A 的標識事件1時,將標識事件1放在一區(qū),則一區(qū)中第一個標識事件1到來之前的所有數(shù)據(jù) 處理結果為業(yè)務處理單元1對同一批數(shù)據(jù)流處理后得到的數(shù)據(jù)處理結果,其他三個區(qū)的情 況依此類推,則每一個區(qū)中第一個標識事件到來之前接收到的所有數(shù)據(jù)處理結果都屬于同 一批數(shù)據(jù)處理結果;排序輸出單元將同一批數(shù)據(jù)處理結果作排序輸出,并將每一個區(qū)中已 輸出的標識事件也清除;后續(xù)數(shù)據(jù)處理結果的排序輸出方式依此類推。
[0116] 由于排序輸出單元接收到所有業(yè)務處理單元發(fā)送的標識事件后,即可判斷一批數(shù) 據(jù)流處理完畢,從而能夠輸出一批數(shù)據(jù)流的數(shù)據(jù)處理結果,則針對多批數(shù)據(jù)流的情況,按照 上述方法進行分布式實時流處理之后,可將每批數(shù)據(jù)流按照順序依次輸出數(shù)據(jù)處理結果, 保證了多批數(shù)據(jù)流的數(shù)據(jù)處理結果之間的順序,實現(xiàn)了全局排序。
[0117] 進一步地,針對同一批數(shù)據(jù)流的數(shù)據(jù)處理結果之間的排序過程,本實施例不作具 體限定,具體實施時,排序輸出單元判斷收集到了所有業(yè)務處理單元發(fā)送的標識事件后,當 前收集到的所有數(shù)據(jù)處理結果即為輸入單元接收的同一批數(shù)據(jù)流經(jīng)過處理后得到的所有 數(shù)據(jù)處理結果,排序輸出單元可將所有數(shù)據(jù)處理結果按照特定的排序規(guī)則進行排序,得到 同一批數(shù)據(jù)流的所有數(shù)據(jù)處理結果之間的排序結果,并將排序結果進行輸出。其中,排序輸 出單元對同一批數(shù)據(jù)流的所有數(shù)據(jù)處理結果進行排序的排序規(guī)則可以有多種,本實施例對 此不進行具體限定。輸入單元接收一批數(shù)據(jù)流,并在對數(shù)據(jù)流的預處理中對每條子數(shù)據(jù)流 的先后輸入順序作標記;業(yè)務處理單元處理輸入單元分發(fā)的每個子數(shù)據(jù)流得到對應的數(shù)據(jù) 處理結果后,為該數(shù)據(jù)處理結果添加與對應的子數(shù)據(jù)流一致的標記;業(yè)務處理單元將添加 了標記的數(shù)據(jù)處理結果發(fā)送給排序輸出單元,從而使排序輸出單元可以根據(jù)每個數(shù)據(jù)處理 結果中添加的標記來對各個數(shù)據(jù)處理結果進行排序。
[0118] 例如,第一條輸入的子數(shù)據(jù)流經(jīng)過處理后得到的數(shù)據(jù)處理結果中攜帶了標記1,第 二條輸入的子數(shù)據(jù)流經(jīng)過處理后得到的數(shù)據(jù)處理結果中攜帶了標記2,其余的數(shù)據(jù)處理結 果依此類推;當排序輸出單元判斷當前收集到的所有數(shù)據(jù)處理結果為輸入單元接收的同一 批數(shù)據(jù)流經(jīng)過處理后得到的所有數(shù)據(jù)處理結果后,根據(jù)每一條數(shù)據(jù)處理結果中攜帶的標記 對同一批數(shù)據(jù)流經(jīng)過處理后得到的所有數(shù)據(jù)處理結果進行排序,攜帶標記1的數(shù)據(jù)處理結 果排在第一位,第一個輸出,攜帶標記2的數(shù)據(jù)處理結果排在第二位,第二個輸出,其余排 序結果以此類推。
[0119] 作為一種可選實施例,由于每個業(yè)務處理單元處理子數(shù)據(jù)流的時間長短不同,排 序輸出單元接收到各個業(yè)務處理單元發(fā)送的數(shù)據(jù)處理結果的時間不定,因此在排序輸出單 元接收各個業(yè)務處理單元發(fā)送的數(shù)據(jù)處理結果及標識事件之后,本發(fā)明實施例提供了一種 實時調(diào)整業(yè)務處理單元的并發(fā)度的動態(tài)反饋機制,以通過該動態(tài)反饋機制來調(diào)整各個業(yè)務 處理單元的并發(fā)度,從而使每個業(yè)務處理單元處理子數(shù)據(jù)流的時間能夠達到平衡,減少排 序輸出單元等待所有業(yè)務處理單元發(fā)送的數(shù)據(jù)處理結果的時間。其中,業(yè)務處理單元的并 發(fā)度用于標識業(yè)務處理單元處理子數(shù)據(jù)流的能力,業(yè)務處理單元的并發(fā)度越高,其處理子 數(shù)據(jù)流的能力越高,處理同樣的子數(shù)據(jù)流所需要的時間越短;業(yè)務處理單元的并發(fā)度越低, 其處理子數(shù)據(jù)流的能力越低,處理同樣的子數(shù)據(jù)流所需要的時間越長。業(yè)務處理單元的并 發(fā)度包括但不限于業(yè)務處理單元處理子數(shù)據(jù)流的大小或處理子數(shù)據(jù)流的數(shù)量。
[0120] 實時調(diào)整業(yè)務處理單元處理數(shù)據(jù)流的動態(tài)反饋機制,包括:根據(jù)接收到每個業(yè)務 處理單元發(fā)送的標識事件的時間,調(diào)整每個業(yè)務處理單元的并發(fā)度,具體包括但不限于如 下幾個步驟:
[0121] 步驟一:排序輸出單元接收所有業(yè)務處理單元發(fā)送的標識事件時,記錄所有標識 事件的接收時間;
[0122] 例如,以業(yè)務處理單元的個數(shù)為4為例,接收到四個業(yè)務處理單元分別發(fā)送的標 識事件1、標識事件2、標識事件3、標識事件4的時間分別為20ms(毫秒)、30m S、50ms、 100ms,則記錄下每個標識事件的接收時間,如表1所示。
[0123]表1
【權利要求】
1. 一種分布式的實時流處理裝置,其特征在于,所述裝置包括:輸入單元、至少兩個業(yè) 務處理單元及排序輸出單元; 所述輸入單元,用于實時接收一批數(shù)據(jù)流,所述一批數(shù)據(jù)流包括多個子數(shù)據(jù)流,并將所 述多個子數(shù)據(jù)流發(fā)送給多個業(yè)務處理單元,其中,每個業(yè)務處理單元對應至少一個子數(shù)據(jù) 流; 所述每個業(yè)務處理單元,用于接收所述輸入單元發(fā)送的子數(shù)據(jù)流,對接收到的所述子 數(shù)據(jù)流進行并行處理,將得到的至少一個數(shù)據(jù)處理結果發(fā)送給所述排序輸出單元,當確定 屬于同一批次的數(shù)據(jù)流的子數(shù)據(jù)流處理完成時,向所述排序輸出單元發(fā)送標識事件,所述 標識事件用于指示同一批次的數(shù)據(jù)流處理完成; 所述排序輸出單元,用于接收所述每個業(yè)務處理單元發(fā)送的至少一個數(shù)據(jù)處理結果及 所述標識事件,并在判斷收集齊全所有業(yè)務處理單元發(fā)送的所述標識事件后,將收集到的 屬于同一批次的數(shù)據(jù)流的所有數(shù)據(jù)處理結果進行排序輸出。
2. 根據(jù)權利要求1所述的裝置,其特征在于,所述每個業(yè)務處理單元,用于每得到一個 數(shù)據(jù)處理結果后,為每個數(shù)據(jù)處理結果添加業(yè)務處理單元標識,將添加了業(yè)務處理單元標 識的數(shù)據(jù)處理結果實時發(fā)送給所述排序輸出單元,并在將處理完當前批次的數(shù)據(jù)流得到的 數(shù)據(jù)處理結果全部發(fā)送給排序輸出單元后,將記錄有業(yè)務處理單元標識的標識事件發(fā)送給 排序輸出單兀; 所述排序輸出單元,用于接收到每個業(yè)務處理單元實時發(fā)送的攜帶本業(yè)務處理單元標 識的數(shù)據(jù)處理結果,以及每個業(yè)務處理單元發(fā)送的標識事件之后,根據(jù)業(yè)務處理單元標識 將不同業(yè)務處理單元發(fā)送的數(shù)據(jù)處理結果進行分區(qū)存放,對每個分區(qū)存放的數(shù)據(jù)處理結果 作排序后輸出之后,清除分區(qū)中已輸出的標識事件。
3. 根據(jù)權利要求1所述的裝置,其特征在于,所述排序輸出單元,還用于記錄接收到 所述每個業(yè)務處理單元發(fā)送的所述標識事件的時間,按照接收到所述標識事件的時間先后 順序,將所述每個業(yè)務處理單元發(fā)送的屬于同一批次的數(shù)據(jù)流的數(shù)據(jù)處理結果進行排序輸 出。
4. 根據(jù)權利要求1至3中任一權利要求所述的裝置,其特征在于,所述排序輸出單元, 還用于根據(jù)接收到所述每個業(yè)務處理單元發(fā)送的所述標識事件的時間,調(diào)整所述每個業(yè)務 處理單元的并發(fā)度。
5. 根據(jù)權利要求4所述的裝置,其特征在于,所述排序輸出單元,具體用于根據(jù)接收到 所述每個業(yè)務處理單元發(fā)送的所述標識事件的時間,確定所述每個業(yè)務處理單元處理所述 屬于同一個批次的數(shù)據(jù)流所耗費的時間,根據(jù)每個業(yè)務處理單元所耗費的時間,確定每個 業(yè)務處理單元調(diào)整后的并發(fā)度。
6. 根據(jù)權利要求5所述的裝置,其特征在于,所述排序輸出單元,具體用于根據(jù)每個業(yè) 務處理單元所耗費的時間,獲得各個業(yè)務處理單元耗費時間比,根據(jù)所有業(yè)務處理單元的 總并發(fā)度的數(shù)量和所述各個業(yè)務處理單元耗費時間比,調(diào)整下一次每個業(yè)務處理單元的并 發(fā)度,調(diào)整后的每個業(yè)務處理單元的并發(fā)度與所述各個業(yè)務處理單元耗費時間比成正比。
7. -種分布式的實時流處理方法,其特征在于,所述方法包括: 接收每個業(yè)務處理單元發(fā)送的至少一個數(shù)據(jù)處理結果及標識事件; 判斷是否收集齊全所有業(yè)務處理單元發(fā)送的所述標識事件; 如果判斷收集齊全所有業(yè)務處理單元發(fā)送的標識事件,則將收集到的屬于同一批次的 數(shù)據(jù)流的所有數(shù)據(jù)處理結果進行排序輸出。
8. 根據(jù)權利要求7所述的方法,其特征在于,所述方法還包括: 記錄接收到所述每個業(yè)務處理單元發(fā)送的所述標識事件的時間,按照接收到所述標識 事件的時間先后順序,將所述每個業(yè)務處理單元發(fā)送的屬于同一批次的數(shù)據(jù)流的數(shù)據(jù)處理 結果進行排序輸出。
9. 根據(jù)權利要求7所述的方法,其特征在于,所述接收每個業(yè)務處理單元發(fā)送的至少 一個數(shù)據(jù)處理結果及標識事件,包括: 接收每個業(yè)務處理單元實時發(fā)送的攜帶本業(yè)務處理單元標識的數(shù)據(jù)處理結果,以及每 個業(yè)務處理單元發(fā)送的標識事件; 所述將接收到的屬于同一批次的數(shù)據(jù)流的所有數(shù)據(jù)處理結果進行排序輸出,包括: 根據(jù)業(yè)務處理單元標識將不同業(yè)務處理單元發(fā)送的數(shù)據(jù)處理結果進行分區(qū)存放,對每 個分區(qū)存放的數(shù)據(jù)處理結果作排序后輸出之后,清除分區(qū)中已輸出的標識事件。
10. 根據(jù)權利要求7至9中任一權利要求所述的方法,其特征在于,所述接收每個業(yè)務 處理單元發(fā)送的至少一個數(shù)據(jù)處理結果及標識事件之后,還包括: 根據(jù)接收到所述每個業(yè)務處理單元發(fā)送的所述標識事件的時間,調(diào)整所述每個業(yè)務處 理單元的并發(fā)度。
11. 根據(jù)權利要求10所述的方法,其特征在于,所述根據(jù)接收到所述每個業(yè)務處理單 元發(fā)送的所述標識事件的時間,調(diào)整所述每個業(yè)務處理單元的并發(fā)度,包括 : 根據(jù)接收到所述每個業(yè)務處理單元發(fā)送的所述標識事件的時間,確定所述每個業(yè)務處 理單元處理所述屬于同一個批次的數(shù)據(jù)流所耗費的時間,根據(jù)每個業(yè)務處理單元所耗費的 時間,確定每個業(yè)務處理單元調(diào)整后的并發(fā)度。
12. 根據(jù)權利要求11所述的方法,其特征在于,所述根據(jù)接收到所述每個業(yè)務處理單 元發(fā)送的所述標識事件的時間,確定所述每個業(yè)務處理單元處理所述屬于同一個批次的數(shù) 據(jù)流所耗費的時間,根據(jù)每個業(yè)務處理單元所耗費的時間,確定每個業(yè)務處理單元調(diào)整后 的并發(fā)度,包括: 根據(jù)每個業(yè)務處理單元所耗費的時間,獲得各個業(yè)務處理單元耗費時間比,根據(jù)所有 業(yè)務處理單元的總并發(fā)度的數(shù)量和所述各個業(yè)務處理單元耗費時間比,調(diào)整下一次每個業(yè) 務處理單元的并發(fā)度,調(diào)整后的每個業(yè)務處理單元的并發(fā)度與所述各個業(yè)務處理單元耗費 時間比成正比。
13. -種業(yè)務處理單元,其特征在于,所述單元包括: 接收模塊,用于接收輸入單元分發(fā)的一批數(shù)據(jù)流,所述一批數(shù)據(jù)流包括多個子數(shù)據(jù) 流; 處理模塊,用于對接收到的子數(shù)據(jù)流進行并行處理,得到數(shù)據(jù)處理結果; 發(fā)送模塊,用于將得到的至少一個數(shù)據(jù)處理結果發(fā)送給排序輸出單元,當確定屬于同 一批次的數(shù)據(jù)流的子數(shù)據(jù)流處理完成時,向所述排序輸出單元發(fā)送標識事件,所述數(shù)據(jù)處 理結果及標識事件用于所述排序輸出單元在判斷收集齊全所有業(yè)務處理單元發(fā)送的所述 標識事件后,將收集到的屬于同一批次的數(shù)據(jù)流的所有數(shù)據(jù)處理結果進行排序輸出。
14. 根據(jù)權利要求13所述的單元,其特征在于,所述發(fā)送模塊,用于每得到一個數(shù)據(jù)處 理結果后,為每個數(shù)據(jù)處理結果添加業(yè)務處理單元標識,將添加了業(yè)務處理單元標識的數(shù) 據(jù)處理結果實時發(fā)送給所述排序輸出單元,并在將處理完當前批次的數(shù)據(jù)流得到的數(shù)據(jù)處 理結果全部發(fā)送給排序輸出單元后,將記錄有業(yè)務處理單元標識的標識事件發(fā)送給排序輸 出單元。
15. -種排序輸出單元,其特征在于,所述排序輸出單元包括: 接收模塊,用于接收每個業(yè)務處理單元發(fā)送的數(shù)據(jù)處理結果及標識事件; 判斷模塊,用于判斷是否收集齊全所有業(yè)務處理單元發(fā)送的所述標識事件; 排序輸出模塊,用于當判斷收集齊全所有業(yè)務處理單元發(fā)送的標識事件時,將收集到 的屬于同一批次的數(shù)據(jù)流的所有數(shù)據(jù)處理結果進行排序輸出。
16. 根據(jù)權利要求15所述的單元,其特征在于,所述排序輸出模塊,用于記錄接收到 所述每個業(yè)務處理單元發(fā)送的所述標識事件的時間,按照接收到所述標識事件的時間先后 順序,將所述每個業(yè)務處理單元發(fā)送的屬于同一批次的數(shù)據(jù)流的數(shù)據(jù)處理結果進行排序輸 出。
17. 根據(jù)權利要求15所述的單元,其特征在于,所述接收模塊,用于接收每個業(yè)務處理 單元實時發(fā)送的攜帶本業(yè)務處理單元標識的數(shù)據(jù)處理結果,以及每個業(yè)務處理單元發(fā)送的 標識事件; 所述排序輸出模塊,用于根據(jù)業(yè)務處理單元標識將不同業(yè)務處理單元發(fā)送的數(shù)據(jù)處理 結果進行分區(qū)存放,對每個分區(qū)存放的數(shù)據(jù)處理結果作排序后輸出之后,清除分區(qū)中已輸 出的標識事件。
18. 根據(jù)權利要求15至17中任一權利要求所述的單元,其特征在于,所述單元,還包 括: 調(diào)整模塊,用于根據(jù)接收到所述每個業(yè)務處理單元發(fā)送的所述標識事件的時間,調(diào)整 所述每個業(yè)務處理單元的并發(fā)度。
19. 根據(jù)權利要求18所述的單元,其特征在于,所述調(diào)整模塊,用于根據(jù)接收到所述每 個業(yè)務處理單元發(fā)送的所述標識事件的時間,確定所述每個業(yè)務處理單元處理所述屬于同 一個批次的數(shù)據(jù)流所耗費的時間,根據(jù)每個業(yè)務處理單元所耗費的時間,確定每個業(yè)務處 理單元調(diào)整后的并發(fā)度。
20. 根據(jù)權利要求19所述的單元,其特征在于,所述調(diào)整模塊,用于根據(jù)每個業(yè)務處理 單元所耗費的時間,獲得各個業(yè)務處理單元耗費時間比,根據(jù)所有業(yè)務處理單元的總并發(fā) 度的數(shù)量和所述各個業(yè)務處理單元耗費時間比,調(diào)整下一次每個業(yè)務處理單元的并發(fā)度, 調(diào)整后的每個業(yè)務處理單元的并發(fā)度與所述各個業(yè)務處理單元耗費時間比成正比。
【文檔編號】H04L29/08GK104320382SQ201410526494
【公開日】2015年1月28日 申請日期:2014年9月30日 優(yōu)先權日:2014年9月30日
【發(fā)明者】鄭陽平, 王瀾, 智偉, 戴勁, 何志強 申請人:華為技術有限公司