本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)流處理方法和裝置。
背景技術(shù):
隨著科技的進步和用戶需求的發(fā)展,現(xiàn)在存在大量的實時數(shù)據(jù),其中,實時數(shù)據(jù)實時性強,且數(shù)據(jù)量大,且沒有止境,目前主要通過實時計算系統(tǒng)以流計算的方式對實時數(shù)據(jù)進行計算,例如:Storm應(yīng)用。然而,目前的實時計算系統(tǒng)中由于都是依賴JAVA應(yīng)用程序編程接口(Application Programming Interface,API)實現(xiàn)代碼,并打包提交任務(wù)實現(xiàn)的,所以已經(jīng)在運行的實時計算系統(tǒng)的業(yè)務(wù)邏輯不可變,即實時計算系統(tǒng)中在運行時,該系統(tǒng)的拓撲(Topology)結(jié)構(gòu)是不可變的。但是現(xiàn)在很多需求是希望能夠動態(tài)調(diào)整實時計算系統(tǒng)的處理邏輯,即動態(tài)調(diào)整實時計算系統(tǒng)的拓撲結(jié)構(gòu),從而可以適應(yīng)業(yè)務(wù)的需求??梢?,目前如何動態(tài)調(diào)整實時計算系統(tǒng)的拓撲結(jié)構(gòu)是當(dāng)前急需解決的技術(shù)問題。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供了一種數(shù)據(jù)流處理方法和裝置,可以動態(tài)調(diào)整實時計算系統(tǒng)的拓撲結(jié)構(gòu)。
第一方面,本發(fā)明實施例提供一種數(shù)據(jù)流處理方法,包括:
實時計算系統(tǒng)的處理節(jié)點接收所述實時計算系統(tǒng)的管理節(jié)點發(fā)送的用于調(diào)整所述實時計算系統(tǒng)的拓撲結(jié)構(gòu)的控制流,其中,所述控制流用于描述所述實時計算系統(tǒng)當(dāng)前需要更新的拓撲結(jié)構(gòu);
所述處理節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑;
當(dāng)所述處理節(jié)點接收到數(shù)據(jù)流時,所述處理節(jié)點對所述數(shù)據(jù)流進行業(yè)務(wù)處理,并按照所述更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送所述業(yè)務(wù)處理后的數(shù)據(jù)流。
在第一方面的第一種可能的實現(xiàn)方式中,所述方法還包括:
所述處理節(jié)點將所述更新的數(shù)據(jù)流流通表發(fā)送至所述實時計算系統(tǒng)的共享存儲節(jié)點;
當(dāng)所述處理節(jié)點進行故障恢復(fù)時,所述處理節(jié)點從所述共享存儲節(jié)點獲取所述更新的數(shù)據(jù)流流通表,并按照所述更新的數(shù)據(jù)流流通表進行數(shù)據(jù)流的發(fā)送。
結(jié)合第一方面或者第一方面的第一種可能的實現(xiàn)方式,在第一方面的第二種可能的實現(xiàn)方式中,所述方法還包括:
所述處理節(jié)點向所述實時計算系統(tǒng)的源節(jié)點反饋所述數(shù)據(jù)流流通表更新的更新結(jié)果,以使所述更新結(jié)構(gòu)表示更新失敗時,由所述源節(jié)點向所述管理節(jié)點發(fā)送所述控制流;
當(dāng)所述更新結(jié)果表示更新失敗時,所述處理節(jié)點接收所述管理節(jié)點發(fā)送的所述控制流,并按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表。
結(jié)合第一方面或者第一方面的第一種可能的實現(xiàn)方式,在第一方面的第三種可能的實現(xiàn)方式中,所述方法還包括:
所述處理節(jié)點向所述實時計算系統(tǒng)的輸出節(jié)點反饋所述數(shù)據(jù)流流通表更新的更新結(jié)果,由所述輸出節(jié)點對所述實時計算系統(tǒng)所有的處理節(jié)點反饋的所述更新結(jié)果進行匯總,并輸出匯總結(jié)果。
第二方面,本發(fā)明實施例提供一種數(shù)據(jù)流處理方法,包括:
實時計算系統(tǒng)的管理節(jié)點接收所述實時計算系統(tǒng)的源節(jié)點發(fā)送的用于調(diào)整所述實時計算系統(tǒng)的拓撲結(jié)構(gòu)的控制流,其中,所述控制流用于描述所述實時計算系統(tǒng)當(dāng)前需要更新的拓撲結(jié)構(gòu);
所述管理節(jié)點將所述控制流發(fā)送至用于對數(shù)據(jù)流進行業(yè)務(wù)處理的處理節(jié)點,以使所述處理節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑;當(dāng)所述處理節(jié)點接收到數(shù)據(jù)流時,由所述處理節(jié)點對所述數(shù)據(jù)流進行業(yè)務(wù)處理,并按照所述更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送所述業(yè)務(wù)處理后的數(shù)據(jù)流。
在第二方面的第一種可能的實現(xiàn)方式中,所述方法還包括:
所述管理節(jié)點與所述實時計算系統(tǒng)中的各個所述處理節(jié)點建立并保持連 接;
所述管理節(jié)點將所述控制流發(fā)送至用于對數(shù)據(jù)流進行業(yè)務(wù)處理的處理節(jié)點,包括:
所述管理節(jié)點以廣播方式將所述控制流發(fā)送至所述實時計算系統(tǒng)的各個所述處理節(jié)點。
第三方面,本發(fā)明實施例提供一種數(shù)據(jù)流處理方法,包括:
實時計算系統(tǒng)的源節(jié)點獲取用于調(diào)整所述實時計算系統(tǒng)的拓撲結(jié)構(gòu)的控制流,其中,所述控制流用于描述所述實時計算系統(tǒng)當(dāng)前需要更新的拓撲結(jié)構(gòu);
所述源節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑;
所述源節(jié)點將所述控制流發(fā)送給所述實時計算系統(tǒng)的管理節(jié)點,以使所述管理節(jié)點將所述控制流發(fā)送至用于對數(shù)據(jù)流進行業(yè)務(wù)處理的處理節(jié)點,以使所述處理節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑;
所述源節(jié)點接收數(shù)據(jù)流,并將所述數(shù)據(jù)流按照所述源節(jié)點更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送至所述處理節(jié)點,由所述處理節(jié)點對所述數(shù)據(jù)流進行業(yè)務(wù)處理,并按照該處理節(jié)點更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送所述業(yè)務(wù)處理后的數(shù)據(jù)流。
在第三方面的第一種可能的實現(xiàn)方式中,所述方法還包括:
所述源節(jié)點將所述更新的數(shù)據(jù)流流通表發(fā)送至所述實時計算系統(tǒng)的共享存儲節(jié)點;
當(dāng)所述源節(jié)點進行故障恢復(fù)時,所述源節(jié)點從所述共享存儲節(jié)點獲取所述更新的數(shù)據(jù)流流通表,并按照所述更新的數(shù)據(jù)流流通表進行數(shù)據(jù)流的發(fā)送。
結(jié)合第三方面或者第三方面的第一種可能的實現(xiàn)方式,在第三方面的第二種可能的實現(xiàn)方式中,所述方法還包括:
所述源節(jié)點接收所述處理節(jié)點反饋的所述處理節(jié)點更新所述數(shù)據(jù)流流通表的更新結(jié)果;
當(dāng)所述更新結(jié)果表示更新失敗時,所述源節(jié)點向所述管理節(jié)點發(fā)送所述控 制流,以使所述管理節(jié)點向所述處理節(jié)點發(fā)送所述控制流,由所述處理節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新所述數(shù)據(jù)流流通表。
第四方面,本發(fā)明實施例提供一種數(shù)據(jù)流處理裝置,所述裝置應(yīng)用于實時計算系統(tǒng)的處理節(jié)點,包括:接收單元、第一更新單元和第一發(fā)送單元,其中:
所述接收單元,用于接收實時計算系統(tǒng)的管理節(jié)點發(fā)送的用于調(diào)整所述實時計算系統(tǒng)的拓撲結(jié)構(gòu)的控制流,其中,所述控制流用于描述所述實時計算系統(tǒng)當(dāng)前需要更新的拓撲結(jié)構(gòu);
所述第一更新單元,用于按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑;
所述第一發(fā)送單元,用于當(dāng)所述處理節(jié)點接收到數(shù)據(jù)流時,對所述數(shù)據(jù)流進行業(yè)務(wù)處理,并按照所述更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送所述業(yè)務(wù)處理后的數(shù)據(jù)流。
在第四方面的第一種可能的實現(xiàn)方式中,所述裝置還包括:
第二發(fā)送單元,用于將所述更新的數(shù)據(jù)流流通表發(fā)送至所述實時計算系統(tǒng)的共享存儲節(jié)點;
恢復(fù)單元,用于當(dāng)所述處理節(jié)點進行故障恢復(fù)時,從所述共享存儲節(jié)點獲取所述更新的數(shù)據(jù)流流通表,并按照所述更新的數(shù)據(jù)流流通表進行數(shù)據(jù)流的發(fā)送。
結(jié)合第四方面或者第四方面的第一種可能的實現(xiàn)方式,在第四方面的第二種可能的實現(xiàn)方式中,所述裝置還包括:
第一反饋單元,用于向所述實時計算系統(tǒng)的源節(jié)點反饋所述數(shù)據(jù)流流通表更新的更新結(jié)果,以使所述更新結(jié)構(gòu)表示更新失敗時,由所述源節(jié)點向所述管理節(jié)點發(fā)送所述控制流;
第二更新單元,用于當(dāng)所述更新結(jié)果表示所述第一更新單元更新失敗時,接收所述管理節(jié)點發(fā)送的所述控制流,并按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表。
結(jié)合第四方面或者第四方面的第一種可能的實現(xiàn)方式,在第四方面的第三種可能的實現(xiàn)方式中,所述裝置還包括:
第二反饋單元,用于向所述實時計算系統(tǒng)的輸出節(jié)點反饋所述數(shù)據(jù)流流通 表更新的更新結(jié)果,由所述輸出節(jié)點對所述實時計算系統(tǒng)所有的處理節(jié)點反饋的所述更新結(jié)果進行匯總,并輸出匯總結(jié)果。
第五方面,本發(fā)明實施例提供一種數(shù)據(jù)流處理裝置,包括:接收單元和發(fā)送單元,其中:
所述接收單元,用于接收實時計算系統(tǒng)的源節(jié)點發(fā)送的用于調(diào)整所述實時計算系統(tǒng)的拓撲結(jié)構(gòu)的控制流,其中,所述控制流用于描述所述實時計算系統(tǒng)當(dāng)前需要更新的拓撲結(jié)構(gòu);
所述發(fā)送單元,用于將所述控制流發(fā)送至用于對數(shù)據(jù)流進行業(yè)務(wù)處理的處理節(jié)點,以使所述處理節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑;當(dāng)所述處理節(jié)點接收到數(shù)據(jù)流時,由所述處理節(jié)點對所述數(shù)據(jù)流進行業(yè)務(wù)處理,并按照所述更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送所述業(yè)務(wù)處理后的數(shù)據(jù)流。
在第五方面的第一種可能的實現(xiàn)方式中,所述裝置還包括:
保持單元,用于與所述實時計算系統(tǒng)中的各個所述處理節(jié)點建立并保持連接;
所述發(fā)送單元用于以廣播方式將所述控制流發(fā)送至所述實時計算系統(tǒng)的各個所述處理節(jié)點。
第六方面,本發(fā)明實施例提供一種數(shù)據(jù)流處理裝置,所述裝置應(yīng)用于實時計算系統(tǒng)的源節(jié)點,包括:獲取單元、更新單元、第一發(fā)送單元和第二發(fā)送單元,其中:
所述獲取單元,用于獲取用于調(diào)整所述實時計算系統(tǒng)的拓撲結(jié)構(gòu)的控制流,其中,所述控制流用于描述所述實時計算系統(tǒng)當(dāng)前需要更新的拓撲結(jié)構(gòu);
所述更新單元,用于按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑;
所述第一發(fā)送單元,用于將所述控制流發(fā)送給所述實時計算系統(tǒng)的管理節(jié)點,以使所述管理節(jié)點將所述控制流發(fā)送至用于對數(shù)據(jù)流進行業(yè)務(wù)處理的處理節(jié)點,以使所述處理節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更 新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑;
所述第二發(fā)送單元,用于接收數(shù)據(jù)流,并將所述數(shù)據(jù)流按照所述源節(jié)點更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送至所述處理節(jié)點,由所述處理節(jié)點對所述數(shù)據(jù)流進行業(yè)務(wù)處理,并按照該處理節(jié)點更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送所述業(yè)務(wù)處理后的數(shù)據(jù)流。
在第六方面的第一種可能的實現(xiàn)方式中,所述裝置還包括:
第三發(fā)送單元,用于將所述更新的數(shù)據(jù)流流通表發(fā)送至所述實時計算系統(tǒng)的共享存儲節(jié)點;
恢復(fù)單元,用于當(dāng)所述源節(jié)點進行故障恢復(fù)時,從所述共享存儲節(jié)點獲取所述更新的數(shù)據(jù)流流通表,并按照所述更新的數(shù)據(jù)流流通表進行數(shù)據(jù)流的發(fā)送。
結(jié)合第六方面或者第六方面的第一種可能的實現(xiàn)方式,在第六方面的第二種可能的實現(xiàn)方式中,所述裝置還包括:
接收單元,用于接收所述處理節(jié)點反饋的所述處理節(jié)點更新所述數(shù)據(jù)流流通表的更新結(jié)果;
第四發(fā)送單元,用于當(dāng)所述更新結(jié)果表示更新失敗時,向所述管理節(jié)點發(fā)送所述控制流,以使所述管理節(jié)點向所述處理節(jié)點發(fā)送所述控制流,由所述處理節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新所述數(shù)據(jù)流流通表。
上述技術(shù)方案中,實時計算系統(tǒng)的處理節(jié)點接收所述實時計算系統(tǒng)的管理節(jié)點發(fā)送的用于調(diào)整所述實時計算系統(tǒng)的拓撲結(jié)構(gòu)的控制流,其中,所述控制流用于描述所述實時計算系統(tǒng)當(dāng)前需要更新的拓撲結(jié)構(gòu);所述處理節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑;當(dāng)所述處理節(jié)點接收到數(shù)據(jù)流時,所述處理節(jié)點對所述數(shù)據(jù)流進行業(yè)務(wù)處理,并按照所述更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送所述業(yè)務(wù)處理后的數(shù)據(jù)流。這樣可以通過實時更新數(shù)據(jù)流流通表的方式實現(xiàn)更新實時計算系統(tǒng)的處理邏輯,即可以動態(tài)地調(diào)整實時計算系統(tǒng)的拓撲結(jié)構(gòu)。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施 例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實施例提供的數(shù)據(jù)流處理方法可應(yīng)用的實時計算系統(tǒng)的架構(gòu)圖;
圖2是本發(fā)明實施例提供的一種數(shù)據(jù)流處理方法的流程示意圖;
圖3是本發(fā)明實施例提供的另一種數(shù)據(jù)流處理方法的流程示意圖;
圖4是本發(fā)明實施例提供的另一種數(shù)據(jù)流處理方法的流程示意圖;
圖5是本發(fā)明實施例提供的另一種數(shù)據(jù)流處理方法的流程示意圖;
圖6是本發(fā)明實施例提供的以Storm應(yīng)用為例的控制流傳輸示意圖;
圖7是本發(fā)明實施例提供的以Storm應(yīng)用為例的數(shù)據(jù)流傳輸示意圖;
圖8是本發(fā)明實施例提供的一種數(shù)據(jù)流處理裝置的結(jié)構(gòu)示意圖;
圖9是本發(fā)明實施例提供的另一種數(shù)據(jù)流處理裝置的結(jié)構(gòu)示意圖;
圖10是本發(fā)明實施例提供的另一種數(shù)據(jù)流處理裝置的結(jié)構(gòu)示意圖;
圖11是本發(fā)明實施例提供的另一種數(shù)據(jù)流處理裝置的結(jié)構(gòu)示意圖;
圖12是本發(fā)明實施例提供的另一種數(shù)據(jù)流處理裝置的結(jié)構(gòu)示意圖;
圖13是本發(fā)明實施例提供的另一種數(shù)據(jù)流處理裝置的結(jié)構(gòu)示意圖;
圖14是本發(fā)明實施例提供的另一種數(shù)據(jù)流處理裝置的結(jié)構(gòu)示意圖;
圖15是本發(fā)明實施例提供的另一種數(shù)據(jù)流處理裝置的結(jié)構(gòu)示意圖;
圖16是本發(fā)明實施例提供的另一種數(shù)據(jù)流處理裝置的結(jié)構(gòu)示意圖;
圖17是本發(fā)明實施例提供的另一種數(shù)據(jù)流處理裝置的結(jié)構(gòu)示意圖;
圖18是本發(fā)明實施例提供的另一種數(shù)據(jù)流處理裝置的結(jié)構(gòu)示意圖;
圖19是本發(fā)明實施例提供的另一種數(shù)據(jù)流處理裝置的結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
請參閱圖1,圖1是本發(fā)明實施例提供的數(shù)據(jù)流處理方法可應(yīng)用的實時計算 系統(tǒng)的架構(gòu)圖,如圖1所示,包括:監(jiān)督主體11、源節(jié)點12,以及還包括一個或者多個處理節(jié)點13和管理模塊14,其中,監(jiān)督主體11分別與源節(jié)點12以及各個處理節(jié)點13連接,源節(jié)點12至少與其中一個處理節(jié)點13連接,且各個處理節(jié)點13依次相連。另外,管理模塊14包括管理節(jié)點141和輸出節(jié)點142,其中,管理節(jié)點141與源節(jié)點以及各個處理節(jié)點13連接,輸出節(jié)點142與各個處理節(jié)點13連接。其中,上述實時計算系統(tǒng)中各節(jié)點之間的連接關(guān)系表現(xiàn)為該實時計算系統(tǒng)的拓撲(Topology),或者理解為拓撲模型。
需要說明的是,本實施例中描述的節(jié)點之間的連接可以理解為邏輯連接上的連接,連接的節(jié)點之間可以進行數(shù)據(jù)流或者控制流的傳輸。
在上述實時計算系統(tǒng)在運行時,數(shù)據(jù)流從源節(jié)點12流入,然后源節(jié)點12按照存儲的數(shù)據(jù)流流通表將數(shù)據(jù)流發(fā)送給對應(yīng)的處理節(jié)點13,該處理節(jié)點13對接收的數(shù)據(jù)流進行業(yè)務(wù)處理,其中,該業(yè)務(wù)處理可以包括對數(shù)據(jù)流進行實時計算或者理解為流計算,該處理節(jié)點13按照存儲的數(shù)據(jù)流流通表將業(yè)務(wù)處理后的數(shù)據(jù)流發(fā)送給另一處理節(jié)點13,由該處理節(jié)點13按照存儲的數(shù)據(jù)流流通表將業(yè)務(wù)處理后的數(shù)據(jù)流發(fā)送給另一節(jié)點或者輸出結(jié)果。其中,本發(fā)明實施例中,數(shù)據(jù)流流通表包括與實時計算系統(tǒng)的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑,即本實施例中,通過數(shù)據(jù)流流通表來控制數(shù)據(jù)流的傳輸路徑或者傳輸結(jié)構(gòu),這樣無論是源節(jié)點12還是處理節(jié)點13都可以通過各自存儲的數(shù)據(jù)流流通表將當(dāng)前需要發(fā)送的數(shù)據(jù)流發(fā)送至相應(yīng)的節(jié)點。例如:上述實時計算系統(tǒng)的拓撲結(jié)構(gòu)包括源節(jié)點12連接處理節(jié)點A,處理節(jié)點A再連接處理節(jié)點B,處理節(jié)點B再連接處理節(jié)點C,處理節(jié)點C為結(jié)束節(jié)點。這樣在源節(jié)點12存儲的數(shù)據(jù)流流通表就可以包括數(shù)據(jù)流由源節(jié)點12發(fā)送至處理節(jié)點A的映射,處理節(jié)點A存儲的數(shù)據(jù)流流通表就可以包括數(shù)據(jù)流由處理節(jié)點A發(fā)送至處理節(jié)點B的映射,處理節(jié)點B存儲的數(shù)據(jù)流流通表就可以包括數(shù)據(jù)流由處理節(jié)點B發(fā)送至處理節(jié)點C的映射,處理節(jié)點C存儲的數(shù)據(jù)流流通表就可以包括處理節(jié)點C輸出業(yè)務(wù)處理結(jié)果的映射。當(dāng)然,本實施例中,每個節(jié)點存儲的數(shù)據(jù)流流通表可以包括所有映射或者僅包括與自己相關(guān)的映射。
在上述實時計算系統(tǒng)在運行時,控制流可以從源節(jié)點12傳輸至管理節(jié)點141,其中,該控制流用于描述所述實時計算系統(tǒng)當(dāng)前需要更新的拓撲結(jié)構(gòu)。管理節(jié)點141再將控制流傳輸給每個處理節(jié)點13,這樣這些處理節(jié)點13就可以根 據(jù)控制流更新存儲的數(shù)據(jù)流流通表,從而實現(xiàn)動態(tài)調(diào)整實時計算系統(tǒng)的拓撲結(jié)構(gòu)。
另外,本發(fā)明實施例中,上述實時計算系統(tǒng)可以是分布式系統(tǒng),即上述各節(jié)點可以分布運行在不同的機器中,當(dāng)然,也可以允許其中的一部分節(jié)點運行在同一機器中,例如:管理節(jié)點121和輸出節(jié)點122可以運行在同一機器中或者運行在不同的機器中。另外,本發(fā)明實施例中,這些機器不作限定,例如:這些機器可以是計算機或者服務(wù)器等。
請參閱圖2,圖2是本發(fā)明實施例提供的一種數(shù)據(jù)流處理方法的流程示意圖,如圖2所示,包括以下步驟:
201、實時計算系統(tǒng)的處理節(jié)點接收所述實時計算系統(tǒng)的管理節(jié)點發(fā)送的用于調(diào)整所述實時計算系統(tǒng)的拓撲結(jié)構(gòu)的控制流,其中,所述控制流用于描述所述實時計算系統(tǒng)當(dāng)前需要更新的拓撲結(jié)構(gòu)。
本實施例中,上述控制流描述的當(dāng)前需要更新的拓撲結(jié)構(gòu)可以是實時計算系統(tǒng)當(dāng)前需要更新的完整拓撲結(jié)構(gòu),例如:上述控制流可以描述如圖1所示的源節(jié)點、處理節(jié)點、管理節(jié)點和輸出節(jié)點之間的拓撲結(jié)構(gòu)?;蛘?,上述控制流描述的當(dāng)前需要更新的拓撲結(jié)構(gòu)可以是當(dāng)前需要調(diào)整的拓撲結(jié)構(gòu),例如:原先的拓撲結(jié)構(gòu)中處理節(jié)點A連接處理節(jié)點B,處理節(jié)點B再連接處理節(jié)點C,即數(shù)據(jù)流的流通順序是處理節(jié)點A到處理節(jié)點B再到處理節(jié)點C,而當(dāng)前需要調(diào)整為處理節(jié)點A連接處理節(jié)點C,處理節(jié)點C再連接處理節(jié)點B。那么,上述控制流可以僅是描述處理節(jié)點A連接處理節(jié)點C,處理節(jié)點C再連接處理節(jié)點B的拓撲結(jié)構(gòu),即更新后,數(shù)據(jù)流的流通順序是處理節(jié)點A到處理節(jié)點B再到處理節(jié)點C。
另外,本實施例中,上述控制流可以理解為控制流信息,即上述控制流可以理解為一條信息。
202、處理節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑。
本實施例中,處理節(jié)點存儲有與原拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通表,當(dāng)接收到上述控制流時,即當(dāng)前拓撲結(jié)構(gòu)需要更新時,就可以按照當(dāng)前需要更新的拓 撲結(jié)構(gòu)更新數(shù)據(jù)流流通表。而更新后的數(shù)據(jù)流流通表包括與當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑,這樣就可以實現(xiàn)該處理節(jié)點在發(fā)送數(shù)據(jù)流時,是按照更新后的拓撲結(jié)構(gòu)發(fā)送數(shù)據(jù)流。
另外,上述與當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑可以理解為在當(dāng)前需要更新的拓撲結(jié)構(gòu)中數(shù)據(jù)流的流通路徑或者流通結(jié)構(gòu)。例如:當(dāng)前需要更新的拓撲結(jié)構(gòu)是處理節(jié)點A連接處理節(jié)點C,那么,上述更新的數(shù)據(jù)流流通表就會包括數(shù)據(jù)流從處理節(jié)點A傳輸給處理節(jié)點C,即當(dāng)執(zhí)行步驟202的處理節(jié)點為處理節(jié)點A,那么,上述更新的數(shù)據(jù)流流通表就可以包括將數(shù)據(jù)流傳輸至處理節(jié)點C的數(shù)據(jù)流流通路徑。
203、當(dāng)所述處理節(jié)點接收到數(shù)據(jù)流時,所述處理節(jié)點對所述數(shù)據(jù)流進行業(yè)務(wù)處理,并按照所述更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送所述業(yè)務(wù)處理后的數(shù)據(jù)流。
通過上述步驟可以實現(xiàn)處理節(jié)點在發(fā)送數(shù)據(jù)流時是按照更新的拓撲結(jié)構(gòu)進行發(fā)送的,從而可以實現(xiàn)動態(tài)地調(diào)整實時計算系統(tǒng)的拓撲結(jié)構(gòu)。另外,在實時計算系統(tǒng)在進行巨量業(yè)務(wù)運行時通過上述步驟動態(tài)調(diào)整實時計算系統(tǒng)的拓撲結(jié)構(gòu)不會對正在進行處理的數(shù)據(jù)流造成的干擾。另外,當(dāng)實時計算系統(tǒng)為分布式系統(tǒng),各個節(jié)點運行在不同的機器時,通過上述步驟動態(tài)調(diào)整實時計算系統(tǒng)的拓撲結(jié)構(gòu)可以避免某個機器的修改滯后導(dǎo)致的問題。
本實施例中,上述處理節(jié)點可以是實時計算系統(tǒng)中的任意處理節(jié)點。
本實施例中,實時計算系統(tǒng)的處理節(jié)點接收所述實時計算系統(tǒng)的管理節(jié)點發(fā)送的用于調(diào)整所述實時計算系統(tǒng)的拓撲結(jié)構(gòu)的控制流,其中,所述控制流用于描述所述實時計算系統(tǒng)當(dāng)前需要更新的拓撲結(jié)構(gòu);所述處理節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑;當(dāng)所述處理節(jié)點接收到數(shù)據(jù)流時,所述處理節(jié)點對所述數(shù)據(jù)流進行業(yè)務(wù)處理,并按照所述更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送所述業(yè)務(wù)處理后的數(shù)據(jù)流。這樣可以通過實時更新數(shù)據(jù)流流通表的方式實現(xiàn)更新實時計算系統(tǒng)的處理邏輯,即可以動態(tài)地調(diào)整實時計算系統(tǒng)的拓撲結(jié)構(gòu)。
請參閱圖3,圖3是本發(fā)明實施例提供的另一種數(shù)據(jù)流處理方法的流程示意 圖,如圖3所示,包括以下步驟:
301、實時計算系統(tǒng)的處理節(jié)點接收所述實時計算系統(tǒng)的管理節(jié)點發(fā)送的用于調(diào)整所述實時計算系統(tǒng)的拓撲結(jié)構(gòu)的控制流,其中,所述控制流用于描述所述實時計算系統(tǒng)當(dāng)前需要更新的拓撲結(jié)構(gòu)。
302、處理節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑。
本實施例中,處理節(jié)點在更新數(shù)據(jù)流流通表時,可以暫停數(shù)據(jù)流發(fā)送,但可以對數(shù)據(jù)流進行業(yè)務(wù)處理?;蛘咛幚砉?jié)點在更新數(shù)據(jù)流流通表時,可以暫停對數(shù)據(jù)流進行業(yè)務(wù)處理和數(shù)據(jù)流發(fā)送。在更新完數(shù)據(jù)流流通表時,恢復(fù)暫停的數(shù)據(jù)流發(fā)送和/或?qū)?shù)據(jù)流的業(yè)務(wù)處理。這樣可以實現(xiàn)在動態(tài)調(diào)整實時計算系統(tǒng)的拓撲結(jié)構(gòu)時,不然會出現(xiàn)數(shù)據(jù)流的錯誤處理和系統(tǒng)的阻塞影響性能。
303、當(dāng)所述處理節(jié)點接收到數(shù)據(jù)流時,所述處理節(jié)點對所述數(shù)據(jù)流進行業(yè)務(wù)處理,并按照所述更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送所述業(yè)務(wù)處理后的數(shù)據(jù)流。
上述方法還可以包括如下步驟:
304、處理節(jié)點將所述更新的數(shù)據(jù)流流通表發(fā)送至所述實時計算系統(tǒng)的共享存儲節(jié)點。
305、當(dāng)所述處理節(jié)點進行故障恢復(fù)時,所述處理節(jié)點從所述共享存儲節(jié)點獲取所述更新的數(shù)據(jù)流流通表,并按照所述更新的數(shù)據(jù)流流通表進行數(shù)據(jù)流的發(fā)送。
該實施方式中,可以實現(xiàn)處理節(jié)點在出現(xiàn)故障后,進行恢復(fù)時可以直接從共享存儲節(jié)點獲取步驟302更新的數(shù)據(jù)流流通表,從而可以實現(xiàn)處理節(jié)點在出現(xiàn)故障后,可以從共享存儲節(jié)點中讀取并初始化該數(shù)據(jù)流流通表,即完成了動態(tài)調(diào)整拓撲結(jié)構(gòu)的高可用(High Availability,HA)機制。
本實施例中,上述方法還可以包括如下步驟:
所述處理節(jié)點向所述實時計算系統(tǒng)的源節(jié)點反饋所述數(shù)據(jù)流流通表更新的更新結(jié)果,以使所述更新結(jié)構(gòu)表示更新失敗時,由所述源節(jié)點向所述管理節(jié)點發(fā)送所述控制流;
當(dāng)所述更新結(jié)果表示更新失敗時,所述處理節(jié)點接收所述管理節(jié)點發(fā)送的 所述控制流,并按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表。
該實施方式中,上述更新結(jié)果可以是步驟302的更新結(jié)果,當(dāng)步驟302更新成功時,就可以通過上述更新結(jié)果告訴源節(jié)點上述處理節(jié)點更新成功。當(dāng)更新失敗時,通過上述更新結(jié)果告訴源節(jié)點上述處理節(jié)點更新失敗,這樣上述源節(jié)點就會再次向管理節(jié)點發(fā)送上述控制流,由管理節(jié)點再次向該處理節(jié)點發(fā)送上述控制流以使處理節(jié)點再次進行更新。當(dāng)然,在源節(jié)點再次向管理節(jié)點發(fā)送上述控制流時,還可以攜帶有更新失敗的處理節(jié)點的標(biāo)識信息,這樣可以使管理節(jié)點只向更新失敗的處理節(jié)點再次發(fā)送控制流,而不向更新成功的處理節(jié)點再次發(fā)送控制流,以節(jié)約傳輸資源。
該實施方式可以實現(xiàn)能夠正確反饋更新結(jié)果,假如更新失敗,能夠再次啟動更新任務(wù)。
本實施例中,上述方法還可以包括如下步驟:
處理節(jié)點向所述實時計算系統(tǒng)的輸出節(jié)點反饋所述數(shù)據(jù)流流通表更新的更新結(jié)果,由所述輸出節(jié)點對所述實時計算系統(tǒng)所有的處理節(jié)點反饋的所述更新結(jié)果進行匯總,并輸出匯總結(jié)果。
該輸出節(jié)點可以獲取每一個處理節(jié)點反饋的更新結(jié)果,這樣輸出節(jié)點就可以對其進行匯總,從而可以輸出匯總結(jié)果,例如:將該匯總結(jié)果發(fā)送給展現(xiàn)設(shè)備,或者將該匯總結(jié)果進行打印等,從而讓用戶知道實時計算系統(tǒng)的拓撲結(jié)構(gòu)調(diào)整的狀態(tài)。
本實施例中,在圖2所示的實施例的基礎(chǔ)上增加了多種可選的實施方式,且都可以實現(xiàn)動態(tài)調(diào)整實時計算系統(tǒng)的拓撲結(jié)構(gòu)。
請參閱圖4,圖4是本發(fā)明實施例提供的另一種數(shù)據(jù)流處理方法的流程示意圖,如圖4所示,包括以下步驟:
401、實時計算系統(tǒng)的管理節(jié)點接收所述實時計算系統(tǒng)的源節(jié)點發(fā)送的用于調(diào)整所述實時計算系統(tǒng)的拓撲結(jié)構(gòu)的控制流,其中,所述控制流用于描述所述實時計算系統(tǒng)當(dāng)前需要更新的拓撲結(jié)構(gòu)。
本實施例中,上述控制流可以包括當(dāng)前需要更新的拓撲結(jié)構(gòu)的結(jié)構(gòu)信息,以及還可以包括管理節(jié)點或者管理模塊內(nèi)部處理邏輯約定好的控制流分解結(jié)構(gòu) 標(biāo)識,即可以通過控制流分解結(jié)構(gòu)標(biāo)識和結(jié)構(gòu)信息識別出當(dāng)前需要更新的拓撲結(jié)構(gòu)。
402、管理節(jié)點將所述控制流發(fā)送至用于對數(shù)據(jù)流進行業(yè)務(wù)處理的處理節(jié)點,以使所述處理節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑;當(dāng)所述處理節(jié)點接收到數(shù)據(jù)流時,由所述處理節(jié)點對所述數(shù)據(jù)流進行業(yè)務(wù)處理,并按照所述更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送所述業(yè)務(wù)處理后的數(shù)據(jù)流。
本實施例中,管理節(jié)點可以是向?qū)崟r計算系統(tǒng)中的所有處理節(jié)點發(fā)送上述控制流,這樣所有處理節(jié)點都會對其存儲的數(shù)據(jù)流流通表進行更新。例如:上述方法還可以包括如下步驟:
所述管理節(jié)點與所述實時計算系統(tǒng)中的各個所述處理節(jié)點建立并保持連接;
上述管理節(jié)點將所述控制流發(fā)送至用于對數(shù)據(jù)流進行業(yè)務(wù)處理的處理節(jié)點的步驟,可以包括:
所述管理節(jié)點以廣播方式將所述控制流發(fā)送至所述實時計算系統(tǒng)的各個所述處理節(jié)點。
這樣就可以實現(xiàn)通過廣播方式將控制流發(fā)送給所有處理節(jié)點。
當(dāng)然,本實施例中,管理節(jié)點還可以只是向部分處理節(jié)點發(fā)送控制流,例如:當(dāng)前需要更新的拓撲結(jié)構(gòu)中只涉及到部分處理節(jié)點時,那么,管理節(jié)點就可以只向這些被涉及到的處理節(jié)點發(fā)送控制流,以使這些被涉及到處理節(jié)點更新數(shù)據(jù)流流通表,而沒有被涉及到則可以不更新數(shù)據(jù)流流通表。
本實施例中,實時計算系統(tǒng)的管理節(jié)點接收所述實時計算系統(tǒng)的源節(jié)點發(fā)送的用于調(diào)整所述實時計算系統(tǒng)的拓撲結(jié)構(gòu)的控制流,其中,所述控制流用于描述所述實時計算系統(tǒng)當(dāng)前需要更新的拓撲結(jié)構(gòu);所述管理節(jié)點將所述控制流發(fā)送至用于對數(shù)據(jù)流進行業(yè)務(wù)處理的處理節(jié)點,以使所述處理節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑;當(dāng)所述處理節(jié)點接收到數(shù)據(jù)流時,由所述處理節(jié)點對所述數(shù)據(jù)流進行業(yè)務(wù)處理,并按照所述更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送所述業(yè)務(wù)處 理后的數(shù)據(jù)流。這樣可以實現(xiàn)動態(tài)調(diào)整實時計算系統(tǒng)的拓撲結(jié)構(gòu)。
請參閱圖5,圖5是本發(fā)明實施例提供的另一種數(shù)據(jù)流處理方法的流程示意圖,如圖5所示,包括以下步驟:
501、實時計算系統(tǒng)的源節(jié)點獲取用于調(diào)整所述實時計算系統(tǒng)的拓撲結(jié)構(gòu)的控制流,其中,所述控制流用于描述所述實時計算系統(tǒng)當(dāng)前需要更新的拓撲結(jié)構(gòu)。
其中,上述控制流可以是源節(jié)點接收用戶輸入的控制流。這里的控制流可以參考圖1-4所示的實施例中描述的控制流,此處不作重復(fù)說明。
502、源節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑。
源節(jié)點接收到上述控制流后,就可以對其進行分解,并根據(jù)分解獲取的當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表。另外,源節(jié)點會存儲或者緩存更新后的數(shù)據(jù)流流通表。當(dāng)然,還可以存儲或者緩存上述控制流。
503、源節(jié)點將所述控制流發(fā)送給所述實時計算系統(tǒng)的管理節(jié)點,以使所述管理節(jié)點將所述控制流發(fā)送至用于對數(shù)據(jù)流進行業(yè)務(wù)處理的處理節(jié)點,以使所述處理節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑。
通過該步驟就可以實現(xiàn)由管理節(jié)點將控制流發(fā)送至處理節(jié)點,處理節(jié)點再對其存儲的數(shù)據(jù)流流通表進行更新。
504、源節(jié)點接收數(shù)據(jù)流,并將所述數(shù)據(jù)流按照所述源節(jié)點更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送至所述處理節(jié)點,由所述處理節(jié)點對所述數(shù)據(jù)流進行業(yè)務(wù)處理,并按照該處理節(jié)點更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送所述業(yè)務(wù)處理后的數(shù)據(jù)流。
本實施例中,上述數(shù)據(jù)流可以用戶輸入的數(shù)據(jù)或者采集設(shè)備傳輸?shù)臄?shù)據(jù)等實時計算系統(tǒng)當(dāng)前需要計算的數(shù)據(jù)。
由于步驟502更新數(shù)據(jù)流流通表,這樣步驟504按照更新后的數(shù)據(jù)流流通表發(fā)送數(shù)據(jù)流,就可以實現(xiàn)源節(jié)點是按照更新后的拓撲結(jié)構(gòu)發(fā)送數(shù)據(jù)流,以實 現(xiàn)動態(tài)調(diào)整實時計算系統(tǒng)的拓撲結(jié)構(gòu)。
本實施例中,上述方法還可以包括如下步驟:
所述源節(jié)點將所述更新的數(shù)據(jù)流流通表發(fā)送至所述實時計算系統(tǒng)的共享存儲節(jié)點;
當(dāng)所述源節(jié)點進行故障恢復(fù)時,所述源節(jié)點從所述共享存儲節(jié)點獲取所述更新的數(shù)據(jù)流流通表,并按照所述更新的數(shù)據(jù)流流通表進行數(shù)據(jù)流的發(fā)送。
該實施方式中,可以實現(xiàn)源節(jié)點在出現(xiàn)故障后,進行恢復(fù)時可以直接從共享存儲節(jié)點獲取步驟502更新的數(shù)據(jù)流流通表,從而可以實現(xiàn)源節(jié)點在出現(xiàn)故障后,可以從共享存儲節(jié)點中讀取并初始化該數(shù)據(jù)流流通表,即完成了動態(tài)調(diào)整拓撲結(jié)構(gòu)的HA機制。
本實施例中,上述方法還可以包括如下步驟:
所述源節(jié)點接收所述處理節(jié)點反饋的所述處理節(jié)點更新所述數(shù)據(jù)流流通表的更新結(jié)果;
當(dāng)所述更新結(jié)果表示更新失敗時,所述源節(jié)點向所述管理節(jié)點發(fā)送所述控制流,以使所述管理節(jié)點向所述處理節(jié)點發(fā)送所述控制流,由所述處理節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新所述數(shù)據(jù)流流通表。
該實施方式中,可以及時獲取各處理節(jié)點當(dāng)前更新數(shù)據(jù)流流通表的更新結(jié)果。當(dāng)某一個或者多個處理節(jié)點更新失敗時,源節(jié)點可以觸發(fā)管理節(jié)點向更新失敗的處理節(jié)點發(fā)送控制流,以使更新失敗的處理節(jié)點再次更新數(shù)據(jù)流流通表。
本實施例中,實時計算系統(tǒng)的源節(jié)點獲取用于調(diào)整所述實時計算系統(tǒng)的拓撲結(jié)構(gòu)的控制流,其中,所述控制流用于描述所述實時計算系統(tǒng)當(dāng)前需要更新的拓撲結(jié)構(gòu);所述源節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑;所述源節(jié)點將所述控制流發(fā)送給所述實時計算系統(tǒng)的管理節(jié)點,以使所述管理節(jié)點將所述控制流發(fā)送至用于對數(shù)據(jù)流進行業(yè)務(wù)處理的處理節(jié)點,以使所述處理節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑;所述源節(jié)點接收數(shù)據(jù)流,并將所述數(shù)據(jù)流按照所述源節(jié)點更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送至所述處理節(jié)點,由所述處理節(jié)點對所述數(shù)據(jù)流進行業(yè)務(wù)處理,并按 照該處理節(jié)點更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送所述業(yè)務(wù)處理后的數(shù)據(jù)流??梢詣討B(tài)調(diào)整實時計算系統(tǒng)的拓撲結(jié)構(gòu)。
請參閱圖6,圖6是本發(fā)明實施例提供的以Storm應(yīng)用為例的控制流傳輸示意圖,如圖6所示,包括:
601、報警節(jié)點接收控制流消息,解析控制流消息獲取控制流,并根據(jù)該控制流更新數(shù)據(jù)流流通表,以及將控制流消息發(fā)送至警局節(jié)點。
其中,Storm應(yīng)用為實時計算系統(tǒng)。上述報警節(jié)點可以理解為圖1-圖5所示的實施例中的源節(jié)點。該報警節(jié)點為Storm實時計算系統(tǒng)的Spout功能類節(jié)點,其中,Spout功能類是指是Storm應(yīng)用中的數(shù)據(jù)源類,用于接收外部數(shù)據(jù)流并發(fā)送,或者自己構(gòu)建數(shù)據(jù)流發(fā)送。
上述警局節(jié)點理解為圖1-圖5所示的實施例中的管理節(jié)點,警局節(jié)點為Storm應(yīng)用中Bolt功能類節(jié)點,依賴警察模塊主體(圖1所示的實施例中的管理模塊主體)的支撐,內(nèi)部自動集成在Storm應(yīng)用拓撲結(jié)構(gòu)中,跟Storm應(yīng)用中除給自己發(fā)送數(shù)據(jù)的報警節(jié)點外的所有節(jié)點保持連通。其中,Bolt功能類節(jié)點是Storm應(yīng)用中的數(shù)據(jù)處理節(jié)點,各個Bolt實現(xiàn)了不同的業(yè)務(wù)邏輯,多個Bolt組合完成復(fù)雜的業(yè)務(wù)邏輯處理。
602、警局節(jié)點將控制流消息發(fā)送給警務(wù)節(jié)點A、警務(wù)節(jié)點B和警務(wù)節(jié)點C。
其中,警務(wù)節(jié)點可以理解為圖1-圖5所示的實施例中的處理節(jié)點,為Bolt功能類節(jié)點。
603、警務(wù)節(jié)點A分解控制流消息,并根據(jù)分解獲取的控制流更新數(shù)據(jù)流流通表。
604、警務(wù)節(jié)點A將控制流處理消息反饋給警報節(jié)點,以及將處理過程的反饋消息反饋給報警節(jié)點。
當(dāng)步驟603更新失敗時,警務(wù)節(jié)點A可以從報警節(jié)點獲取到控制流消息,以實現(xiàn)再次進行更新,該情況下,向警報節(jié)點反饋的控制流處理消息可以是再次更新的更新結(jié)果。
605、警務(wù)節(jié)點B分解控制流消息,并根據(jù)分解獲取的控制流更新數(shù)據(jù)流流通表。
606、警務(wù)節(jié)點B將控制流處理消息反饋給警報節(jié)點,以及將處理過程的反 饋消息反饋給報警節(jié)點。
607、警務(wù)節(jié)點C分解控制流消息,并根據(jù)分解獲取的控制流更新數(shù)據(jù)流流通表。
608、警務(wù)節(jié)點C將控制流處理消息反饋給警報節(jié)點,以及將處理過程的反饋消息反饋給報警節(jié)點。
609、警報節(jié)點匯總反饋的更新結(jié)構(gòu),并按照預(yù)定的邏輯發(fā)送或者打印控制流處理結(jié)構(gòu)。
請參閱圖7,圖7是本發(fā)明實施例提供的以Storm應(yīng)用為例的數(shù)據(jù)流傳輸示意圖,如圖7所示,包括:
701、報警節(jié)點接收數(shù)據(jù)流,并按照數(shù)據(jù)流流通表將數(shù)據(jù)流發(fā)送給處理節(jié)點A。
702、警務(wù)節(jié)點A對接收到數(shù)據(jù)流進行業(yè)務(wù)處理,并按照數(shù)據(jù)流流通表將業(yè)務(wù)處理后的數(shù)據(jù)流發(fā)送給警務(wù)節(jié)點B。
703、警務(wù)節(jié)點B對接收到數(shù)據(jù)流進行業(yè)務(wù)處理,并按照數(shù)據(jù)流流通表將業(yè)務(wù)處理后的數(shù)據(jù)流發(fā)送給警務(wù)節(jié)點C。
704、警務(wù)節(jié)點C對接收到數(shù)據(jù)流進行業(yè)務(wù)處理,并按照數(shù)據(jù)流流通表將業(yè)務(wù)處理后的數(shù)據(jù)流發(fā)送給下一個節(jié)點或者輸出結(jié)果。
請參閱圖8,圖8是本發(fā)明實施例提供的一種數(shù)據(jù)流處理裝置的結(jié)構(gòu)示意圖,如圖8所示,包括:接收單元81、第一更新單元82和第一發(fā)送單元83,其中:
接收單元81,用于接收實時計算系統(tǒng)的管理節(jié)點發(fā)送的用于調(diào)整所述實時計算系統(tǒng)的拓撲結(jié)構(gòu)的控制流,其中,所述控制流用于描述所述實時計算系統(tǒng)當(dāng)前需要更新的拓撲結(jié)構(gòu)。
需要說明的是,本實施例中的數(shù)據(jù)流處理裝置可以應(yīng)用于實時計算系統(tǒng)的處理節(jié)點,例如:如圖1所示的處理節(jié)點。
本實施例中,上述控制流描述的當(dāng)前需要更新的拓撲結(jié)構(gòu)可以是實時計算系統(tǒng)當(dāng)前需要更新的完整拓撲結(jié)構(gòu),例如:上述控制流可以描述如圖1所示的源節(jié)點、處理節(jié)點、管理節(jié)點和輸出節(jié)點之間的拓撲結(jié)構(gòu)?;蛘?,上述控制流描述的當(dāng)前需要更新的拓撲結(jié)構(gòu)可以是當(dāng)前需要調(diào)整的拓撲結(jié)構(gòu),例如:原先 的拓撲結(jié)構(gòu)中處理節(jié)點A連接處理節(jié)點B,處理節(jié)點B再連接處理節(jié)點C,即數(shù)據(jù)流的流通順序是處理節(jié)點A到處理節(jié)點B再到處理節(jié)點C,而當(dāng)前需要調(diào)整為處理節(jié)點A連接處理節(jié)點C,處理節(jié)點C再連接處理節(jié)點B。那么,上述控制流可以僅是描述處理節(jié)點A連接處理節(jié)點C,處理節(jié)點C再連接處理節(jié)點B的拓撲結(jié)構(gòu),即更新后,數(shù)據(jù)流的流通順序是處理節(jié)點A到處理節(jié)點B再到處理節(jié)點C。
另外,本實施例中,上述控制流可以理解為控制流信息,即上述控制流可以理解為一條信息。
第一更新單元82,用于按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑。
本實施例中,處理節(jié)點存儲有與原拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通表,當(dāng)接收到上述控制流時,即當(dāng)前拓撲結(jié)構(gòu)需要更新時,就可以按照當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表。而更新后的數(shù)據(jù)流流通表包括與當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑,這樣就可以實現(xiàn)該處理節(jié)點在發(fā)送數(shù)據(jù)流時,是按照更新后的拓撲結(jié)構(gòu)發(fā)送數(shù)據(jù)流。
另外,上述與當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑可以理解為在當(dāng)前需要更新的拓撲結(jié)構(gòu)中數(shù)據(jù)流的流通路徑或者流通結(jié)構(gòu)。例如:當(dāng)前需要更新的拓撲結(jié)構(gòu)是處理節(jié)點A連接處理節(jié)點C,那么,上述更新的數(shù)據(jù)流流通表就會包括數(shù)據(jù)流從處理節(jié)點A傳輸給處理節(jié)點C,即當(dāng)上述裝置應(yīng)用于處理節(jié)點為處理節(jié)點A,那么,上述更新的數(shù)據(jù)流流通表就可以包括將數(shù)據(jù)流傳輸至處理節(jié)點C的數(shù)據(jù)流流通路徑。
第一發(fā)送單元83,用于當(dāng)所述處理節(jié)點接收到數(shù)據(jù)流時,對所述數(shù)據(jù)流進行業(yè)務(wù)處理,并按照所述更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送所述業(yè)務(wù)處理后的數(shù)據(jù)流。
通過上述裝置可以實現(xiàn)處理節(jié)點在發(fā)送數(shù)據(jù)流時是按照更新的拓撲結(jié)構(gòu)進行發(fā)送的,從而可以實現(xiàn)動態(tài)地調(diào)整實時計算系統(tǒng)的拓撲結(jié)構(gòu)。另外,在實時計算系統(tǒng)在進行巨量業(yè)務(wù)運行時通過上述步驟動態(tài)調(diào)整實時計算系統(tǒng)的拓撲結(jié)構(gòu)不會對正在進行處理的數(shù)據(jù)流造成的干擾。另外,當(dāng)實時計算系統(tǒng)為分布式系統(tǒng),各個節(jié)點運行在不同的機器時,通過上述步驟動態(tài)調(diào)整實時計算系統(tǒng)的 拓撲結(jié)構(gòu)可以避免某個機器的修改滯后導(dǎo)致的問題。
本實施例中,上述處理節(jié)點可以是實時計算系統(tǒng)中的任意處理節(jié)點。
本實施例中,實時計算系統(tǒng)的處理節(jié)點接收所述實時計算系統(tǒng)的管理節(jié)點發(fā)送的用于調(diào)整所述實時計算系統(tǒng)的拓撲結(jié)構(gòu)的控制流,其中,所述控制流用于描述所述實時計算系統(tǒng)當(dāng)前需要更新的拓撲結(jié)構(gòu);所述處理節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑;當(dāng)所述處理節(jié)點接收到數(shù)據(jù)流時,所述處理節(jié)點對所述數(shù)據(jù)流進行業(yè)務(wù)處理,并按照所述更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送所述業(yè)務(wù)處理后的數(shù)據(jù)流。這樣可以通過實時更新數(shù)據(jù)流流通表的方式實現(xiàn)更新實時計算系統(tǒng)的處理邏輯,即可以動態(tài)地調(diào)整實時計算系統(tǒng)的拓撲結(jié)構(gòu)。
請參閱圖9,圖9是本發(fā)明實施例提供的另一種數(shù)據(jù)流處理裝置的結(jié)構(gòu)示意圖,如圖9所示,包括:接收單元91、第一更新單元92和第一發(fā)送單元93,其中:
接收單元91,用于接收實時計算系統(tǒng)的管理節(jié)點發(fā)送的用于調(diào)整所述實時計算系統(tǒng)的拓撲結(jié)構(gòu)的控制流,其中,所述控制流用于描述所述實時計算系統(tǒng)當(dāng)前需要更新的拓撲結(jié)構(gòu)。
需要說明的是,本實施例中的數(shù)據(jù)流處理裝置可以應(yīng)用于實時計算系統(tǒng)的處理節(jié)點,例如:如圖1所示的處理節(jié)點。
第一更新單元92,用于按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑。
本實施例中,處理節(jié)點在更新數(shù)據(jù)流流通表時,可以暫停數(shù)據(jù)流發(fā)送,但可以對數(shù)據(jù)流進行業(yè)務(wù)處理?;蛘咛幚砉?jié)點在更新數(shù)據(jù)流流通表時,可以暫停對數(shù)據(jù)流進行業(yè)務(wù)處理和數(shù)據(jù)流發(fā)送。在更新完數(shù)據(jù)流流通表時,恢復(fù)暫停的數(shù)據(jù)流發(fā)送和/或?qū)?shù)據(jù)流的業(yè)務(wù)處理。這樣可以實現(xiàn)在動態(tài)調(diào)整實時計算系統(tǒng)的拓撲結(jié)構(gòu)時,不然會出現(xiàn)數(shù)據(jù)流的錯誤處理和系統(tǒng)的阻塞影響性能。
第一發(fā)送單元93,用于當(dāng)所述處理節(jié)點接收到數(shù)據(jù)流時,對所述數(shù)據(jù)流進行業(yè)務(wù)處理,并按照所述更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送所述 業(yè)務(wù)處理后的數(shù)據(jù)流。
本實施例中,所述裝置還可以包括:
第二發(fā)送單元94,用于將所述更新的數(shù)據(jù)流流通表發(fā)送至所述實時計算系統(tǒng)的共享存儲節(jié)點;
恢復(fù)單元95,用于當(dāng)所述處理節(jié)點進行故障恢復(fù)時,從所述共享存儲節(jié)點獲取所述更新的數(shù)據(jù)流流通表,并按照所述更新的數(shù)據(jù)流流通表進行數(shù)據(jù)流的發(fā)送。
該實施方式中,可以實現(xiàn)處理節(jié)點在出現(xiàn)故障后,進行恢復(fù)時可以直接從共享存儲節(jié)點獲取第一更新單元92更新的數(shù)據(jù)流流通表,從而可以實現(xiàn)處理節(jié)點在出現(xiàn)故障后,可以從共享存儲節(jié)點中讀取并初始化該數(shù)據(jù)流流通表,即完成了動態(tài)調(diào)整拓撲結(jié)構(gòu)的HA機制。
如圖10所示,上述裝置還可以包括:
第一反饋單元96,用于向所述實時計算系統(tǒng)的源節(jié)點反饋所述數(shù)據(jù)流流通表更新的更新結(jié)果,以使所述更新結(jié)構(gòu)表示更新失敗時,由所述源節(jié)點向所述管理節(jié)點發(fā)送所述控制流;
第二更新單元97,用于當(dāng)所述更新結(jié)果表示所述第一更新單元更新失敗時,接收所述管理節(jié)點發(fā)送的所述控制流,并按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表。
該實施方式中,上述更新結(jié)果可以是第一更新單元92的更新結(jié)果,當(dāng)?shù)谝桓聠卧?2更新成功時,就可以通過上述更新結(jié)果告訴源節(jié)點上述處理節(jié)點更新成功。當(dāng)更新失敗時,通過上述更新結(jié)果告訴源節(jié)點上述處理節(jié)點更新失敗,這樣上述源節(jié)點就會再次向管理節(jié)點發(fā)送上述控制流,由管理節(jié)點再次向該處理節(jié)點發(fā)送上述控制流以使處理節(jié)點再次進行更新。當(dāng)然,在源節(jié)點再次向管理節(jié)點發(fā)送上述控制流時,還可以攜帶有更新失敗的處理節(jié)點的標(biāo)識信息,這樣可以使管理節(jié)點只向更新失敗的處理節(jié)點再次發(fā)送控制流,而不向更新成功的處理節(jié)點再次發(fā)送控制流,以節(jié)約傳輸資源。
該實施方式可以實現(xiàn)能夠正確反饋更新結(jié)果,假如更新失敗,能夠再次啟動更新任務(wù)。
如圖11所示,上述裝置還可以包括:
第二反饋單元98,用于向所述實時計算系統(tǒng)的輸出節(jié)點反饋所述數(shù)據(jù)流流 通表更新的更新結(jié)果,由所述輸出節(jié)點對所述實時計算系統(tǒng)所有的處理節(jié)點反饋的所述更新結(jié)果進行匯總,并輸出匯總結(jié)果。
該輸出節(jié)點可以獲取每一個處理節(jié)點反饋的更新結(jié)果,這樣輸出節(jié)點就可以對其進行匯總,從而可以輸出匯總結(jié)果,例如:將該匯總結(jié)果發(fā)送給展現(xiàn)設(shè)備,或者將該匯總結(jié)果進行打印等,從而讓用戶知道實時計算系統(tǒng)的拓撲結(jié)構(gòu)調(diào)整的狀態(tài)。
本實施例中,在圖8所示的實施例的基礎(chǔ)上增加了多種可選的實施方式,且都可以實現(xiàn)動態(tài)調(diào)整實時計算系統(tǒng)的拓撲結(jié)構(gòu)。
請參閱圖12,圖12是本發(fā)明實施例提供的另一種數(shù)據(jù)流處理裝置的結(jié)構(gòu)示意圖,如圖12所示,包括:接收單元121和發(fā)送單元122,其中:
接收單元121,用于接收實時計算系統(tǒng)的源節(jié)點發(fā)送的用于調(diào)整所述實時計算系統(tǒng)的拓撲結(jié)構(gòu)的控制流,其中,所述控制流用于描述所述實時計算系統(tǒng)當(dāng)前需要更新的拓撲結(jié)構(gòu)。
需要說明的是,本實施例提供的數(shù)據(jù)流處理裝置可以應(yīng)用于實時計算系統(tǒng)的管理節(jié)點,例如:圖1所示的管理節(jié)點。
本實施例中,上述控制流可以包括當(dāng)前需要更新的拓撲結(jié)構(gòu)的結(jié)構(gòu)信息,以及還可以包括管理節(jié)點或者管理模塊內(nèi)部處理邏輯約定好的控制流分解結(jié)構(gòu)標(biāo)識,即可以通過控制流分解結(jié)構(gòu)標(biāo)識和結(jié)構(gòu)信息識別出當(dāng)前需要更新的拓撲結(jié)構(gòu)。
發(fā)送單元122,用于將所述控制流發(fā)送至用于對數(shù)據(jù)流進行業(yè)務(wù)處理的處理節(jié)點,以使所述處理節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑;當(dāng)所述處理節(jié)點接收到數(shù)據(jù)流時,由所述處理節(jié)點對所述數(shù)據(jù)流進行業(yè)務(wù)處理,并按照所述更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送所述業(yè)務(wù)處理后的數(shù)據(jù)流。
本實施例中,管理節(jié)點可以是向?qū)崟r計算系統(tǒng)中的所有處理節(jié)點發(fā)送上述控制流,這樣所有處理節(jié)點都會對其存儲的數(shù)據(jù)流流通表進行更新。例如:如圖13所示,上述裝置還可以包括:
保持單元123,用于與所述實時計算系統(tǒng)中的各個所述處理節(jié)點建立并保持 連接;
所述發(fā)送單元122用于以廣播方式將所述控制流發(fā)送至所述實時計算系統(tǒng)的各個所述處理節(jié)點。
這樣就可以實現(xiàn)通過廣播方式將控制流發(fā)送給所有處理節(jié)點。
當(dāng)然,本實施例中,管理節(jié)點還可以只是向部分處理節(jié)點發(fā)送控制流,例如:當(dāng)前需要更新的拓撲結(jié)構(gòu)中只涉及到部分處理節(jié)點時,那么,管理節(jié)點就可以只向這些被涉及到的處理節(jié)點發(fā)送控制流,以使這些被涉及到處理節(jié)點更新數(shù)據(jù)流流通表,而沒有被涉及到則可以不更新數(shù)據(jù)流流通表。
本實施例中,實時計算系統(tǒng)的管理節(jié)點接收所述實時計算系統(tǒng)的源節(jié)點發(fā)送的用于調(diào)整所述實時計算系統(tǒng)的拓撲結(jié)構(gòu)的控制流,其中,所述控制流用于描述所述實時計算系統(tǒng)當(dāng)前需要更新的拓撲結(jié)構(gòu);所述管理節(jié)點將所述控制流發(fā)送至用于對數(shù)據(jù)流進行業(yè)務(wù)處理的處理節(jié)點,以使所述處理節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑;當(dāng)所述處理節(jié)點接收到數(shù)據(jù)流時,由所述處理節(jié)點對所述數(shù)據(jù)流進行業(yè)務(wù)處理,并按照所述更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送所述業(yè)務(wù)處理后的數(shù)據(jù)流。這樣可以實現(xiàn)動態(tài)調(diào)整實時計算系統(tǒng)的拓撲結(jié)構(gòu)。
請參閱圖14,圖14是本發(fā)明實施例提供的另一種數(shù)據(jù)流處理裝置的結(jié)構(gòu)示意圖,如圖14所示,包括:獲取單元141、更新單元142、第一發(fā)送單元143和第二發(fā)送單元144,其中:
獲取單元141,用于獲取用于調(diào)整所述實時計算系統(tǒng)的拓撲結(jié)構(gòu)的控制流,其中,所述控制流用于描述所述實時計算系統(tǒng)當(dāng)前需要更新的拓撲結(jié)構(gòu);
需要說明的是,本實施例中提供的數(shù)據(jù)流處理裝置可以應(yīng)用于實時計算系統(tǒng)的源節(jié)點,例如:如圖1所示的源節(jié)點。
其中,上述控制流可以是源節(jié)點接收用戶輸入的控制流。這里的控制流可以參考圖1-4所示的實施例中描述的控制流,此處不作重復(fù)說明。
更新單元142,用于按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑。
源節(jié)點接收到上述控制流后,就可以對其進行分解,并根據(jù)分解獲取的當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表。另外,源節(jié)點會存儲或者緩存更新后的數(shù)據(jù)流流通表。當(dāng)然,還可以存儲或者緩存上述控制流。
第一發(fā)送單元143,用于將所述控制流發(fā)送給所述實時計算系統(tǒng)的管理節(jié)點,以使所述管理節(jié)點將所述控制流發(fā)送至用于對數(shù)據(jù)流進行業(yè)務(wù)處理的處理節(jié)點,以使所述處理節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑;
通過該單元就可以實現(xiàn)由管理節(jié)點將控制流發(fā)送至處理節(jié)點,處理節(jié)點再對其存儲的數(shù)據(jù)流流通表進行更新。
第二發(fā)送單元144,用于接收數(shù)據(jù)流,并將所述數(shù)據(jù)流按照所述源節(jié)點更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送至所述處理節(jié)點,由所述處理節(jié)點對所述數(shù)據(jù)流進行業(yè)務(wù)處理,并按照該處理節(jié)點更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送所述業(yè)務(wù)處理后的數(shù)據(jù)流。
本實施例中,上述數(shù)據(jù)流可以用戶輸入的數(shù)據(jù)或者采集設(shè)備傳輸?shù)臄?shù)據(jù)等實時計算系統(tǒng)當(dāng)前需要計算的數(shù)據(jù)。
由于更新單元142更新數(shù)據(jù)流流通表,這樣第二發(fā)送單元144按照更新后的數(shù)據(jù)流流通表發(fā)送數(shù)據(jù)流,就可以實現(xiàn)源節(jié)點是按照更新后的拓撲結(jié)構(gòu)發(fā)送數(shù)據(jù)流,以實現(xiàn)動態(tài)調(diào)整實時計算系統(tǒng)的拓撲結(jié)構(gòu)。
本實施例中,如圖15所示,上述裝置還可以包括:
第三發(fā)送單元145,用于將所述更新的數(shù)據(jù)流流通表發(fā)送至所述實時計算系統(tǒng)的共享存儲節(jié)點;
恢復(fù)單元146,用于當(dāng)所述源節(jié)點進行故障恢復(fù)時,從所述共享存儲節(jié)點獲取所述更新的數(shù)據(jù)流流通表,并按照所述更新的數(shù)據(jù)流流通表進行數(shù)據(jù)流的發(fā)送。
該實施方式中,可以實現(xiàn)源節(jié)點在出現(xiàn)故障后,進行恢復(fù)時可以直接從共享存儲節(jié)點獲取更新單元142更新的數(shù)據(jù)流流通表,從而可以實現(xiàn)源節(jié)點在出現(xiàn)故障后,可以從共享存儲節(jié)點中讀取并初始化該數(shù)據(jù)流流通表,即完成了動態(tài)調(diào)整拓撲結(jié)構(gòu)的HA機制。
本實施例中,如圖16所示,所述裝置還可以包括:
接收單元147,用于接收所述處理節(jié)點反饋的所述處理節(jié)點更新所述數(shù)據(jù)流流通表的更新結(jié)果;
第四發(fā)送單元148,用于當(dāng)所述更新結(jié)果表示更新失敗時,向所述管理節(jié)點發(fā)送所述控制流,以使所述管理節(jié)點向所述處理節(jié)點發(fā)送所述控制流,由所述處理節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新所述數(shù)據(jù)流流通表。
該實施方式中,可以及時獲取各處理節(jié)點當(dāng)前更新數(shù)據(jù)流流通表的更新結(jié)果。當(dāng)某一個或者多個處理節(jié)點更新失敗時,源節(jié)點可以觸發(fā)管理節(jié)點向更新失敗的處理節(jié)點發(fā)送控制流,以使更新失敗的處理節(jié)點再次更新數(shù)據(jù)流流通表。
本實施例中,實時計算系統(tǒng)的源節(jié)點獲取用于調(diào)整所述實時計算系統(tǒng)的拓撲結(jié)構(gòu)的控制流,其中,所述控制流用于描述所述實時計算系統(tǒng)當(dāng)前需要更新的拓撲結(jié)構(gòu);所述源節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑;所述源節(jié)點將所述控制流發(fā)送給所述實時計算系統(tǒng)的管理節(jié)點,以使所述管理節(jié)點將所述控制流發(fā)送至用于對數(shù)據(jù)流進行業(yè)務(wù)處理的處理節(jié)點,以使所述處理節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑;所述源節(jié)點接收數(shù)據(jù)流,并將所述數(shù)據(jù)流按照所述源節(jié)點更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送至所述處理節(jié)點,由所述處理節(jié)點對所述數(shù)據(jù)流進行業(yè)務(wù)處理,并按照該處理節(jié)點更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送所述業(yè)務(wù)處理后的數(shù)據(jù)流??梢詣討B(tài)調(diào)整實時計算系統(tǒng)的拓撲結(jié)構(gòu)。
請參閱圖17,圖17是本發(fā)明實施例提供的另一種數(shù)據(jù)流處理裝置的結(jié)構(gòu)示意圖,該裝置應(yīng)用于實時計算系統(tǒng)的處理節(jié)點,如圖17所示,包括:處理器171、網(wǎng)絡(luò)接口172、存儲器173和通信總線174,其中,所述通信總線174用于實現(xiàn)所述處理器171、網(wǎng)絡(luò)接口172和存儲器173之間連接通信,所述處理器171執(zhí)行所述存儲器173中存儲的程序用于實現(xiàn)以下方法:
接收所述實時計算系統(tǒng)的管理節(jié)點發(fā)送的用于調(diào)整所述實時計算系統(tǒng)的拓撲結(jié)構(gòu)的控制流,其中,所述控制流用于描述所述實時計算系統(tǒng)當(dāng)前需要更新 的拓撲結(jié)構(gòu);
按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑;
當(dāng)處理節(jié)點接收到數(shù)據(jù)流時,對所述數(shù)據(jù)流進行業(yè)務(wù)處理,并按照所述更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送所述業(yè)務(wù)處理后的數(shù)據(jù)流。
本實施例中,處理器171還可以執(zhí)行如下程序:
將所述更新的數(shù)據(jù)流流通表發(fā)送至所述實時計算系統(tǒng)的共享存儲節(jié)點;
當(dāng)所述處理節(jié)點進行故障恢復(fù)時,從所述共享存儲節(jié)點獲取所述更新的數(shù)據(jù)流流通表,并按照所述更新的數(shù)據(jù)流流通表進行數(shù)據(jù)流的發(fā)送。
本實施例中,處理器171還可以執(zhí)行如下程序:
向所述實時計算系統(tǒng)的源節(jié)點反饋所述數(shù)據(jù)流流通表更新的更新結(jié)果,以使所述更新結(jié)構(gòu)表示更新失敗時,由所述源節(jié)點向所述管理節(jié)點發(fā)送所述控制流;
當(dāng)所述更新結(jié)果表示更新失敗時,所述處理節(jié)點接收所述管理節(jié)點發(fā)送的所述控制流,并按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表。
本實施例中,處理器171還可以執(zhí)行如下程序:
向所述實時計算系統(tǒng)的輸出節(jié)點反饋所述數(shù)據(jù)流流通表更新的更新結(jié)果,由所述輸出節(jié)點對所述實時計算系統(tǒng)所有的處理節(jié)點反饋的所述更新結(jié)果進行匯總,并輸出匯總結(jié)果。
本實施例中,實時計算系統(tǒng)的處理節(jié)點接收所述實時計算系統(tǒng)的管理節(jié)點發(fā)送的用于調(diào)整所述實時計算系統(tǒng)的拓撲結(jié)構(gòu)的控制流,其中,所述控制流用于描述所述實時計算系統(tǒng)當(dāng)前需要更新的拓撲結(jié)構(gòu);所述處理節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑;當(dāng)所述處理節(jié)點接收到數(shù)據(jù)流時,所述處理節(jié)點對所述數(shù)據(jù)流進行業(yè)務(wù)處理,并按照所述更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送所述業(yè)務(wù)處理后的數(shù)據(jù)流。這樣可以通過實時更新數(shù)據(jù)流流通表的方式實現(xiàn)更新實時計算系統(tǒng)的處理邏輯,即可以動態(tài)地調(diào)整實時計算系統(tǒng)的拓撲結(jié)構(gòu)。
請參閱圖18,圖18是本發(fā)明實施例提供的另一種數(shù)據(jù)流處理裝置的結(jié)構(gòu)示意圖,該裝置應(yīng)用于實時計算系統(tǒng)的管理節(jié)點,如圖18所示,包括:處理器181、網(wǎng)絡(luò)接口182、存儲器183和通信總線184,其中,所述通信總線184用于實現(xiàn)所述處理器181、網(wǎng)絡(luò)接口182和存儲器183之間連接通信,所述處理器181執(zhí)行所述存儲器183中存儲的程序用于實現(xiàn)以下方法:
接收所述實時計算系統(tǒng)的源節(jié)點發(fā)送的用于調(diào)整所述實時計算系統(tǒng)的拓撲結(jié)構(gòu)的控制流,其中,所述控制流用于描述所述實時計算系統(tǒng)當(dāng)前需要更新的拓撲結(jié)構(gòu);
將所述控制流發(fā)送至用于對數(shù)據(jù)流進行業(yè)務(wù)處理的處理節(jié)點,以使所述處理節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑;當(dāng)所述處理節(jié)點接收到數(shù)據(jù)流時,由所述處理節(jié)點對所述數(shù)據(jù)流進行業(yè)務(wù)處理,并按照所述更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送所述業(yè)務(wù)處理后的數(shù)據(jù)流。
本實施例中,處理器181還可以執(zhí)行如下程序:
與所述實時計算系統(tǒng)中的各個所述處理節(jié)點建立并保持連接;
處理器181執(zhí)行的將所述控制流發(fā)送至用于對數(shù)據(jù)流進行業(yè)務(wù)處理的處理節(jié)點的程序,可以包括:
所述管理節(jié)點以廣播方式將所述控制流發(fā)送至所述實時計算系統(tǒng)的各個所述處理節(jié)點。
本實施例中,實時計算系統(tǒng)的管理節(jié)點接收所述實時計算系統(tǒng)的源節(jié)點發(fā)送的用于調(diào)整所述實時計算系統(tǒng)的拓撲結(jié)構(gòu)的控制流,其中,所述控制流用于描述所述實時計算系統(tǒng)當(dāng)前需要更新的拓撲結(jié)構(gòu);所述管理節(jié)點將所述控制流發(fā)送至用于對數(shù)據(jù)流進行業(yè)務(wù)處理的處理節(jié)點,以使所述處理節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑;當(dāng)所述處理節(jié)點接收到數(shù)據(jù)流時,由所述處理節(jié)點對所述數(shù)據(jù)流進行業(yè)務(wù)處理,并按照所述更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送所述業(yè)務(wù)處理后的數(shù)據(jù)流。這樣可以實現(xiàn)動態(tài)調(diào)整實時計算系統(tǒng)的拓撲結(jié)構(gòu)。
請參閱圖19,圖19是本發(fā)明實施例提供的另一種數(shù)據(jù)流處理裝置的結(jié)構(gòu)示意圖,該裝置應(yīng)用于實時計算系統(tǒng)的源節(jié)點,如圖19所示,包括:處理器191、網(wǎng)絡(luò)接口192、存儲器193和通信總線194,其中,所述通信總線194用于實現(xiàn)所述處理器191、網(wǎng)絡(luò)接口192和存儲器193之間連接通信,所述處理器191執(zhí)行所述存儲器193中存儲的程序用于實現(xiàn)以下方法:
獲取用于調(diào)整所述實時計算系統(tǒng)的拓撲結(jié)構(gòu)的控制流,其中,所述控制流用于描述所述實時計算系統(tǒng)當(dāng)前需要更新的拓撲結(jié)構(gòu);
按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑;
將所述控制流發(fā)送給所述實時計算系統(tǒng)的管理節(jié)點,以使所述管理節(jié)點將所述控制流發(fā)送至用于對數(shù)據(jù)流進行業(yè)務(wù)處理的處理節(jié)點,以使所述處理節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑;
接收數(shù)據(jù)流,并將所述數(shù)據(jù)流按照所述源節(jié)點更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送至所述處理節(jié)點,由所述處理節(jié)點對所述數(shù)據(jù)流進行業(yè)務(wù)處理,并按照該處理節(jié)點更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送所述業(yè)務(wù)處理后的數(shù)據(jù)流。
本實施例中,處理器191執(zhí)行的程序還可以包括:
將所述更新的數(shù)據(jù)流流通表發(fā)送至所述實時計算系統(tǒng)的共享存儲節(jié)點;
當(dāng)所述源節(jié)點進行故障恢復(fù)時,從所述共享存儲節(jié)點獲取所述更新的數(shù)據(jù)流流通表,并按照所述更新的數(shù)據(jù)流流通表進行數(shù)據(jù)流的發(fā)送。
本實施例中,處理器191執(zhí)行的程序還可以包括:
接收所述處理節(jié)點反饋的所述處理節(jié)點更新所述數(shù)據(jù)流流通表的更新結(jié)果;
當(dāng)所述更新結(jié)果表示更新失敗時,向所述管理節(jié)點發(fā)送所述控制流,以使所述管理節(jié)點向所述處理節(jié)點發(fā)送所述控制流,由所述處理節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新所述數(shù)據(jù)流流通表。
本實施例中,實時計算系統(tǒng)的源節(jié)點獲取用于調(diào)整所述實時計算系統(tǒng)的拓撲結(jié)構(gòu)的控制流,其中,所述控制流用于描述所述實時計算系統(tǒng)當(dāng)前需要更新的拓撲結(jié)構(gòu);所述源節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑;所述源節(jié)點將所述控制流發(fā)送給所述實時計算系統(tǒng)的管理節(jié)點,以使所述管理節(jié)點將所述控制流發(fā)送至用于對數(shù)據(jù)流進行業(yè)務(wù)處理的處理節(jié)點,以使所述處理節(jié)點按照所述控制流所描述的所述當(dāng)前需要更新的拓撲結(jié)構(gòu)更新數(shù)據(jù)流流通表,其中,所述更新的數(shù)據(jù)流流通表包括與所述當(dāng)前需要更新的拓撲結(jié)構(gòu)匹配的數(shù)據(jù)流流通路徑;所述源節(jié)點接收數(shù)據(jù)流,并將所述數(shù)據(jù)流按照所述源節(jié)點更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送至所述處理節(jié)點,由所述處理節(jié)點對所述數(shù)據(jù)流進行業(yè)務(wù)處理,并按照該處理節(jié)點更新的數(shù)據(jù)流流通表包括的數(shù)據(jù)流流通路徑發(fā)送所述業(yè)務(wù)處理后的數(shù)據(jù)流??梢詣討B(tài)調(diào)整實時計算系統(tǒng)的拓撲結(jié)構(gòu)。
本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory,ROM)或隨機存取存儲器(Random Access Memory,簡稱RAM)等。
以上所揭露的僅為本發(fā)明較佳實施例而已,當(dāng)然不能以此來限定本發(fā)明之權(quán)利范圍,因此依本發(fā)明權(quán)利要求所作的等同變化,仍屬本發(fā)明所涵蓋的范圍。