欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種流式應(yīng)用升級(jí)方法、主控節(jié)點(diǎn)及流計(jì)算系統(tǒng)的制作方法

文檔序號(hào):6631229閱讀:370來(lái)源:國(guó)知局
一種流式應(yīng)用升級(jí)方法、主控節(jié)點(diǎn)及流計(jì)算系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供一種流式應(yīng)用升級(jí)方法及流計(jì)算系統(tǒng),該方法包括:獲取流式應(yīng)用更新后的邏輯模型,通過(guò)對(duì)比更新后的邏輯模型以及初始邏輯模型,以確定待調(diào)整的流;根據(jù)待調(diào)整的流,生成升級(jí)指令;將生成的升級(jí)指令下發(fā)給工作節(jié)點(diǎn),以使工作節(jié)點(diǎn)根據(jù)升級(jí)命令的指示,調(diào)整其上分布的PE之間的流;本發(fā)明提供的方法能夠?qū)崿F(xiàn)流式應(yīng)用的在線升級(jí),不中斷業(yè)務(wù)。
【專利說(shuō)明】一種流式應(yīng)用升級(jí)方法、主控節(jié)點(diǎn)及流計(jì)算系統(tǒng)

【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,尤其涉及一種流式應(yīng)用升級(jí)方法、一種主控節(jié)點(diǎn)以及一種流計(jì)算系統(tǒng)。

【背景技術(shù)】
[0002]隨著大數(shù)據(jù)時(shí)代的到來(lái),對(duì)海量數(shù)據(jù)進(jìn)行實(shí)時(shí)處理、分析、決策的市場(chǎng)需求不斷擴(kuò)大,如:電信領(lǐng)域的精準(zhǔn)廣告推送,金融領(lǐng)域的交易動(dòng)態(tài)實(shí)時(shí)分析,工業(yè)領(lǐng)域的實(shí)時(shí)監(jiān)控等等。在此背景下,數(shù)據(jù)密集型應(yīng)用,比如金融服務(wù)、網(wǎng)絡(luò)監(jiān)控、電信數(shù)據(jù)管理等,已經(jīng)得到越來(lái)越廣泛的應(yīng)用,同時(shí)適應(yīng)于數(shù)據(jù)密集型應(yīng)用的流計(jì)算系統(tǒng)也應(yīng)運(yùn)而生。數(shù)據(jù)密集型應(yīng)用產(chǎn)生的數(shù)據(jù)具有數(shù)據(jù)量大、快速、時(shí)變的特點(diǎn),當(dāng)數(shù)據(jù)密集型應(yīng)用部署到流計(jì)算系統(tǒng)之后,流計(jì)算系統(tǒng)可以在接收到應(yīng)用的數(shù)據(jù)時(shí)就立即對(duì)其進(jìn)行處理,以保證實(shí)時(shí)性。如圖1所示,流計(jì)算系統(tǒng)通常包括一個(gè)主控節(jié)點(diǎn)(1381:610和多個(gè)工作節(jié)點(diǎn)(恥!'!^!'),主控節(jié)點(diǎn)主要負(fù)責(zé)調(diào)度和管理各個(gè)工作節(jié)點(diǎn),而工作節(jié)點(diǎn)是承載實(shí)際的數(shù)據(jù)處理操作的邏輯實(shí)體,工作節(jié)點(diǎn)具體通過(guò)調(diào)用若干個(gè)執(zhí)行單元(四,?1~00688 £161116111:)來(lái)對(duì)數(shù)據(jù)進(jìn)行處理,是業(yè)務(wù)邏輯的物理執(zhí)行單元。
[0003]通常,流計(jì)算系統(tǒng)中部署的應(yīng)用程序或業(yè)務(wù)被稱為流式應(yīng)用,現(xiàn)有技術(shù)中,當(dāng)部署一個(gè)流式應(yīng)用到流計(jì)算系統(tǒng)時(shí),需要預(yù)先定義該流式應(yīng)用的邏輯模型,流式應(yīng)用的邏輯模型通常以無(wú)回路有向圖^070110來(lái)表示,如圖2所示,其中是承載實(shí)際的數(shù)據(jù)處理操作的物理載體,也是可被流計(jì)算系統(tǒng)調(diào)度執(zhí)行的最小單元;'冊(cè)III代表各間的傳輸?shù)臄?shù)據(jù)流,箭頭表示了數(shù)據(jù)流的走向可以動(dòng)態(tài)加載并執(zhí)行業(yè)務(wù)邏輯,對(duì)流式應(yīng)用的數(shù)據(jù)進(jìn)行實(shí)時(shí)處理。如圖3所示,流計(jì)算系統(tǒng)根據(jù)邏輯模型將各個(gè)部署在不同的工作節(jié)點(diǎn)上執(zhí)行,各個(gè)依照自己的邏輯進(jìn)行運(yùn)算,并把運(yùn)算結(jié)果轉(zhuǎn)發(fā)給下游?2。而當(dāng)用戶需求或業(yè)務(wù)場(chǎng)景發(fā)生變化時(shí),流式應(yīng)用就需要更新或升級(jí),初始的邏輯模型已經(jīng)不再適用。因此首先需要離線完成流式應(yīng)用的更新,并定義新的邏輯模型,然后停止舊的應(yīng)用,再根據(jù)新的邏輯模型將更新后的流式應(yīng)用重新部署到流計(jì)算系統(tǒng)中,最后再啟動(dòng)更新后的流式應(yīng)用。可以看出,現(xiàn)有技術(shù)中進(jìn)行流式應(yīng)用的更新,需要中斷原先業(yè)務(wù),無(wú)法進(jìn)行流式應(yīng)用的在線升級(jí),導(dǎo)致業(yè)務(wù)損失。


【發(fā)明內(nèi)容】

[0004]本發(fā)明實(shí)施例提供一種流式應(yīng)用升級(jí)方法、主控節(jié)點(diǎn)及流計(jì)算系統(tǒng),用以在不需要中斷業(yè)務(wù)的情況下,實(shí)現(xiàn)流計(jì)算系統(tǒng)中流式應(yīng)用的在線升級(jí)。
[0005]第一方面,本發(fā)明實(shí)施例提供了一種流式應(yīng)用升級(jí)方法,應(yīng)用于流計(jì)算系統(tǒng)中的主控節(jié)點(diǎn),所述流計(jì)算系統(tǒng)包括所述主控節(jié)點(diǎn)和至少一個(gè)工作節(jié)點(diǎn),其中,多個(gè)執(zhí)行單元分布于所述至少一個(gè)工作節(jié)點(diǎn)中的一個(gè)或多個(gè)工作節(jié)點(diǎn)上,用于對(duì)所述流計(jì)算系統(tǒng)上部署的流式應(yīng)用的數(shù)據(jù)進(jìn)行處理,其中所述流式應(yīng)用的初始邏輯模型用于表示處理所述流式應(yīng)用的數(shù)據(jù)的所述多個(gè)?2以及所述多個(gè)之間的數(shù)據(jù)流走向;所述方法包括:
[0006]在所述流式應(yīng)用更新的情況下,所述主控節(jié)點(diǎn)獲取所述流式應(yīng)用更新后的邏輯模型,并通過(guò)比較所述流式應(yīng)用的初始邏輯模型以及所述更新后的邏輯模型,確定待調(diào)整的數(shù)據(jù)流;
[0007]根據(jù)所述待調(diào)整的數(shù)據(jù)流,生成升級(jí)指令;
[0008]將所述升級(jí)指令下發(fā)給第一工作節(jié)點(diǎn),所述第一工作節(jié)點(diǎn)是與所述待調(diào)整的數(shù)據(jù)流相關(guān)的所在的工作節(jié)點(diǎn),所述升級(jí)指令用于指示所述第一工作節(jié)點(diǎn)調(diào)整其上分布的
之間的數(shù)據(jù)流走向。
[0009]在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述比較所述流式應(yīng)用的初始邏輯模型以及所述更新后的邏輯模型,確定待調(diào)整的數(shù)據(jù)流包括:
[0010]比較所述流式應(yīng)用的初始邏輯模型以及所述更新后的邏輯模型,以確定所述待調(diào)整的數(shù)據(jù)流,其中所述流式應(yīng)用的初始邏輯模型所表示的與所述更新后的邏輯模型所表不的相同。
[0011]在第一方面的第二種可能的實(shí)現(xiàn)方式中,所述通過(guò)比較所述流式應(yīng)用的初始邏輯模型以及所述更新后的邏輯模型,確定待調(diào)整的數(shù)據(jù)流包括:
[0012]比較所述流式應(yīng)用的初始邏輯模型以及所述更新后的邏輯模型,以確定待調(diào)整的以及所述待調(diào)整的數(shù)據(jù)流,其中所述流式應(yīng)用的初始邏輯模型所表示的與所述更新后的邏輯模型所表示的不完全相同;
[0013]所述根據(jù)所述待調(diào)整的數(shù)據(jù)流,生成升級(jí)指令包括:
[0014]根據(jù)所述待調(diào)整的數(shù)據(jù)流,生成第一升級(jí)指令;根據(jù)所述待調(diào)整的生成第二升級(jí)指令;
[0015]所述將所述升級(jí)指令下發(fā)給第一工作節(jié)點(diǎn)包括:
[0016]將所述第一升級(jí)指令下發(fā)給所述第一工作節(jié)點(diǎn),將所述第二升級(jí)指令下發(fā)給第二工作節(jié)點(diǎn),所述第二工作節(jié)點(diǎn)包括所述待調(diào)整的所在的工作節(jié)點(diǎn);所述第一升級(jí)指令用于指示所述第一工作節(jié)點(diǎn)調(diào)整其上分布的之間的數(shù)據(jù)流走向,所述第二升級(jí)指令用于指示所述第二工作節(jié)點(diǎn)調(diào)整其上分布的的數(shù)目。
[0017]結(jié)合第一方面,或者第一方面第一至第二種任意一種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,還包括:
[0018]所述主控節(jié)點(diǎn)根據(jù)與所述待調(diào)整的數(shù)據(jù)流相關(guān)的的輸入流和輸出流的依賴關(guān)系,確定需要進(jìn)行數(shù)據(jù)恢復(fù)的目標(biāo)和所述目標(biāo)執(zhí)行數(shù)據(jù)恢復(fù)的檢查點(diǎn)0116(^130111七;
[0019]向所述目標(biāo)所在工作節(jié)點(diǎn)下發(fā)數(shù)據(jù)恢復(fù)指令,所述數(shù)據(jù)恢復(fù)指令用于指示所述目標(biāo)根據(jù)所述恢復(fù)數(shù)據(jù);
[0020]當(dāng)確定所述第一工作節(jié)點(diǎn)完成調(diào)整,且所述第一工作節(jié)點(diǎn)上分布的準(zhǔn)備就緒之后,所述主控節(jié)點(diǎn)觸發(fā)所述目標(biāo)將恢復(fù)的數(shù)據(jù)輸入所述目標(biāo)的下游進(jìn)行處理。
[0021]結(jié)合第一方面第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述待調(diào)整的數(shù)據(jù)流包括:待更新的數(shù)據(jù)流和待刪除的數(shù)據(jù)流;所述主控節(jié)點(diǎn)根據(jù)與所述待調(diào)整的數(shù)據(jù)流相關(guān)的的輸入流和輸出流的依賴關(guān)系,確定需要進(jìn)行數(shù)據(jù)恢復(fù)的目標(biāo)和所述目標(biāo)執(zhí)行數(shù)據(jù)恢復(fù)的檢查點(diǎn)0116(^1)01111:,包括:
[0022]所述主控節(jié)點(diǎn)根據(jù)與所述待更新的數(shù)據(jù)流和待刪除的數(shù)據(jù)流相關(guān)的的狀態(tài)數(shù)據(jù),確定執(zhí)行數(shù)據(jù)恢復(fù)的;根據(jù)與所述待更新的數(shù)據(jù)流和待刪除的數(shù)據(jù)流相關(guān)的的輸入流和輸出流的依賴關(guān)系,確定需要進(jìn)行數(shù)據(jù)恢復(fù)的目標(biāo);其中,每個(gè)的狀態(tài)數(shù)據(jù)是該在輸出事件的觸發(fā)下備份的,用于指示該處理數(shù)據(jù)的狀態(tài)。
[0023]結(jié)合第一方面第二到第四種中任意一種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所述待調(diào)整的包括待新增的;所述第二工作節(jié)點(diǎn)為所述主控節(jié)點(diǎn)根據(jù)所述流計(jì)算系統(tǒng)中各個(gè)工作節(jié)點(diǎn)的負(fù)載狀況選擇的工作節(jié)點(diǎn);所述第二升級(jí)指令用于指示所述第二工作節(jié)點(diǎn)創(chuàng)建所述待新增的?2。
[0024]結(jié)合第一方面第二到第五種中任意一種可能的實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式中,所述待調(diào)整的包括待刪除的;所述第二工作節(jié)點(diǎn)為所述待刪除的所在的工作節(jié)點(diǎn);所述第二升級(jí)指令用于指示所述第二工作節(jié)點(diǎn)刪除所述待刪除的?2。
[0025]結(jié)合第一方面,或者第一方面第一至第六種任意一種可能的實(shí)現(xiàn)方式,在第七種可能的實(shí)現(xiàn)方式中,還包括:
[0026]根據(jù)所述流式應(yīng)用的初始邏輯模型配置所述多個(gè)對(duì)所述流式應(yīng)用的數(shù)據(jù)進(jìn)行處理。
[0027]結(jié)合第一方面,或者第一方面第一至第七種任意一種可能的實(shí)現(xiàn)方式,在第八種可能的實(shí)現(xiàn)方式中,所述流式應(yīng)用的初始邏輯模型是用有向無(wú)環(huán)圖表示的。
[0028]第二方面,本發(fā)明實(shí)施例提供了一種流計(jì)算系統(tǒng)中的主控節(jié)點(diǎn),,所述流計(jì)算系統(tǒng)包括所述主控節(jié)點(diǎn)和至少一個(gè)工作節(jié)點(diǎn);其中,多個(gè)執(zhí)行單元分布于所述至少一個(gè)工作節(jié)點(diǎn)中的一個(gè)或多個(gè)工作節(jié)點(diǎn)上,用于對(duì)所述流計(jì)算系統(tǒng)上部署的流式應(yīng)用的數(shù)據(jù)進(jìn)行處理,其中所述流式應(yīng)用的初始邏輯模型用于表示處理所述流式應(yīng)用的數(shù)據(jù)的所述多個(gè)以及所述多個(gè)之間的數(shù)據(jù)流走向;所述主控節(jié)點(diǎn)包括:
[0029]獲取及比較模塊,用于在所述流式應(yīng)用更新的情況下,獲取所述流式應(yīng)用更新后的邏輯模型,并通過(guò)比較所述流式應(yīng)用的初始邏輯模型以及所述更新后的邏輯模型,確定待調(diào)整的數(shù)據(jù)流;
[0030]升級(jí)指令生成模塊,用于根據(jù)所述待調(diào)整的數(shù)據(jù)流,生成升級(jí)指令;
[0031]發(fā)送模塊,用于將所述升級(jí)指令下發(fā)給第一工作節(jié)點(diǎn),所述第一工作節(jié)點(diǎn)是與所述待調(diào)整的數(shù)據(jù)流相關(guān)的所在的工作節(jié)點(diǎn),所述升級(jí)指令用于指示所述第一工作節(jié)點(diǎn)調(diào)整其上分布的之間的數(shù)據(jù)流走向。
[0032]在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述獲取及比較模塊具體用于:
[0033]比較所述流式應(yīng)用的初始邏輯模型以及所述更新后的邏輯模型,以確定所述待調(diào)整的數(shù)據(jù)流,其中所述流式應(yīng)用的初始邏輯模型所表示的與所述更新后的邏輯模型所表不的相同。
[0034]在第二方面的第二種可能的實(shí)現(xiàn)方式中,其中所述流式應(yīng)用的初始邏輯模型所表示的與所述更新后的邏輯模型所表示的不完全相同;
[0035]所述升級(jí)指令生成模塊具體用于,根據(jù)所述待調(diào)整的數(shù)據(jù)流,生成第一升級(jí)指令;根據(jù)所述待調(diào)整的生成第二升級(jí)指令;
[0036]所述發(fā)送模塊具體用于,將所述第一升級(jí)指令下發(fā)給所述第一工作節(jié)點(diǎn),將所述第二升級(jí)指令下發(fā)給第二工作節(jié)點(diǎn),所述第二工作節(jié)點(diǎn)包括所述待調(diào)整的所在的工作節(jié)點(diǎn);所述第一升級(jí)指令用于指示所述第一工作節(jié)點(diǎn)調(diào)整其上分布的之間的數(shù)據(jù)流走向,所述第二升級(jí)指令用于指示所述第二工作節(jié)點(diǎn)調(diào)整其上分布的的數(shù)目。
[0037]結(jié)合第二方面,或者第二方面第一至第三種任意一種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,還包括:
[0038]數(shù)據(jù)恢復(fù)模塊,用于根據(jù)與所述待調(diào)整的數(shù)據(jù)流相關(guān)的的輸入流和輸出流的依賴關(guān)系,確定需要進(jìn)行數(shù)據(jù)恢復(fù)的目標(biāo)和所述目標(biāo)執(zhí)行數(shù)據(jù)恢復(fù)的檢查點(diǎn)
[0039]所述發(fā)送模塊還用于,向所述目標(biāo)所在工作節(jié)點(diǎn)下發(fā)數(shù)據(jù)恢復(fù)指令,所述數(shù)據(jù)恢復(fù)指令用于指示所述目標(biāo)根據(jù)所述恢復(fù)數(shù)據(jù);
[0040]所述主控節(jié)點(diǎn)還包括:輸入觸發(fā)模塊,用于當(dāng)確定所述第一工作節(jié)點(diǎn)完成調(diào)整,且所述第一工作節(jié)點(diǎn)上分布的準(zhǔn)備就緒之后,觸發(fā)所述目標(biāo)將恢復(fù)的數(shù)據(jù)輸入所述目標(biāo)的下游進(jìn)行處理。
[0041]結(jié)合第二方面第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述待調(diào)整的數(shù)據(jù)流包括:待更新的數(shù)據(jù)流和待刪除的數(shù)據(jù)流;所述數(shù)據(jù)恢復(fù)模塊具體用于:
[0042]所述主控節(jié)點(diǎn)根據(jù)與所述待更新的數(shù)據(jù)流和待刪除的數(shù)據(jù)流相關(guān)的的狀態(tài)數(shù)據(jù),確定執(zhí)行數(shù)據(jù)恢復(fù)的;根據(jù)與所述待更新的數(shù)據(jù)流和待刪除的數(shù)據(jù)流相關(guān)的的輸入流和輸出流的依賴關(guān)系,確定需要進(jìn)行數(shù)據(jù)恢復(fù)的目標(biāo);其中,每個(gè)的狀態(tài)數(shù)據(jù)是該在輸出事件的觸發(fā)下備份的,用于指示該處理數(shù)據(jù)的狀態(tài)。
[0043]結(jié)合第二方面第二到第四種中任意一種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所述待調(diào)整的包括待刪除的;所述第二工作節(jié)點(diǎn)為所述待刪除的所在的工作節(jié)點(diǎn);所述第二升級(jí)指令用于指示所述第二工作節(jié)點(diǎn)刪除所述待刪除的?2。
[0044]結(jié)合第二方面第二到第五種中任意一種可能的實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式中,所述待調(diào)整的包括待新增的;所述第二工作節(jié)點(diǎn)為所述主控節(jié)點(diǎn)根據(jù)所述流計(jì)算系統(tǒng)中各個(gè)工作節(jié)點(diǎn)的負(fù)載狀況選擇的工作節(jié)點(diǎn);所述第二升級(jí)指令用于指示所述第二工作節(jié)點(diǎn)創(chuàng)建所述待新增的?2。
[0045]結(jié)合第二方面,或者第二方面第一至第六種任意一種可能的實(shí)現(xiàn)方式,在第七種可能的實(shí)現(xiàn)方式中,還包括:配置模塊,用于根據(jù)所述流式應(yīng)用的初始邏輯模型配置所述多個(gè)對(duì)所述流式應(yīng)用的數(shù)據(jù)進(jìn)行處理。
[0046]第三方面,本發(fā)明實(shí)施例提供了一種流計(jì)算系統(tǒng),,包括:主控節(jié)點(diǎn)和至少一個(gè)工作節(jié)點(diǎn),其中,多個(gè)執(zhí)行單元分布于所述至少一個(gè)工作節(jié)點(diǎn)中的一個(gè)或多個(gè)工作節(jié)點(diǎn)上,用于對(duì)所述流計(jì)算系統(tǒng)上部署的流式應(yīng)用的數(shù)據(jù)進(jìn)行處理,其中所述流式應(yīng)用的初始邏輯模型用于表示處理所述流式應(yīng)用的數(shù)據(jù)的所述多個(gè)以及所述多個(gè)之間的數(shù)據(jù)流走向;
[0047]所述主控節(jié)點(diǎn)用于:在所述流式應(yīng)用更新的情況下,獲取所述流式應(yīng)用更新后的邏輯模型,并通過(guò)比較所述流式應(yīng)用的初始邏輯模型以及所述更新后的邏輯模型,確定待調(diào)整的數(shù)據(jù)流;根據(jù)所述待調(diào)整的數(shù)據(jù)流,生成升級(jí)指令;將所述升級(jí)指令下發(fā)給第一工作節(jié)點(diǎn),所述第一工作節(jié)點(diǎn)是與所述待調(diào)整的數(shù)據(jù)流相關(guān)的所在的工作節(jié)點(diǎn),所述升級(jí)指令用于指示所述第一工作節(jié)點(diǎn)調(diào)整其上分布的之間的數(shù)據(jù)流走向;
[0048]所述第一工作節(jié)點(diǎn),用于接收所述主控節(jié)點(diǎn)發(fā)送的升級(jí)指令,根據(jù)所述升級(jí)指令的指示,調(diào)整所述第一工作節(jié)點(diǎn)上分布的之間的數(shù)據(jù)流走向。
[0049]在第三方面的第一種可能的實(shí)現(xiàn)方式中,其中所述流式應(yīng)用的初始邏輯模型所表示的與所述更新后的邏輯模型所表示的相同。
[0050]在第三方面的第二種可能的實(shí)現(xiàn)方式中,其中所述流式應(yīng)用的初始邏輯模型所表示的與所述更新后的邏輯模型所表示的不完全相同;根據(jù)所述待調(diào)整的數(shù)據(jù)流,生成第一升級(jí)指令;根據(jù)所述待調(diào)整的生成第二升級(jí)指令;
[0051]將所述第一升級(jí)指令下發(fā)給所述第一工作節(jié)點(diǎn),將所述第二升級(jí)指令下發(fā)給第二工作節(jié)點(diǎn),所述第二工作節(jié)點(diǎn)包括所述待調(diào)整的所在的工作節(jié)點(diǎn);
[0052]所述第一工作節(jié)點(diǎn)具體用于,接收所述主控節(jié)點(diǎn)發(fā)送的所述第一升級(jí)指令,根據(jù)所述第一升級(jí)指令的指示,調(diào)整所述第一工作節(jié)點(diǎn)上分布的之間的數(shù)據(jù)流走向;
[0053]所述第二工作節(jié)點(diǎn)具體用于,接收所述主控節(jié)點(diǎn)發(fā)送的所述第二升級(jí)指令,根據(jù)所述第二升級(jí)指令的指示,調(diào)整所述第二工作節(jié)點(diǎn)上分布的的數(shù)目。
[0054]結(jié)合第三方面,或者第三方面第一至第二種任意一種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述主控節(jié)點(diǎn)還用于,根據(jù)與所述待調(diào)整的數(shù)據(jù)流相關(guān)的的輸入流和輸出流的依賴關(guān)系,確定需要進(jìn)行數(shù)據(jù)恢復(fù)的目標(biāo)和所述目標(biāo)執(zhí)行數(shù)據(jù)恢復(fù)的檢查點(diǎn)0116(^1)01111:;向所述目標(biāo)?2所在工作節(jié)點(diǎn)下發(fā)數(shù)據(jù)恢復(fù)指令,所述數(shù)據(jù)恢復(fù)指令用于指示所述目標(biāo)根據(jù)所述恢復(fù)數(shù)據(jù);當(dāng)確定所述第一工作節(jié)點(diǎn)完成調(diào)整,且所述第一工作節(jié)點(diǎn)上分布的準(zhǔn)備就緒之后,觸發(fā)所述目標(biāo)將恢復(fù)的數(shù)據(jù)輸入所述目標(biāo)
的下游進(jìn)行處理。
[0055]由上述技術(shù)方案可知,本發(fā)明實(shí)施例提供的流式應(yīng)用升級(jí)方法及流計(jì)算系統(tǒng),通過(guò)對(duì)比流式應(yīng)用發(fā)生更新前后邏輯模型的差異,動(dòng)態(tài)確定待調(diào)整的數(shù)據(jù)流,并根據(jù)待調(diào)整的數(shù)據(jù)流生成相應(yīng)的升級(jí)指令下發(fā)給工作節(jié)點(diǎn),從而在不需要中斷業(yè)務(wù)的情況下,實(shí)現(xiàn)流計(jì)算系統(tǒng)中流式應(yīng)用的在線升級(jí)。

【專利附圖】

【附圖說(shuō)明】
[0056]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0057]圖1為本發(fā)明提供的流計(jì)算系統(tǒng)架構(gòu)示意圖;
[0058]圖2為本發(fā)明實(shí)施例提供的流式應(yīng)用的邏輯模型示意圖;
[0059]圖3為本發(fā)明實(shí)施例提供的流式應(yīng)用部署示意圖;
[0060]圖4為本發(fā)明實(shí)施例提供的流計(jì)算系統(tǒng)工作原理圖;
[0061]圖5為本發(fā)明實(shí)施例提供的流式應(yīng)用升級(jí)方法的流程圖;
[0062]圖6為本發(fā)明實(shí)施例提供的流式應(yīng)用更新前后邏輯模型變化示意圖;
[0063]圖7為本發(fā)明實(shí)施例提供的流式應(yīng)用更新前后邏輯模型變化示意圖;
[0064]圖8為本發(fā)明實(shí)施例提供的流式應(yīng)用升級(jí)方法的流程圖;
[0065]圖9為本發(fā)明實(shí)施例提供的流式應(yīng)用邏輯模型示意圖
[0066]圖10為本發(fā)明實(shí)施例提供的流式應(yīng)用的邏輯模型調(diào)整示意圖;
[0067]圖11為本發(fā)明實(shí)施例提供的流式應(yīng)用升級(jí)之后的部署示意圖;
[0068]圖12為本發(fā)明實(shí)施例提供的的輸入流和輸出流的依賴關(guān)系不意圖;
[0069]圖13為本發(fā)明實(shí)施例提供的的輸入流和輸出流的依賴關(guān)系不意圖;
[0070]圖14為本發(fā)明實(shí)施例提供的狀態(tài)數(shù)據(jù)備份示意圖;
[0071]圖15為本發(fā)明實(shí)施例提供的主控節(jié)點(diǎn)示意圖;
[0072]圖16為本發(fā)明實(shí)施例提供的流計(jì)算系統(tǒng)示意圖;
[0073]圖17為本發(fā)明實(shí)施例提供的主控節(jié)點(diǎn)示意圖。

【具體實(shí)施方式】
[0074]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明的技術(shù)方案進(jìn)行清楚地描述。顯然,下述的各個(gè)實(shí)施例都只是本發(fā)明一部分的實(shí)施例?;诒景l(fā)明下述的各個(gè)實(shí)施例,本領(lǐng)域普通技術(shù)人員即使沒(méi)有作出創(chuàng)造性勞動(dòng),也可以通過(guò)等效變換部分甚至全部的技術(shù)特征,而獲得能夠解決本發(fā)明技術(shù)問(wèn)題,實(shí)現(xiàn)本發(fā)明技術(shù)效果的其它實(shí)施例,而這些變換而來(lái)的各個(gè)實(shí)施例顯然并不脫離本發(fā)明所公開(kāi)的范圍。
[0075]本發(fā)明實(shí)施例提供的技術(shù)方案可典型地應(yīng)用于流計(jì)算系統(tǒng)中,圖4描述了流計(jì)算系統(tǒng)的基本結(jié)構(gòu),該流計(jì)算系統(tǒng)包括:主控節(jié)點(diǎn)(1381:610和多個(gè)工作節(jié)點(diǎn),在集群部署時(shí),主控節(jié)點(diǎn)和工作節(jié)點(diǎn)都可以有一個(gè)或多個(gè),主控節(jié)點(diǎn)可以是與工作節(jié)點(diǎn)分離的物理節(jié)點(diǎn);在單機(jī)部署時(shí),主控節(jié)點(diǎn)和工作節(jié)點(diǎn)可以是部署在同一個(gè)物理節(jié)點(diǎn)上的邏輯單元;其中,物理節(jié)點(diǎn)具體可以為計(jì)算機(jī)或服務(wù)器。主控節(jié)點(diǎn)負(fù)責(zé)將數(shù)據(jù)流調(diào)度到工作節(jié)點(diǎn)上進(jìn)行處理。通常情況下,一臺(tái)物理節(jié)點(diǎn)即為一個(gè)工作節(jié)點(diǎn),在某些情形下,一臺(tái)物理節(jié)點(diǎn)可以對(duì)應(yīng)于多個(gè)工作節(jié)點(diǎn),一臺(tái)物理節(jié)點(diǎn)對(duì)應(yīng)的工作節(jié)點(diǎn)的數(shù)量取決于該物理節(jié)點(diǎn)的硬件物理資源??梢詫⒁粋€(gè)工作節(jié)點(diǎn)理解為是一份硬件物理資源。對(duì)應(yīng)于同一物理節(jié)點(diǎn)的工作節(jié)點(diǎn)間采用進(jìn)程通信的方式進(jìn)行通信,對(duì)應(yīng)于不同物理節(jié)點(diǎn)的工作節(jié)點(diǎn)間采用網(wǎng)絡(luò)通信的方式進(jìn)行通信。
[0076]如圖4所示,流計(jì)算系統(tǒng)包括主控節(jié)點(diǎn)、工作節(jié)點(diǎn)1、工作節(jié)點(diǎn)2和工作節(jié)點(diǎn)3。
[0077]主控節(jié)點(diǎn)根據(jù)流式應(yīng)用的邏輯模型將流式應(yīng)用部署到到工作節(jié)點(diǎn)1、工作節(jié)點(diǎn)2和工作節(jié)點(diǎn)3這三個(gè)工作節(jié)點(diǎn)上進(jìn)行處理。圖3所示的邏輯模型為包含九個(gè)執(zhí)行單元?1~00688 £161116111:):?21至?£9,以及這九個(gè)?2之間的數(shù)據(jù)流走向的邏輯關(guān)系圖,?2之間數(shù)據(jù)流的走向也體現(xiàn)了各個(gè)的輸入流和輸出流的依賴關(guān)系。需要說(shuō)明的是,本發(fā)明實(shí)施例中數(shù)據(jù)流也簡(jiǎn)稱為流(81^68111)。
[0078]主控節(jié)點(diǎn)根據(jù)流式應(yīng)用的邏輯模型,配置工作節(jié)點(diǎn)1上的和?23,工作節(jié)點(diǎn)2上的?24、?27和?29,以及工作節(jié)點(diǎn)3上的?25、?26、?28來(lái)對(duì)流式應(yīng)用的數(shù)據(jù)流進(jìn)行處理??梢钥闯?,經(jīng)過(guò)配置之后,工作節(jié)點(diǎn)1、2、3上的之間的數(shù)據(jù)流走向與流式應(yīng)用的邏輯模型是匹配的。
[0079]本發(fā)明實(shí)施例中的流式應(yīng)用的邏輯模型可以為有向無(wú)環(huán)圖^0110
、樹(shù)狀圖或者含有環(huán)的圖。流式應(yīng)用的邏輯模型可以參閱圖2進(jìn)行理解,如圖2所示的流式計(jì)算應(yīng)用圖包括7個(gè)算子,分別從?£1到?£7,有8條數(shù)據(jù)流,分別從81到88。圖2中明確標(biāo)出了數(shù)據(jù)流的走向,例如:數(shù)據(jù)流81是從?£1到算子?25,表示?25處理的是?21輸出的流,即?25的輸出依賴于?£1的輸入,通常也稱?£5為?21的下游,而?£1為的上游;可以理解的是,上游和下游是根據(jù)之間的數(shù)據(jù)流走向來(lái)確定的,對(duì)于一條數(shù)據(jù)流來(lái)說(shuō),與其相關(guān)的有且僅有兩個(gè):輸出該數(shù)據(jù)流的源?2,以及該數(shù)據(jù)流流向的目的?2 (也即接收該數(shù)據(jù)流的,從數(shù)據(jù)流的方向來(lái)看,源為目的的上游?2,而目的為源的下游;進(jìn)一步地,數(shù)據(jù)流32輸入?22,并經(jīng)?22邏輯處理后,產(chǎn)生兩條數(shù)據(jù)流33和34,分別進(jìn)入?23和?24進(jìn)行邏輯處理,同理,?22也為?21的下游?2,而?21為?22的上游;?24輸出的數(shù)據(jù)流54和?23輸出的數(shù)據(jù)流37均作為?26的輸入,即?26的輸出依賴于和?24的輸入。需要說(shuō)明的是,在本發(fā)明實(shí)施例中,將輸出依賴于單一的輸入的定義為無(wú)狀態(tài)四,比如?25,?23,?24 ;將輸出依賴于多個(gè)的輸入的定義為有狀態(tài)?2,比如?26,?27。數(shù)據(jù)流中包含單個(gè)數(shù)據(jù)段,稱為元組,元組可以是結(jié)構(gòu)化或非結(jié)構(gòu)化數(shù)據(jù)。通常,元組中可表示特定時(shí)間點(diǎn)某事物的狀態(tài),流計(jì)算系統(tǒng)中的以元組為單位對(duì)流式應(yīng)用產(chǎn)生的數(shù)據(jù)流進(jìn)行處理,也可以認(rèn)為元組是流計(jì)算系統(tǒng)中的數(shù)據(jù)的最小粒度劃分和表示。
[0080]還需要說(shuō)明的是,流計(jì)算系統(tǒng)只是本發(fā)明技術(shù)方案的一個(gè)典型應(yīng)用場(chǎng)景,并不對(duì)本發(fā)明的應(yīng)用場(chǎng)景構(gòu)成限制,其它涉及分布式系統(tǒng)或云計(jì)算系統(tǒng)應(yīng)用部署與升級(jí)的應(yīng)用場(chǎng)景,本發(fā)明實(shí)施例的技術(shù)方案均適用。
[0081]本發(fā)明實(shí)施例提供一種流式應(yīng)用升級(jí)方法,該方法可典型地應(yīng)用與圖1及圖4所示的流計(jì)算系統(tǒng)中,假設(shè)該流計(jì)算系統(tǒng)上部署有流式應(yīng)用八,且流式應(yīng)用4的初始邏輯模型為01,則該流計(jì)算系統(tǒng)的主控節(jié)點(diǎn)根據(jù)初始邏輯模型01,部署多個(gè)執(zhí)行單元$£)來(lái)對(duì)流式應(yīng)用八的數(shù)據(jù)流進(jìn)行處理,其中,該多個(gè)執(zhí)行單元分布于流計(jì)算系統(tǒng)的一個(gè)或多個(gè)工作節(jié)點(diǎn)上;如圖6所示,當(dāng)流式應(yīng)用八發(fā)生升級(jí)或更新后,其邏輯模型也相應(yīng)地發(fā)生更新(假設(shè)更新后的邏輯模型為02),通常邏輯模型的更新一般由開(kāi)發(fā)人員來(lái)完成,或者由開(kāi)發(fā)人員借助開(kāi)發(fā)工具來(lái)完成,本發(fā)明不做特別限定。如圖5所示,該流式應(yīng)用升級(jí)方法的主要流程描述如下:
[0082]8501:在流式應(yīng)用八更新的情況下,流計(jì)算系統(tǒng)的主控節(jié)點(diǎn)獲取流式應(yīng)用八更新后的邏輯模型02 ;
[0083]8502:主控節(jié)點(diǎn)通過(guò)對(duì)比更新后的邏輯模型02以及初始邏輯模型01,以確定待調(diào)整的數(shù)據(jù)流;
[0084]8503:主控節(jié)點(diǎn)根據(jù)待調(diào)整的數(shù)據(jù)流,生成升級(jí)指令;
[0085]3504:主控節(jié)點(diǎn)將生成的升級(jí)指令下發(fā)給第一工作節(jié)點(diǎn),其中,第一工作節(jié)點(diǎn)是與待調(diào)整的數(shù)據(jù)流相關(guān)的所在的工作節(jié)點(diǎn),該升級(jí)指令用于指示第一工作節(jié)點(diǎn)調(diào)整其上分布的之間的數(shù)據(jù)流走向。
[0086]需要說(shuō)明的是,本發(fā)明實(shí)施例中的待調(diào)整的數(shù)據(jù)流可以為一條,也可以為多條,視具體的情況而定,而對(duì)于每條待調(diào)整的數(shù)據(jù)流來(lái)說(shuō),與其相關(guān)的具體是指該待調(diào)整的數(shù)據(jù)流的源和目的,其中,該待調(diào)整的數(shù)據(jù)流的源為輸出該待調(diào)整的數(shù)據(jù)流的?2,待調(diào)整的數(shù)據(jù)流的目的為接收該待調(diào)整的數(shù)據(jù)流的或該待調(diào)整的數(shù)據(jù)流的源的下游?2。
[0087]本發(fā)明實(shí)施例提供的流式應(yīng)用升級(jí)方法及流計(jì)算系統(tǒng),通過(guò)對(duì)比流式應(yīng)用發(fā)生更新前后邏輯模型的差異,動(dòng)態(tài)確定待調(diào)整的數(shù)據(jù)流,并根據(jù)待調(diào)整的數(shù)據(jù)流生成相應(yīng)的升級(jí)指令下發(fā)給工作節(jié)點(diǎn),從而在不需要中斷業(yè)務(wù)的情況下,實(shí)現(xiàn)流計(jì)算系統(tǒng)中流式應(yīng)用的在線升級(jí)。
[0088]在本發(fā)明實(shí)施例中,流式應(yīng)用的邏輯模型用于表示處理該流式應(yīng)用的數(shù)據(jù)的多個(gè)以及該多個(gè)之間的數(shù)據(jù)流走向;當(dāng)流式應(yīng)用發(fā)生升級(jí)或更新后,其邏輯模型也相應(yīng)地發(fā)生更新,通常情況下,更新后的邏輯模型與初始的邏輯模型的差異主要分為兩種類型:
(1)初始邏輯模型所表示的與更新后的邏輯模型所表示的完全相同,僅僅是之間的數(shù)據(jù)流走向發(fā)生變化;(2)初始邏輯模型所表示的與更新后的邏輯模型所表示的不完全相同,同時(shí)之間的數(shù)據(jù)流走向也發(fā)生變化;針對(duì)上述兩種類型的差異,下面分別介紹相應(yīng)的處理流程。
[0089]在一個(gè)具體的實(shí)施例中,如圖6所示,流式應(yīng)用的初始邏輯模型所表示的與該流式應(yīng)用更新后的邏輯模型所表示的完全相同,而之間的數(shù)據(jù)流走向發(fā)生變化,根據(jù)圖6,流式應(yīng)用更新前后,其邏輯模型中的均為?21-?27,完全相同,但是數(shù)據(jù)流走向發(fā)生了變化,即原來(lái)由流向?26的數(shù)據(jù)流變?yōu)橛桑俊?流向?27的數(shù)據(jù)流311,同時(shí)新增了從?22流向?26的數(shù)據(jù)流312。在這種情況下,流式應(yīng)用升級(jí)方法的主要流程如下:
[0090]步驟1:通過(guò)比較流式應(yīng)用的初始邏輯模型以及該流式應(yīng)用更新后的邏輯模型,確定待調(diào)整的數(shù)據(jù)流;其中,該待調(diào)整的數(shù)據(jù)流包括一條或多條數(shù)據(jù)流;具體地,在一個(gè)優(yōu)選的實(shí)施例中,待調(diào)整的數(shù)據(jù)流可以包括:待新增的數(shù)據(jù)流、待刪除的數(shù)據(jù)流或待更新的數(shù)據(jù)流中的至少一種,其中待更新的數(shù)據(jù)流是指流式應(yīng)用的邏輯模型更新后目的節(jié)點(diǎn)或者源節(jié)點(diǎn)之一發(fā)生變化的數(shù)據(jù)流;具體到圖6所示的情形,待調(diào)整的數(shù)據(jù)流包括:待新增的數(shù)據(jù)流312、待更新的數(shù)據(jù)流311。
[0091]步驟2:根據(jù)待調(diào)整的數(shù)據(jù)流,生成升級(jí)指令;其中,升級(jí)指令可以包括一條或多條指令,且升級(jí)指令與待調(diào)整的數(shù)據(jù)流的類型相關(guān),例如,若待待調(diào)整的數(shù)據(jù)流包括待新增的數(shù)據(jù)流和待更新的數(shù)據(jù)流,則生成的升級(jí)指令包括:用于新增數(shù)據(jù)流的指令和用于更新數(shù)據(jù)流的指令;其中不同類型的升級(jí)指令可以可以為單獨(dú)的指令,也可以集成到一條指令當(dāng)中,也本發(fā)明不做特別限定。具體到圖6所示的情形,生成的升級(jí)指令包括:新增數(shù)據(jù)流812的指令和將數(shù)據(jù)流36更新為311的指令。
[0092]步驟3:將生成的升級(jí)指令下發(fā)給第一工作節(jié)點(diǎn),第一工作節(jié)點(diǎn)是與待調(diào)整的數(shù)據(jù)流相關(guān)的所在的工作節(jié)點(diǎn);可以理解的是,第一工作節(jié)點(diǎn)可能為一個(gè)或多個(gè),第一工作節(jié)點(diǎn)在接收到該升級(jí)指令后,執(zhí)行升級(jí)指令所指示的操作,比如新增數(shù)據(jù)流312,以及將數(shù)據(jù)流36更新為311,從而使得第一工作節(jié)點(diǎn)上分布的之間的數(shù)據(jù)流走向發(fā)生調(diào)整,并且調(diào)整之后的數(shù)據(jù)流走向與更新后的邏輯模型相匹配。
[0093]進(jìn)一步的,由于在第一工作節(jié)點(diǎn)對(duì)其上分布的之間的數(shù)據(jù)流進(jìn)行調(diào)整時(shí),可能會(huì)使正在處理的數(shù)據(jù)發(fā)生丟失,因此需要對(duì)數(shù)據(jù)進(jìn)行恢復(fù),具體地,在一個(gè)實(shí)施例中,在第一工作節(jié)點(diǎn)對(duì)其上分布的之間的數(shù)據(jù)流進(jìn)行調(diào)整之前,主控節(jié)點(diǎn)根據(jù)與待調(diào)整的數(shù)據(jù)流相關(guān)的的輸入流和輸出流的依賴關(guān)系,確定需要進(jìn)行數(shù)據(jù)恢復(fù)的目標(biāo)和該目標(biāo)執(zhí)行數(shù)據(jù)恢復(fù)的檢查點(diǎn)0116(^1)01111:;向該目標(biāo)所在工作節(jié)點(diǎn)下發(fā)數(shù)據(jù)恢復(fù)指令,該數(shù)據(jù)恢復(fù)指令用于指示該目標(biāo)根據(jù)該0116(^1)01111:恢復(fù)數(shù)據(jù);當(dāng)主控節(jié)點(diǎn)確定第一工作節(jié)點(diǎn)完成調(diào)整,且第一工作節(jié)點(diǎn)上分布的準(zhǔn)備就緒之后,主控節(jié)點(diǎn)觸發(fā)該目標(biāo)四將恢復(fù)的數(shù)據(jù)輸入該目標(biāo)的下游進(jìn)行處理。
[0094]需要說(shuō)明的是,主控節(jié)點(diǎn)可以通過(guò)主動(dòng)發(fā)送詢問(wèn)消息的方式感知流計(jì)算系統(tǒng)中各個(gè)工作節(jié)點(diǎn)上四的狀態(tài),也可以由工作節(jié)點(diǎn)將自身分布的各個(gè)四的狀態(tài)上報(bào)給主控節(jié)點(diǎn), 的狀態(tài)包括:運(yùn)行狀態(tài)、就緒狀態(tài)和停止?fàn)顟B(tài);當(dāng)與上下游的的通道建立成功,就表示出于就緒狀態(tài),可以接收數(shù)據(jù)流并進(jìn)行處理了。
[0095]可選地,主控節(jié)點(diǎn)在執(zhí)行上述流式應(yīng)用升級(jí)方法步驟之前,還可以根據(jù)上述流式應(yīng)用的初始邏輯模型配置多個(gè)對(duì)流式應(yīng)用的數(shù)據(jù)進(jìn)行處理。
[0096]本發(fā)明實(shí)施例提供的流式應(yīng)用升級(jí)方法,通過(guò)對(duì)比流式應(yīng)用發(fā)生更新前后邏輯模型的差異,動(dòng)態(tài)確定待調(diào)整的數(shù)據(jù)流,并生成相應(yīng)的升級(jí)指令下發(fā)給工作節(jié)點(diǎn),以完成流式應(yīng)用的在線升級(jí),從而可以保證應(yīng)用升級(jí)過(guò)程中不需要中斷原先業(yè)務(wù);進(jìn)一步的,通過(guò)在升級(jí)的過(guò)程中對(duì)數(shù)據(jù)進(jìn)行恢復(fù),以確保不會(huì)造成關(guān)鍵數(shù)據(jù)丟失,影響業(yè)務(wù)運(yùn)行。
[0097]在另一個(gè)具體的實(shí)施例中,如圖7所示,流式應(yīng)用的初始邏輯模型所表示的與該流式應(yīng)用更新后的邏輯模型所表示的不完全相同,且之間的數(shù)據(jù)流走向也發(fā)生了變化,根據(jù)圖7,流式應(yīng)用更新前后,其邏輯模型中的數(shù)目發(fā)生了變化〈?22、?23、?24和
被刪除,新增了 ^£94213),數(shù)據(jù)流走向也發(fā)生了變化,即原來(lái)的數(shù)據(jù)流34、35、36和37被刪除,同時(shí)新增了數(shù)據(jù)流311-316,原來(lái)的數(shù)據(jù)流33的目的發(fā)生了更新,原來(lái)的數(shù)據(jù)流89的源發(fā)生了更新。在這種情況下,如圖8所示,流式應(yīng)用升級(jí)方法的主要流程如下:
[0098]8801:主控節(jié)點(diǎn)通過(guò)比較流式應(yīng)用的初始邏輯模型以及該流式應(yīng)用更新后的邏輯模型,確定待調(diào)整的和待調(diào)整的數(shù)據(jù)流;其中,該待調(diào)整的包括一個(gè)或多個(gè)?2,該待調(diào)整的數(shù)據(jù)流包括一條或多條數(shù)據(jù)流;具體地,在一個(gè)優(yōu)選的實(shí)施例中,該待調(diào)整的包括:待新增的或待刪除的中的至少一種,待調(diào)整的數(shù)據(jù)流可以包括:待新增的數(shù)據(jù)流、待刪除的數(shù)據(jù)流或待更新的數(shù)據(jù)流中的至少一種。
[0099]具體地,如圖9所示,主控節(jié)點(diǎn)通過(guò)對(duì)比流式應(yīng)用更新前后的邏輯模型,可以確定需要將原始邏輯模型中?22、?23、?24和?26組成的子邏輯模型替換成由?29-?213組成的子邏輯模型,才能與更新后的邏輯模型相同;因此,確定?22、?23、?24、?26,以及?29-?213為待調(diào)整的(其中,?22、?23、?24和?26為待刪除的?2,?29~?213為待新增的?幻,以及確定與待調(diào)整的相關(guān)的數(shù)據(jù)流,即待調(diào)整的的所有輸入流和輸出流為待調(diào)整的流,如圖9中的虛線部分所指示的流為待刪除的數(shù)據(jù)流,黑色加粗部分所指示的流為待新增的數(shù)據(jù)流,淺色加粗部分所指示的流為待更新的數(shù)據(jù)流。
[0100]8802:主控節(jié)點(diǎn)根據(jù)待調(diào)整的數(shù)據(jù)流,生成第一升級(jí)指令;根據(jù)待調(diào)整的生成第二升級(jí)指令;其中,第一升級(jí)指令和第二升級(jí)指令分別可以包括一條或多條指令,且第一升級(jí)指令與待調(diào)整的數(shù)據(jù)流的類型相關(guān),第二升級(jí)指令與待調(diào)整的的類型相關(guān),例如,若待調(diào)整的數(shù)據(jù)流包括待新增的數(shù)據(jù)流和待更新的數(shù)據(jù)流,則生成的第一升級(jí)指令包括:用于新增數(shù)據(jù)流的指令和用于更新數(shù)據(jù)流的指令;若待調(diào)整的包括待新增的?2,則生成的第二升級(jí)指令包括:用于新增的指令;其中,第一升級(jí)指令和第二升級(jí)指令可以為單獨(dú)的指令,也可以集成到一條指令中,也本發(fā)明不做特別限定。具體到圖7所示的情形,生成的第一升級(jí)指令包括:刪除數(shù)據(jù)流的指令、新增數(shù)據(jù)流的指令和更新數(shù)據(jù)流的指令,第二升級(jí)指令包括:新增的指令,刪除的指令。
[0101]在一個(gè)具體的實(shí)施例中,如圖9所示,主控節(jié)點(diǎn)通過(guò)對(duì)比流式應(yīng)用更新前后的邏輯模型,確定出待調(diào)整的和待調(diào)整的流之后,可以進(jìn)一步確定調(diào)整策略,即如何對(duì)和流進(jìn)行調(diào)整,才能使得調(diào)整之后的部署情況(包括的個(gè)數(shù)以及之間數(shù)據(jù)流的依賴關(guān)系)與流式應(yīng)用更新后的邏輯模型相匹配。調(diào)整策略包含兩部分內(nèi)容:(1)92數(shù)目的調(diào)整策略,即需要新增哪些和/或需要?jiǎng)h除哪些; (2)92之間數(shù)據(jù)流走向的調(diào)整策略,即哪些的數(shù)據(jù)流走向需要更新,哪些數(shù)據(jù)流需要增加,以及哪些數(shù)據(jù)流需要?jiǎng)h除。
[0102]在一個(gè)優(yōu)選的實(shí)施例中,調(diào)整策略主要包括如下情形中的至少一種:
[0103](1)更新流:數(shù)據(jù)流的目的節(jié)點(diǎn)或者源節(jié)點(diǎn)之一發(fā)生變化;
[0104](2)刪除流:數(shù)據(jù)流流在應(yīng)用更新后需廢棄;
[0105](3)新增流:數(shù)據(jù)流原先不存在,應(yīng)用更新后新增的流;
[0106](4)刪除?2:應(yīng)用更新后需廢棄的?已;
[0107](5)新增?2:應(yīng)用更新后新增的?已。
[0108]具體到圖7和圖9所示的邏輯模型,結(jié)合圖10可以看出,需要新增5個(gè) $£94213),以及新增?29-?213之間的數(shù)據(jù)流;需要?jiǎng)h除?22、?23、?24和?26,以及刪除
?22、?23、?24和?26之間的數(shù)據(jù)流;同時(shí),由于?£1的輸出流的目的四發(fā)生了變化(由?已2變?yōu)樗幕?,?7的輸入流也發(fā)生了變化(由?26的輸出流變?yōu)椋?13的輸出流,即流的源節(jié)點(diǎn)發(fā)生變化),因此,需要對(duì)?£1的輸出流和?27的輸入流進(jìn)行更新。基于上述分析,可以得出調(diào)整策略為:
[0109]
[0110](2)新增?29-?213之間的流;其中,?29-?213之間的數(shù)據(jù)流走向是由更新后的邏輯模型決定的;
[0111]⑶刪除?£2、?23、?24和?£6 ;
[0112](4)刪除?22、?23、?24 和?26 之間的流;
[0113](5)將?21的輸出流的目的四由?22改為?29 ;將?27的輸入流的源由?26改為?213。
[0114]調(diào)整策略確定之后,基于確定出的調(diào)整策略,主控節(jié)點(diǎn)即可生成升級(jí)指令,升級(jí)指令用于指示工作節(jié)點(diǎn)(具體而言是待調(diào)整的所在的工作節(jié)點(diǎn)和待調(diào)整的數(shù)據(jù)流所涉及的所在的工作節(jié)點(diǎn))實(shí)施確定出的調(diào)整策略。與調(diào)整策略相對(duì)應(yīng),升級(jí)指令包括:新增
指令、刪除指令、更新流指令、刪除流指令或新增流指令中的至少一個(gè)。具體到圖7和圖9所示的邏輯模型,升級(jí)指令具體包括:
[0115](1)新增?29-?213 的指令;
[0116](2)新增?29-?213之間的流的指令;
[0117](3)刪除?22、?23、?24 和?26 的指令;
[0118](4)刪除?22、?23、?24和?26之間的流的指令;
[0119](5)將?21的輸出流的目的?2由?22改為?29的指令,以及將?27的輸入流的源由?26改為?213的指令。
[0120]3803:主控節(jié)點(diǎn)將生成的第一升級(jí)指令下發(fā)給第一工作節(jié)點(diǎn),將生成的第二升級(jí)指令下發(fā)給第二工作節(jié)點(diǎn),其中,第一工作節(jié)點(diǎn)是與待調(diào)整的數(shù)據(jù)流相關(guān)的所在的工作節(jié)點(diǎn),第二工作節(jié)點(diǎn)包括待調(diào)整的所在的工作節(jié)點(diǎn);可以理解的是,第一工作節(jié)點(diǎn)和第二工作節(jié)點(diǎn)均可能為一個(gè)或多個(gè),并且第一工作節(jié)點(diǎn)和第二工作節(jié)點(diǎn)可以存在重疊,即一個(gè)工作節(jié)點(diǎn)可能即屬于第一工作節(jié)點(diǎn),也同時(shí)屬于第二工作節(jié)點(diǎn);第一升級(jí)指令用于指示第一工作節(jié)點(diǎn)調(diào)整其上分布的之間的數(shù)據(jù)流走向,第二升級(jí)指令用于指示所述第二工作節(jié)點(diǎn)調(diào)整其上分布的的數(shù)目;第一工作節(jié)點(diǎn)和第二工作節(jié)點(diǎn)在接收到升級(jí)指令后,執(zhí)行升級(jí)指令所指示的操作,從而使得第一工作節(jié)點(diǎn)和第二工作節(jié)點(diǎn)上分布的以及之間的數(shù)據(jù)流走向得到調(diào)整。可以理解的是,第二工作節(jié)點(diǎn)調(diào)整其上分布的的數(shù)目具體可以是創(chuàng)建新的和/或刪除已創(chuàng)建的?2。
[0121]可選地,在一個(gè)具體的實(shí)施例中,如果待調(diào)整的包括待刪除的;則第二工作節(jié)點(diǎn)包括該待刪除的所在的工作節(jié)點(diǎn);第二升級(jí)指令用于指示該第二工作節(jié)點(diǎn)刪除該待刪除的
[0122]可選地,在另一個(gè)具體的實(shí)施例中,如果待調(diào)整的包括待新增的;則第二工作節(jié)點(diǎn)可以為主控節(jié)點(diǎn)根據(jù)流計(jì)算系統(tǒng)中各個(gè)工作節(jié)點(diǎn)的負(fù)載狀況選擇的工作節(jié)點(diǎn),也可以為主控節(jié)點(diǎn)隨機(jī)選擇的工作節(jié)點(diǎn);第二升級(jí)指令用于指示第二工作節(jié)點(diǎn)創(chuàng)建該待新增的?2。
[0123]具體到圖7和圖9所示的邏輯模型,如圖11所示,主控節(jié)點(diǎn)將新增?四指令發(fā)送給界01^61~2,將新增?210的指令發(fā)送給肌將新增?211和?211的指令發(fā)送給肌將新增?213的指令發(fā)送給恥1^61*6 ;將刪除?22、?23的指令發(fā)送給肌江匕。,將刪除?34、?26的指令發(fā)送給恥1^614 ;將刪除?22和?23之間流的指令發(fā)送給?22和?23初始所在的工作節(jié)點(diǎn)10461*3,將刪除?23和?26之間數(shù)據(jù)流的指令發(fā)送給?23所在的工作節(jié)點(diǎn)^01-1^61-3和?26所在的工作節(jié)點(diǎn)101^614 ;其余的指令以此類推,此處不再贅述。需要說(shuō)明的是,每個(gè)工作節(jié)點(diǎn)都維護(hù)了該工作節(jié)點(diǎn)上所有的數(shù)據(jù)流配置信息,每個(gè)的數(shù)據(jù)流配置信息包括源地址、目的地址、端口號(hào)等信息,因此對(duì)數(shù)據(jù)流的刪除和更新,實(shí)質(zhì)上是通過(guò)修改數(shù)據(jù)流配置信息來(lái)實(shí)現(xiàn)的。
[0124]如圖11所示,根據(jù)主控節(jié)點(diǎn)下發(fā)的升級(jí)指令,2新增了 ?29,肌3刪除了 ?22、?23,新增了 ?210,恥4 刪除了 ?26、?24,新增了 ?311,?212,恥 6 新增了 ?213 ;同時(shí),^01-1^61-1-6通過(guò)刪除流、新增流、更新流等操作,對(duì)之間的數(shù)據(jù)流走向也進(jìn)行了調(diào)整,具體而言:新增了 ?四-?213之間的流,刪除了 ?22、?23、?24和?26之間的流,將的輸出流的目的由改為?29 ;將?27的輸入流的源由?26改為?213。從圖11可以看出,調(diào)整之后的部署情況(包括的個(gè)數(shù)以及之間數(shù)據(jù)流的依賴關(guān)系)與流式應(yīng)用八更新后的邏輯模型相匹配。
[0125]進(jìn)一步的,由于在第一工作節(jié)點(diǎn)和第二工作節(jié)點(diǎn)對(duì)其上分布的以及之間的數(shù)據(jù)流進(jìn)行調(diào)整時(shí),可能會(huì)使正在處理的數(shù)據(jù)發(fā)生丟失,因此需要對(duì)數(shù)據(jù)進(jìn)行恢復(fù),具體地,在一個(gè)實(shí)施例中,該流式應(yīng)用升級(jí)方法還包括:
[0126]8804:主控節(jié)點(diǎn)根據(jù)與待調(diào)整的數(shù)據(jù)流相關(guān)的的輸入流和輸出流的依賴關(guān)系,確定需要進(jìn)行數(shù)據(jù)恢復(fù)的目標(biāo)和該目標(biāo)執(zhí)行數(shù)據(jù)恢復(fù)的檢查點(diǎn)0116(^13011^ ;向該目標(biāo)所在工作節(jié)點(diǎn)下發(fā)數(shù)據(jù)恢復(fù)指令,該數(shù)據(jù)恢復(fù)指令用于指示該目標(biāo)根據(jù)該01160^01111:恢復(fù)數(shù)據(jù);當(dāng)主控節(jié)點(diǎn)確定第一工作節(jié)點(diǎn)和第二工作節(jié)點(diǎn)完成調(diào)整,且第一工作節(jié)點(diǎn)和第二工作節(jié)點(diǎn)上分布的準(zhǔn)備就緒之后,主控節(jié)點(diǎn)觸發(fā)該目標(biāo)將恢復(fù)的數(shù)據(jù)輸入該目標(biāo)的下游進(jìn)行處理。需要說(shuō)明的是,主控節(jié)點(diǎn)可以通過(guò)主動(dòng)發(fā)送詢問(wèn)消息的方式感知流計(jì)算系統(tǒng)中各個(gè)工作節(jié)點(diǎn)上的狀態(tài),也可以由工作節(jié)點(diǎn)將自身分布的各個(gè)的狀態(tài)上報(bào)給主控節(jié)點(diǎn),的狀態(tài)包括:運(yùn)行狀態(tài)、就緒狀態(tài)和停止?fàn)顟B(tài);當(dāng)四與上下游的的通道建立成功,就表示出于就緒狀態(tài),可以接收數(shù)據(jù)流并進(jìn)行處理了。
[0127]在流式應(yīng)用更新或升級(jí)過(guò)程中,因?yàn)檎{(diào)整的部署需要涉及數(shù)據(jù)流的調(diào)整,而在對(duì)的部署進(jìn)行調(diào)整時(shí),可能有些數(shù)據(jù)正在處理,為了保證升級(jí)過(guò)程中數(shù)據(jù)不丟失,需要根據(jù)待調(diào)整的數(shù)據(jù)流相關(guān)的的的原始輸入流和輸出流的依賴關(guān)系,確定需要進(jìn)行數(shù)據(jù)恢復(fù)的目標(biāo)和所述目標(biāo)執(zhí)行數(shù)據(jù)恢復(fù)的檢查點(diǎn)0116(^1)01111:,以保證在應(yīng)用升級(jí)之前尚未被處理完畢的數(shù)據(jù)在升級(jí)完成之后能夠繼續(xù)被重新處理;其中,這里所說(shuō)的需要恢復(fù)的數(shù)據(jù),通常是指元組。
[0128]在一個(gè)具體的實(shí)施例中,如圖12所示,待調(diào)整的數(shù)據(jù)流相關(guān)的肫1,?22,?23,?24,?26,?27|組成的子邏輯模型的輸入/輸出關(guān)系如下:元組1廣12、13和14由?21輸入?22之后,經(jīng)?22處理之后得到元組匕、4、1?和^,然后元組匕、1^2、1?被輸入?已4進(jìn)行處理,得到叫,元組么被輸入?23進(jìn)行處理,得到1” ?26對(duì)叫處理之后得到02,對(duì)1工處理之后得到0工?;谏鲜鲚斎?輸出關(guān)系,可分析得到待調(diào)整的的輸入流和輸出流的依賴關(guān)系,如圖13所不:
[0129]依賴于?26的輸入1工,而1工依賴于又依賴于12,所以對(duì)于整個(gè)子邏輯模型而言,的輸出0工依賴于?22的輸入12 ;
[0130]02依賴于?26的輸入叫,而叫依賴于?24的輸入和、和1?又依賴于^、“和14,所以對(duì)于整個(gè)子邏輯模型而言,的輸出02依賴于?£2的輸入^、“和14。通過(guò)分析得出的上述依賴關(guān)系可知,?22,?23,?24和?26均依賴于?21的輸出,因此,當(dāng)?shù)谝还ぷ鞴?jié)點(diǎn)和第二工作節(jié)點(diǎn)對(duì)其上分布的以及之間的數(shù)據(jù)流進(jìn)行調(diào)整時(shí),?22,?23,?24和?26中尚有數(shù)據(jù)未被處理完畢,則需要對(duì)數(shù)據(jù)恢復(fù),即為目標(biāo)?2。
[0131]進(jìn)一步地,根據(jù)第一工作節(jié)點(diǎn)和第二工作節(jié)點(diǎn)對(duì)其上分布的以及之間的數(shù)據(jù)流進(jìn)行調(diào)整時(shí),待調(diào)整的數(shù)據(jù)流相關(guān)的備份的最新的狀態(tài)數(shù)據(jù),可以確定輸入待調(diào)整的數(shù)據(jù)流相關(guān)的的數(shù)據(jù)當(dāng)前是否已經(jīng)處理完畢并輸出給下游,進(jìn)而可以確定目標(biāo)執(zhí)行數(shù)據(jù)恢復(fù)的檢查點(diǎn)需要說(shuō)明的是,的狀態(tài)數(shù)據(jù)用于表示的處理數(shù)據(jù)狀態(tài),其具體包含的內(nèi)容是本領(lǐng)域技術(shù)人員熟知的,例如狀態(tài)數(shù)據(jù)可包括:元組接收隊(duì)列中的緩存數(shù)據(jù)、消息通道中的緩存數(shù)據(jù)、?2在處理自身接收隊(duì)列中的一個(gè)或多個(gè)普通元組的過(guò)程中產(chǎn)生的數(shù)據(jù)(比如當(dāng)前處理的普通元組的處理結(jié)果及中間過(guò)程數(shù)據(jù))中的一種或多種數(shù)據(jù)。需要說(shuō)明的是,由于新增數(shù)據(jù)流并不需要進(jìn)行數(shù)據(jù)恢復(fù),因此在確定執(zhí)行數(shù)據(jù)恢復(fù)的以及需要進(jìn)行數(shù)據(jù)恢復(fù)的目標(biāo)時(shí),不需要用到待新增數(shù)據(jù)流相關(guān)的的狀態(tài)信息,以及待新增數(shù)據(jù)流相關(guān)的的輸入流和輸出流的依賴關(guān)系。例如在一個(gè)實(shí)施例中,因此如果待調(diào)整的數(shù)據(jù)流中包括:待更新的數(shù)據(jù)流、待刪除的數(shù)據(jù)流和待新增的數(shù)據(jù)流,則只需要根據(jù)待更新的數(shù)據(jù)流以及待刪除的數(shù)據(jù)流相關(guān)的的狀態(tài)數(shù)據(jù),就可以確定執(zhí)行數(shù)據(jù)恢復(fù)的根據(jù)待更新的數(shù)據(jù)流以及待刪除的數(shù)據(jù)流相關(guān)的的輸入流和輸出流的依賴關(guān)系,確定需要進(jìn)行數(shù)據(jù)恢復(fù)的目標(biāo)?2;類似的,如果待調(diào)整的數(shù)據(jù)流中包括:待更新的數(shù)據(jù)流和待新增的數(shù)據(jù)流,則只需要根據(jù)待更新的數(shù)據(jù)流相關(guān)的的狀態(tài)數(shù)據(jù),以及待更新的數(shù)據(jù)流相關(guān)的的輸入流和輸出流的依賴關(guān)系,就可以確定執(zhí)行數(shù)據(jù)恢復(fù)的吐一土即丨社,以及需要進(jìn)行數(shù)據(jù)恢復(fù)的目標(biāo)?已。
[0132]需要說(shuō)明的是,在本發(fā)明的一個(gè)實(shí)施例中,?2的狀態(tài)數(shù)據(jù)是周期性備份的,即流計(jì)算系統(tǒng)周期性地觸發(fā)各個(gè)對(duì)自身的狀態(tài)數(shù)據(jù)進(jìn)行備份,在收到檢查點(diǎn)事件之后,進(jìn)行將自身當(dāng)前的狀態(tài)數(shù)據(jù)進(jìn)行備份,并記錄同時(shí)清理過(guò)期的數(shù)據(jù)。本領(lǐng)域技術(shù)人員可以理解的是,可以理解為數(shù)據(jù)備份的記錄點(diǎn)或者是備份數(shù)據(jù)的索引,一個(gè)對(duì)應(yīng)于一次數(shù)據(jù)備份操作,在不同的時(shí)候備份的數(shù)據(jù)具有不同的且通過(guò)可以查詢并得到在該下備份的數(shù)據(jù)。在本發(fā)明的另一個(gè)實(shí)施例中,可以使用輸出觸發(fā)機(jī)制(由輸出觸發(fā))來(lái)進(jìn)行狀態(tài)數(shù)據(jù)的備份,如圖14所示,當(dāng)完成對(duì)輸入流I即111^31:1*6211111-5的處理,并輸出處理結(jié)果011如1113廿6孤11時(shí),觸發(fā)模塊觸發(fā)狀態(tài)數(shù)據(jù)處理模塊,狀態(tài)數(shù)據(jù)處理模塊進(jìn)而啟動(dòng)新的01160^01111:記錄最新的狀態(tài)數(shù)據(jù)至內(nèi)存或磁盤,這樣的觸發(fā)方式精準(zhǔn)有效,相比于周期性觸發(fā)的方式,效率更好,可避免過(guò)多的資源消耗;進(jìn)一步地,狀態(tài)數(shù)據(jù)處理模塊還可以清理上一個(gè)0116(^1)01111:記錄的歷史數(shù)據(jù),從而減少中間數(shù)據(jù),有效節(jié)省存儲(chǔ)空間。
[0133]下面以圖12所示的情形為例,詳細(xì)說(shuō)明根據(jù)的輸入流和輸出流的依賴關(guān)系和狀態(tài)數(shù)據(jù)來(lái)確定需要進(jìn)行數(shù)據(jù)恢復(fù)的目標(biāo)和該目標(biāo)執(zhí)行數(shù)據(jù)恢復(fù)的檢查點(diǎn)0^60^0111^的過(guò)程:若根據(jù)待調(diào)整的數(shù)據(jù)流相關(guān)的丨?21,?22,?23,?24,?26,?27|的狀態(tài)數(shù)據(jù)判斷出輸入?£6尚未完成對(duì)元組叫的處理,或者對(duì)元組1111處理之后得到的02尚未送達(dá)?26的下游:?27,則根據(jù)上述輸入流和輸出流的依賴關(guān)系可以確定出:02所依賴的13和14需要被恢復(fù),且應(yīng)該由輸出13和14的四1來(lái)完成數(shù)據(jù)恢復(fù),即需要恢復(fù)數(shù)據(jù)的目標(biāo)?2為?21,從而可以確定出可以恢復(fù)出13和14的0116(^1)01111:。這樣,在第一工作節(jié)點(diǎn)和第二工作節(jié)點(diǎn)調(diào)整自身四的部署情況之前,目標(biāo)可以根據(jù)確定出的恢復(fù)數(shù)據(jù)^、^和14,且當(dāng)?shù)谝还ぷ鞴?jié)點(diǎn)和所述第二工作節(jié)點(diǎn)完成調(diào)整,且第一工作節(jié)點(diǎn)和第二工作節(jié)點(diǎn)上分布的準(zhǔn)備就緒之后,目標(biāo)重新將恢復(fù)的數(shù)據(jù)和14其下游進(jìn)行處理,從而確保升級(jí)過(guò)程中不會(huì)發(fā)生數(shù)據(jù)的丟失,達(dá)到無(wú)損升級(jí)的目的。
[0134]可選地,主控節(jié)點(diǎn)在執(zhí)行上述流式應(yīng)用升級(jí)方法步驟之前,還可以根據(jù)上述流式應(yīng)用的初始邏輯模型配置多個(gè)對(duì)流式應(yīng)用的數(shù)據(jù)進(jìn)行處理。
[0135]本發(fā)明實(shí)施例提供的流式應(yīng)用升級(jí)方法,通過(guò)對(duì)比流式應(yīng)用發(fā)生更新前后邏輯模型的差異,動(dòng)態(tài)確定待調(diào)整的數(shù)據(jù)流,并生成相應(yīng)的升級(jí)指令下發(fā)給工作節(jié)點(diǎn),以完成流式應(yīng)用的在線升級(jí),從而可以保證應(yīng)用升級(jí)過(guò)程中不需要中斷原先業(yè)務(wù);進(jìn)一步的,通過(guò)在升級(jí)的過(guò)程中對(duì)數(shù)據(jù)進(jìn)行恢復(fù),以確保不會(huì)造成關(guān)鍵數(shù)據(jù)丟失,影響業(yè)務(wù)運(yùn)行。
[0136]基于上述方法及系統(tǒng)實(shí)施例,本發(fā)明實(shí)施例還提供一種流計(jì)算系統(tǒng)中的主控節(jié)點(diǎn),該主控節(jié)點(diǎn)可以為一臺(tái)計(jì)算機(jī)或服務(wù)器;該流計(jì)算系統(tǒng)還包括至少一個(gè)工作節(jié)點(diǎn);假設(shè)該流計(jì)算系統(tǒng)上部署有流式應(yīng)用八,多個(gè)執(zhí)行單元$£)分布于上述至少一個(gè)工作節(jié)點(diǎn)中的一個(gè)或多個(gè)工作節(jié)點(diǎn)上,用于對(duì)流式應(yīng)用八的數(shù)據(jù)進(jìn)行處理,其中流式應(yīng)用八的邏輯模型用于表示處理該流式應(yīng)用的數(shù)據(jù)的多個(gè)以及該多個(gè)之間的數(shù)據(jù)流走向;假設(shè)流式應(yīng)用八的初始邏輯模型為01,當(dāng)流式應(yīng)用纟發(fā)生升級(jí)或更新后,其邏輯模型也相應(yīng)地發(fā)生更新(假設(shè)更新后的邏輯模型為02),如圖15所示,主控節(jié)點(diǎn)30包括:
[0137]獲取及確定模塊301,用于在流式應(yīng)用八發(fā)生更新的情況下,獲取流式應(yīng)用八更新后的邏輯模型02,并通過(guò)對(duì)比更新后的邏輯模型02以及初始邏輯模型01,以確定待調(diào)整的數(shù)據(jù)流;
[0138]升級(jí)指令生成模塊302,用于根據(jù)待調(diào)整的流,生成升級(jí)指令;
[0139]發(fā)送模塊303,用于將生成的升級(jí)指令下發(fā)給第一工作節(jié)點(diǎn),以使第一工作節(jié)點(diǎn)根據(jù)該升級(jí)指令的指示,調(diào)整第一工作節(jié)點(diǎn)上分布的之間的數(shù)據(jù)流走向;其中第一工作節(jié)點(diǎn)是流計(jì)算系統(tǒng)包含的工作節(jié)點(diǎn)中的一個(gè)或多個(gè)工作節(jié)點(diǎn),且第一工作節(jié)點(diǎn)是與待調(diào)整的數(shù)據(jù)流相關(guān)的所在的工作節(jié)點(diǎn)。
[0140]需要說(shuō)明的是,本發(fā)明實(shí)施例中的待調(diào)整的數(shù)據(jù)流可以為一條,也可以為多條,視具體的情況而定,而對(duì)于每條待調(diào)整的數(shù)據(jù)流來(lái)說(shuō),與其相關(guān)的具體是指該待調(diào)整的數(shù)據(jù)流的源和目的,其中,該待調(diào)整的數(shù)據(jù)流的源為輸出該待調(diào)整的數(shù)據(jù)流的?2,待調(diào)整的數(shù)據(jù)流的目的為接收該待調(diào)整的數(shù)據(jù)流的或該待調(diào)整的數(shù)據(jù)流的源的下游?2。
[0141]本發(fā)明實(shí)施例提供的流計(jì)算系統(tǒng)中的主控節(jié)點(diǎn),通過(guò)對(duì)比流式應(yīng)用發(fā)生更新前后邏輯模型的差異,動(dòng)態(tài)確定待調(diào)整的數(shù)據(jù)流,并根據(jù)待調(diào)整的數(shù)據(jù)流生成相應(yīng)的升級(jí)指令下發(fā)給工作節(jié)點(diǎn),從而在不需要中斷業(yè)務(wù)的情況下,實(shí)現(xiàn)流計(jì)算系統(tǒng)中流式應(yīng)用的在線升級(jí)。
[0142]進(jìn)一步地,根據(jù)更新后的邏輯模型與初始的邏輯模型的差異的類型,獲取及確定模塊301的在具體的處理細(xì)節(jié)上也存在一定差異。例如,在一個(gè)優(yōu)選的實(shí)施例中,獲取及比較模塊301具體用于:
[0143]比較流式應(yīng)用八的初始邏輯模型以及所述更新后的邏輯模型,以確定待調(diào)整的數(shù)據(jù)流,其中流式應(yīng)用八的初始邏輯模型01所表示的與更新后的邏輯模型02所表示的相同。
[0144]在另一個(gè)優(yōu)選的實(shí)施例中,獲取及比較模塊301具體用于:比較初始邏輯模型01以及更新后的邏輯模型02,以確定待調(diào)整的以及待調(diào)整的數(shù)據(jù)流,其中流式應(yīng)用八的初始邏輯模型01所表示的與更新后的邏輯模型02所表示的不完全相同。相應(yīng)地,在這種情況下,升級(jí)指令生成模塊302具體用于,根據(jù)獲取及比較模塊301確定的待調(diào)整的數(shù)據(jù)流,生成第一升級(jí)指令;根據(jù)獲取及比較模塊301確定的待調(diào)整的生成第二升級(jí)指令;發(fā)送模塊303具體用于:將:第一升級(jí)指令下發(fā)給第一工作節(jié)點(diǎn),將第二升級(jí)指令下發(fā)給第二工作節(jié)點(diǎn),其中第二工作節(jié)點(diǎn)包括待調(diào)整的所在的工作節(jié)點(diǎn),第一升級(jí)指令用于指示第一工作節(jié)點(diǎn)調(diào)整其上分布的之間的數(shù)據(jù)流走向,第二升級(jí)指令用于指示第二工作節(jié)點(diǎn)調(diào)整其上分布的的數(shù)目。
[0145]進(jìn)一步地,在一個(gè)優(yōu)選的實(shí)施例中,主控節(jié)點(diǎn)30還包括:
[0146]數(shù)據(jù)恢復(fù)模塊304,用于根據(jù)與待調(diào)整的數(shù)據(jù)流相關(guān)的的輸入流和輸出流的依賴關(guān)系,確定需要進(jìn)行數(shù)據(jù)恢復(fù)的目標(biāo)和該目標(biāo)執(zhí)行數(shù)據(jù)恢復(fù)的0116(^13011^ ;
[0147]發(fā)送模塊303還用于,在數(shù)據(jù)恢復(fù)模塊304確定出目標(biāo)和也況虹乂的之后,向所述目標(biāo)所在工作節(jié)點(diǎn)下發(fā)數(shù)據(jù)恢復(fù)指令,所述數(shù)據(jù)恢復(fù)指令用于指示所述目標(biāo)根據(jù)所述也?虹乂#恢復(fù)數(shù)據(jù);可以理解的是,該數(shù)據(jù)恢復(fù)指令是根據(jù)數(shù)據(jù)恢復(fù)模塊304確定出的目標(biāo)和中來(lái)構(gòu)造的,其包含有指示該的信息。
[0148]相應(yīng)地,主控節(jié)點(diǎn)30還包括:輸入觸發(fā)模塊305,用于當(dāng)確定第一工作節(jié)點(diǎn)完成調(diào)整,且第一工作節(jié)點(diǎn)上分布的均準(zhǔn)備就緒之后,觸發(fā)數(shù)據(jù)恢復(fù)模塊304確定出的目標(biāo)將恢復(fù)的數(shù)據(jù)輸入所述目標(biāo)的下游進(jìn)行處理。
[0149]本發(fā)明實(shí)施例提供的流計(jì)算系統(tǒng)中的主控節(jié)點(diǎn),通過(guò)對(duì)比流式應(yīng)用發(fā)生更新前后邏輯模型的差異,動(dòng)態(tài)確定待調(diào)整的數(shù)據(jù)流,并生成相應(yīng)的升級(jí)指令下發(fā)給工作節(jié)點(diǎn),以完成流式應(yīng)用的在線升級(jí),從而可以保證應(yīng)用升級(jí)過(guò)程中不需要中斷原先業(yè)務(wù);進(jìn)一步的,由于在升級(jí)的過(guò)程中對(duì)數(shù)據(jù)進(jìn)行了恢復(fù),因此不會(huì)造成關(guān)鍵數(shù)據(jù)丟失,影響業(yè)務(wù)運(yùn)行。
[0150]本發(fā)明提供的流計(jì)算系統(tǒng)中的主控節(jié)點(diǎn)用于實(shí)施上述方法實(shí)施例中的流式應(yīng)用升級(jí)方法,其具體實(shí)現(xiàn)細(xì)節(jié),可以參照上述方法實(shí)施例,此處不再贅述。
[0151]本發(fā)明實(shí)施例還提供一種流計(jì)算系統(tǒng),用于實(shí)現(xiàn)本發(fā)明實(shí)施例提供的流式應(yīng)用升級(jí)方法,如圖16所示,該流計(jì)算系統(tǒng)包括:主控節(jié)點(diǎn)30和至少一個(gè)工作節(jié)點(diǎn)(如圖16中的工作節(jié)點(diǎn)31-34);主控節(jié)點(diǎn)30根據(jù)流式應(yīng)用的初始邏輯模型配置多個(gè)執(zhí)行單元$£)來(lái)對(duì)該流式應(yīng)用的數(shù)據(jù)流進(jìn)行處理,流式應(yīng)用的初始邏輯模型用于表示處理所述流式應(yīng)用的數(shù)據(jù)的多個(gè)以及該多個(gè)之間的數(shù)據(jù)流走向;其中,如圖16所示,配置的多個(gè)分布于一個(gè)或多個(gè)工作節(jié)點(diǎn)上;主控節(jié)點(diǎn)30用于:在流式應(yīng)用八發(fā)生更新的情況下,獲取流式應(yīng)用更新后的邏輯模型,并通過(guò)對(duì)比更新后的邏輯模型以及初始邏輯模型,以確定待調(diào)整的數(shù)據(jù)流;根據(jù)待調(diào)整的流,生成升級(jí)指令;將生成的升級(jí)指令下發(fā)給第一工作節(jié)點(diǎn),其中第一工作節(jié)點(diǎn)是該流計(jì)算系統(tǒng)包含的工作節(jié)點(diǎn)中的一個(gè)或多個(gè)工作節(jié)點(diǎn),且第一工作節(jié)點(diǎn)是與待調(diào)整的數(shù)據(jù)流相關(guān)的所在的工作節(jié)點(diǎn)。
[0152]第一工作節(jié)點(diǎn),用于接收主控節(jié)點(diǎn)30發(fā)送的升級(jí)指令,根據(jù)該升級(jí)指令的指示,調(diào)整第一工作節(jié)點(diǎn)上分布的之間的數(shù)據(jù)流走向。
[0153]本發(fā)明實(shí)施例提供的流計(jì)算系統(tǒng),通過(guò)對(duì)比流式應(yīng)用發(fā)生更新前后邏輯模型的差異,動(dòng)態(tài)確定待調(diào)整的數(shù)據(jù)流,并生成相應(yīng)的升級(jí)指令下發(fā)給工作節(jié)點(diǎn),以完成流式應(yīng)用的在線升級(jí),從而可以保證應(yīng)用升級(jí)過(guò)程中不需要中斷原先業(yè)務(wù)。
[0154]具體地,在一個(gè)實(shí)施例中,升級(jí)指令包括:新增指令、刪除指令、更新流指令、刪除流指令或新增流指令中的至少一個(gè)。相應(yīng)地,第一工作節(jié)點(diǎn)在接收到升級(jí)指令后執(zhí)行:新增執(zhí)行單元、刪除執(zhí)行單元、更新流、刪除流或新增流中的至少一項(xiàng)操作,使得執(zhí)行上述操作之后的部署情況(包括的個(gè)數(shù)以及之間數(shù)據(jù)流的依賴關(guān)系)與流式應(yīng)用八更新后的邏輯模型相匹配。
[0155]優(yōu)選地,在一個(gè)實(shí)施例中,主控節(jié)點(diǎn)具體用于:比較流式應(yīng)用的初始邏輯模型以及所述更新后的邏輯模型,以確定待調(diào)整的數(shù)據(jù)流,其中流式應(yīng)用的初始邏輯模型所表示的
與更新后的邏輯模型所表示的相同。
[0156]優(yōu)選地,在另一個(gè)實(shí)施例中,主控節(jié)點(diǎn)具體用于:比較流式應(yīng)用的初始邏輯模型以及更新后的邏輯模型,以確定待調(diào)整的以及待調(diào)整的數(shù)據(jù)流,其中流式應(yīng)用的初始邏輯模型所表示的與更新后的邏輯模型所表示的不完全相同;根據(jù)待調(diào)整的數(shù)據(jù)流,生成第一升級(jí)指令;根據(jù)待調(diào)整的生成第二升級(jí)指令;將第一升級(jí)指令下發(fā)給第一工作節(jié)點(diǎn),將第二升級(jí)指令下發(fā)給第二工作節(jié)點(diǎn);其中,第一工作節(jié)點(diǎn)是與待調(diào)整的數(shù)據(jù)流相關(guān)的
所在的工作節(jié)點(diǎn),第二工作節(jié)點(diǎn)包括待調(diào)整的所在的工作節(jié)點(diǎn)。相應(yīng)地,第一工作節(jié)點(diǎn)具體用于,接收主控節(jié)點(diǎn)30發(fā)送的第一升級(jí)指令,根據(jù)第一升級(jí)指令的指示,調(diào)整第一工作節(jié)點(diǎn)上分布的之間的數(shù)據(jù)流走向;第二工作節(jié)點(diǎn)用于,接收主控節(jié)點(diǎn)30發(fā)送的第二升級(jí)指令,根據(jù)第二升級(jí)指令的指示,調(diào)整第二工作節(jié)點(diǎn)上分布的的數(shù)目。
[0157]優(yōu)選地,在另一個(gè)實(shí)施例中,主控節(jié)點(diǎn)30還用于,根據(jù)與待調(diào)整的數(shù)據(jù)流相關(guān)的的輸入流和輸出流的依賴關(guān)系,確定需要進(jìn)行數(shù)據(jù)恢復(fù)的目標(biāo)和該目標(biāo)執(zhí)行數(shù)據(jù)恢復(fù)的檢查點(diǎn)0116(^1)01111:;向該目標(biāo)所在工作節(jié)點(diǎn)下發(fā)數(shù)據(jù)恢復(fù)指令,該數(shù)據(jù)恢復(fù)指令用于指示該目標(biāo)根據(jù)該也60虹01社恢復(fù)數(shù)據(jù);當(dāng)確定第一工作節(jié)點(diǎn)完成調(diào)整,且第一工作節(jié)點(diǎn)上分布的均準(zhǔn)備就緒之后,觸發(fā)該目標(biāo)將恢復(fù)的數(shù)據(jù)輸入該目標(biāo)的下游進(jìn)行處理。
[0158]需要說(shuō)明的是,本發(fā)明提供的流計(jì)算系統(tǒng)用于實(shí)施上述方法實(shí)施例這種的流式應(yīng)用升級(jí)方法,其具體實(shí)現(xiàn)細(xì)節(jié),可以參照上述方法實(shí)施例,此處不再贅述。本發(fā)明實(shí)施例中的執(zhí)行單元$£)可以以軟件形態(tài)存在,例如進(jìn)程、線程或軟件功能模塊,也可以以硬件的形態(tài)存在,比如處理器核,或具有數(shù)據(jù)處理能力的邏輯電路等,通過(guò)讀取存儲(chǔ)器中的可執(zhí)行代碼或業(yè)務(wù)處理邏輯,實(shí)現(xiàn)本發(fā)明實(shí)施例所描述的功能,本發(fā)明不做特別限定。
[0159]本發(fā)明實(shí)施例還提供一種流計(jì)算系統(tǒng)中的主控節(jié)點(diǎn),該主控節(jié)點(diǎn)可以為一臺(tái)計(jì)算機(jī)或服務(wù)器。圖17是本發(fā)明實(shí)施例提供的主控節(jié)點(diǎn)40的結(jié)構(gòu)示意圖。主控節(jié)點(diǎn)40可包括輸入設(shè)備410、輸出設(shè)備420、處理器430和存儲(chǔ)器440。
[0160]本發(fā)明實(shí)施例提供的主控節(jié)點(diǎn)40應(yīng)用于流計(jì)算系統(tǒng),所述流計(jì)算系統(tǒng)還包括工作節(jié)點(diǎn),所述流計(jì)算系統(tǒng)部署有流式應(yīng)用。
[0161]存儲(chǔ)器440可以包括只讀存儲(chǔ)器和隨機(jī)存取存儲(chǔ)器,并向處理器430提供指令和數(shù)據(jù)。存儲(chǔ)器440的一部分還可以包括非易失性隨機(jī)存取存儲(chǔ)器(附狀的。
[0162]存儲(chǔ)器440存儲(chǔ)了操作指令、操作系統(tǒng)(包括各種系統(tǒng)程序,用于實(shí)現(xiàn)各種基礎(chǔ)業(yè)務(wù)以及處理基于硬件的任務(wù))、可執(zhí)行模塊或者數(shù)據(jù)結(jié)構(gòu),或者它們的子集,或者它們的擴(kuò)展集。
[0163]在本發(fā)明實(shí)施例中,當(dāng)該流式應(yīng)用發(fā)生更新后,處理器430通過(guò)調(diào)用存儲(chǔ)器440存儲(chǔ)的操作指令(該操作指令可存儲(chǔ)在操作系統(tǒng)中),執(zhí)行如下操作:
[0164]通過(guò)輸入設(shè)備410獲取該流式應(yīng)用更新后的邏輯模型,通過(guò)對(duì)比更新后的邏輯模型以及初始邏輯模型,以確定待調(diào)整的數(shù)據(jù)流;根據(jù)待調(diào)整的流,生成升級(jí)指令;將生成的升級(jí)指令下發(fā)給第一工作節(jié)點(diǎn),其中第一工作節(jié)點(diǎn)是該流計(jì)算系統(tǒng)包含的工作節(jié)點(diǎn)中的一個(gè)或多個(gè)工作節(jié)點(diǎn),且第一工作節(jié)點(diǎn)是與待調(diào)整的數(shù)據(jù)流相關(guān)的所在的工作節(jié)點(diǎn)。
[0165]本發(fā)明實(shí)施例提供的主控節(jié)點(diǎn),對(duì)比流式應(yīng)用發(fā)生更新前后邏輯模型的差異,動(dòng)態(tài)確定待調(diào)整的數(shù)據(jù)流,并生成相應(yīng)的升級(jí)指令下發(fā)給工作節(jié)點(diǎn),以完成流式應(yīng)用的在線升級(jí),從而可以保證應(yīng)用升級(jí)過(guò)程中不需要中斷原先業(yè)務(wù)。
[0166]處理器430控制業(yè)務(wù)處理的裝置40的操作,處理器430還可以稱為?1~006881118 中央處理單元)。存儲(chǔ)器440可以包括只讀存儲(chǔ)器和隨機(jī)存取存儲(chǔ)器,并向處理器430提供指令和數(shù)據(jù)。存儲(chǔ)器440的一部分還可以包括非易失性隨機(jī)存取存儲(chǔ)器(附狀1)。具體的應(yīng)用中,業(yè)務(wù)處理的裝置40的各個(gè)組件通過(guò)總線系統(tǒng)450耦合在一起,其中總線系統(tǒng)450除包括數(shù)據(jù)總線之外,還可以包括電源總線、控制總線和狀態(tài)信號(hào)總線等。但是為了清楚說(shuō)明起見(jiàn),在圖中將各種總線都標(biāo)為總線系統(tǒng)450。
[0167]上述本發(fā)明實(shí)施例揭示的方法可以應(yīng)用于處理器430中,或者由處理器430實(shí)現(xiàn)。處理器430可能是一種集成電路芯片,具有信號(hào)的處理能力。在實(shí)現(xiàn)過(guò)程中,上述方法的各步驟可以通過(guò)處理器430中的硬件的集成邏輯電路或者軟件形式的指令完成。上述的處理器430可以是通用處理器、數(shù)字信號(hào)處理器(039)、專用集成電路(八310、現(xiàn)成可編程門陣列(沖以)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件??梢詫?shí)現(xiàn)或者執(zhí)行本發(fā)明實(shí)施例中的公開(kāi)的各方法、步驟及邏輯框圖。通用處理器可以是微處理器或者該處理器也可以是任何常規(guī)的處理器等。結(jié)合本發(fā)明實(shí)施例所公開(kāi)的方法的步驟可以直接體現(xiàn)為硬件譯碼處理器執(zhí)行完成,或者用譯碼處理器中的硬件及軟件模塊組合執(zhí)行完成。軟件模塊可以位于隨機(jī)存儲(chǔ)器,閃存、只讀存儲(chǔ)器,可編程只讀存儲(chǔ)器或者電可擦寫可編程存儲(chǔ)器、寄存器等本領(lǐng)域成熟的存儲(chǔ)介質(zhì)中。該存儲(chǔ)介質(zhì)位于存儲(chǔ)器440,處理器430讀取存儲(chǔ)器440中的信息,結(jié)合其硬件完成上述方法的步驟。
[0168]應(yīng)該理解,在本申請(qǐng)所提供的幾個(gè)實(shí)施例所揭露數(shù)據(jù)備份和流計(jì)算系統(tǒng)還可以通過(guò)其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的。
[0169]所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。
[0170]另外,在本發(fā)明各個(gè)實(shí)施例提供的網(wǎng)絡(luò)設(shè)備中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
[0171]所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括山盤、移動(dòng)硬盤、只讀存儲(chǔ)器
、隨機(jī)存取存儲(chǔ)器^00688、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
[0172]最后應(yīng)說(shuō)明的是:以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。
【權(quán)利要求】
1.一種流式應(yīng)用升級(jí)方法,其特征在于,應(yīng)用于流計(jì)算系統(tǒng)中的主控節(jié)點(diǎn),所述流計(jì)算系統(tǒng)包括所述主控節(jié)點(diǎn)和至少一個(gè)工作節(jié)點(diǎn),其中,多個(gè)執(zhí)行單元PE分布于所述至少一個(gè)工作節(jié)點(diǎn)中的一個(gè)或多個(gè)工作節(jié)點(diǎn)上,用于對(duì)所述流計(jì)算系統(tǒng)上部署的流式應(yīng)用的數(shù)據(jù)進(jìn)行處理,其中所述流式應(yīng)用的初始邏輯模型用于表示處理所述流式應(yīng)用的數(shù)據(jù)的所述多個(gè)PE以及所述多個(gè)PE之間的數(shù)據(jù)流走向;所述方法包括: 在所述流式應(yīng)用更新的情況下,所述主控節(jié)點(diǎn)獲取所述流式應(yīng)用更新后的邏輯模型,并通過(guò)比較所述流式應(yīng)用的初始邏輯模型以及所述更新后的邏輯模型,確定待調(diào)整的數(shù)據(jù)流; 根據(jù)所述待調(diào)整的數(shù)據(jù)流,生成升級(jí)指令; 將所述升級(jí)指令下發(fā)給第一工作節(jié)點(diǎn),所述第一工作節(jié)點(diǎn)是與所述待調(diào)整的數(shù)據(jù)流相關(guān)的PE所在的工作節(jié)點(diǎn),所述升級(jí)指令用于指示所述第一工作節(jié)點(diǎn)調(diào)整所述第一工作節(jié)點(diǎn)上分布的PE之間的數(shù)據(jù)流走向。
2.根據(jù)權(quán)利要求1所述的升級(jí)方法,其特征在于,所述比較所述流式應(yīng)用的初始邏輯模型以及所述更新后的邏輯模型,確定待調(diào)整的數(shù)據(jù)流包括: 比較所述流式應(yīng)用的初始邏輯模型以及所述更新后的邏輯模型,以確定所述待調(diào)整的數(shù)據(jù)流,其中所述流式應(yīng)用的初始邏輯模型所表示的PE與所述更新后的邏輯模型所表示的PE相同。
3.根據(jù)權(quán)利要求1所述的升級(jí)方法,其特征在于,所述通過(guò)比較所述流式應(yīng)用的初始邏輯模型以及所述更新后的邏輯模型,確定待調(diào)整的數(shù)據(jù)流包括: 比較所述流式應(yīng)用的初始邏輯模型以及所述更新后的邏輯模型,以確定待調(diào)整的PE以及所述待調(diào)整的數(shù)據(jù)流,其中所述流式應(yīng)用的初始邏輯模型所表示的PE與所述更新后的邏輯模型所表示的PE不完全相同; 所述根據(jù)所述待調(diào)整的數(shù)據(jù)流,生成升級(jí)指令包括: 根據(jù)所述待調(diào)整的數(shù)據(jù)流,生成第一升級(jí)指令;根據(jù)所述待調(diào)整的PE生成第二升級(jí)指令; 所述將所述升級(jí)指令下發(fā)給第一工作節(jié)點(diǎn)包括: 將所述第一升級(jí)指令下發(fā)給所述第一工作節(jié)點(diǎn),將所述第二升級(jí)指令下發(fā)給第二工作節(jié)點(diǎn),所述第二工作節(jié)點(diǎn)包括所述待調(diào)整的PE所在的工作節(jié)點(diǎn);所述第一升級(jí)指令用于指示所述第一工作節(jié)點(diǎn)調(diào)整所述第一工作節(jié)點(diǎn)上分布的PE之間的數(shù)據(jù)流走向,所述第二升級(jí)指令用于指示所述第二工作節(jié)點(diǎn)調(diào)整所述第二工作節(jié)點(diǎn)上分布的PE的數(shù)目。
4.根據(jù)權(quán)利要求1-3任一項(xiàng)所述的升級(jí)方法,其特征在于,還包括: 所述主控節(jié)點(diǎn)根據(jù)與所述待調(diào)整的數(shù)據(jù)流相關(guān)的PE的輸入流和輸出流的依賴關(guān)系,確定需要進(jìn)行數(shù)據(jù)恢復(fù)的目標(biāo)PE和所述目標(biāo)PE執(zhí)行數(shù)據(jù)恢復(fù)的檢查點(diǎn)checkpoint ; 向所述目標(biāo)PE所在工作節(jié)點(diǎn)下發(fā)數(shù)據(jù)恢復(fù)指令,所述數(shù)據(jù)恢復(fù)指令用于指示所述目標(biāo)PE根據(jù)所述checkpoint恢復(fù)數(shù)據(jù); 當(dāng)確定所述第一工作節(jié)點(diǎn)完成調(diào)整,且所述第一工作節(jié)點(diǎn)上分布的PE準(zhǔn)備就緒之后,所述主控節(jié)點(diǎn)觸發(fā)所述目標(biāo)PE將恢復(fù)的數(shù)據(jù)輸入所述目標(biāo)PE的下游PE進(jìn)行處理。
5.根據(jù)權(quán)利要求4所述的升級(jí)方法,其特征在于,所述待調(diào)整的數(shù)據(jù)流包括:待更新的數(shù)據(jù)流和待刪除的數(shù)據(jù)流;所述主控節(jié)點(diǎn)根據(jù)與所述待調(diào)整的數(shù)據(jù)流相關(guān)的PE的輸入流和輸出流的依賴關(guān)系,確定需要進(jìn)行數(shù)據(jù)恢復(fù)的目標(biāo)PE和所述目標(biāo)PE執(zhí)行數(shù)據(jù)恢復(fù)的檢查點(diǎn)checkpoint,包括: 所述主控節(jié)點(diǎn)根據(jù)與所述待更新的數(shù)據(jù)流和待刪除的數(shù)據(jù)流相關(guān)的PE的狀態(tài)數(shù)據(jù),確定執(zhí)行數(shù)據(jù)恢復(fù)的checkpoint ;根據(jù)與所述待更新的數(shù)據(jù)流和待刪除的數(shù)據(jù)流相關(guān)的PE的輸入流和輸出流的依賴關(guān)系,確定需要進(jìn)行數(shù)據(jù)恢復(fù)的目標(biāo)PE ;其中,每個(gè)PE的狀態(tài)數(shù)據(jù)是該P(yáng)E在輸出事件的觸發(fā)下備份的,用于指示該P(yáng)E處理數(shù)據(jù)的狀態(tài)。
6.根據(jù)權(quán)利要求3至5任一項(xiàng)所述的升級(jí)方法,其特征在于,所述待調(diào)整的PE包括待新增的PE ;所述第二工作節(jié)點(diǎn)為所述主控節(jié)點(diǎn)根據(jù)所述流計(jì)算系統(tǒng)中各個(gè)工作節(jié)點(diǎn)的負(fù)載狀況選擇的工作節(jié)點(diǎn);所述第二升級(jí)指令用于指示所述第二工作節(jié)點(diǎn)創(chuàng)建所述待新增的PE0
7.根據(jù)權(quán)利要求3至6任一項(xiàng)所述的升級(jí)方法,其特征在于,所述待調(diào)整的PE包括待刪除的PE ;所述第二工作節(jié)點(diǎn)為所述待刪除的PE所在的工作節(jié)點(diǎn);所述第二升級(jí)指令用于指示所述第二工作節(jié)點(diǎn)刪除所述待刪除的PE。
8.根據(jù)權(quán)利要求1至7任一項(xiàng)所述的升級(jí)方法,其特征在于,還包括: 根據(jù)所述流式應(yīng)用的初始邏輯模型配置所述多個(gè)PE對(duì)所述流式應(yīng)用的數(shù)據(jù)進(jìn)行處理。
9.根據(jù)權(quán)利要求1至8任一項(xiàng)所述的升級(jí)方法,其特征在于,所述流式應(yīng)用的初始邏輯模型是用有向無(wú)環(huán)圖DAG表示的。
10.一種流計(jì)算系統(tǒng)中的主控節(jié)點(diǎn),其特征在于,所述流計(jì)算系統(tǒng)包括所述主控節(jié)點(diǎn)和至少一個(gè)工作節(jié)點(diǎn);其中,多個(gè)執(zhí)行單元PE分布于所述至少一個(gè)工作節(jié)點(diǎn)中的一個(gè)或多個(gè)工作節(jié)點(diǎn)上,用于對(duì)所述流計(jì)算系統(tǒng)上部署的流式應(yīng)用的數(shù)據(jù)進(jìn)行處理,其中所述流式應(yīng)用的初始邏輯模型用于表示處理所述流式應(yīng)用的數(shù)據(jù)的所述多個(gè)PE以及所述多個(gè)PE之間的數(shù)據(jù)流走向;所述主控節(jié)點(diǎn)包括: 獲取及比較模塊,用于在所述流式應(yīng)用更新的情況下,獲取所述流式應(yīng)用更新后的邏輯模型,并通過(guò)比較所述流式應(yīng)用的初始邏輯模型以及所述更新后的邏輯模型,確定待調(diào)整的數(shù)據(jù)流; 升級(jí)指令生成模塊,用于根據(jù)所述待調(diào)整的數(shù)據(jù)流,生成升級(jí)指令; 發(fā)送模塊,用于將所述升級(jí)指令下發(fā)給第一工作節(jié)點(diǎn),所述第一工作節(jié)點(diǎn)是與所述待調(diào)整的數(shù)據(jù)流相關(guān)的PE所在的工作節(jié)點(diǎn),所述升級(jí)指令用于指示所述第一工作節(jié)點(diǎn)調(diào)整所述第一工作節(jié)點(diǎn)上分布的PE之間的數(shù)據(jù)流走向。
11.根據(jù)權(quán)利要求10所述的主控節(jié)點(diǎn),其特征在于,所述獲取及比較模塊具體用于: 比較所述流式應(yīng)用的初始邏輯模型以及所述更新后的邏輯模型,以確定所述待調(diào)整的數(shù)據(jù)流,其中所述流式應(yīng)用的初始邏輯模型所表示的PE與所述更新后的邏輯模型所表示的PE相同。
12.根據(jù)權(quán)利要求10所述的主控節(jié)點(diǎn),其特征在于,所述獲取及比較模塊具體用于匕較所述流式應(yīng)用的初始邏輯模型以及所述更新后的邏輯模型,以確定待調(diào)整的PE以及所述待調(diào)整的數(shù)據(jù)流,其中所述流式應(yīng)用的初始邏輯模型所表示的PE與所述更新后的邏輯模型所表示的PE不完全相同; 所述升級(jí)指令生成模塊具體用于,根據(jù)所述待調(diào)整的數(shù)據(jù)流,生成第一升級(jí)指令;根據(jù)所述待調(diào)整的PE生成第二升級(jí)指令; 所述發(fā)送模塊具體用于,將所述第一升級(jí)指令下發(fā)給所述第一工作節(jié)點(diǎn),將所述第二升級(jí)指令下發(fā)給第二工作節(jié)點(diǎn),所述第二工作節(jié)點(diǎn)包括所述待調(diào)整的PE所在的工作節(jié)點(diǎn);所述第一升級(jí)指令用于指示所述第一工作節(jié)點(diǎn)調(diào)整所述第一工作節(jié)點(diǎn)上分布的PE之間的數(shù)據(jù)流走向,所述第二升級(jí)指令用于指示所述第二工作節(jié)點(diǎn)調(diào)整所述第二工作節(jié)點(diǎn)上分布的PE的數(shù)目。
13.根據(jù)權(quán)利要求10至13任一項(xiàng)所述的主控節(jié)點(diǎn),其特征在于,還包括: 數(shù)據(jù)恢復(fù)模塊,用于根據(jù)與所述待調(diào)整的數(shù)據(jù)流相關(guān)的PE的輸入流和輸出流的依賴關(guān)系,確定需要進(jìn)行數(shù)據(jù)恢復(fù)的目標(biāo)PE和所述目標(biāo)PE執(zhí)行數(shù)據(jù)恢復(fù)的檢查點(diǎn)checkpoint ; 所述發(fā)送模塊還用于,向所述目標(biāo)PE所在工作節(jié)點(diǎn)下發(fā)數(shù)據(jù)恢復(fù)指令,所述數(shù)據(jù)恢復(fù)指令用于指示所述目標(biāo)PE根據(jù)所述checkpoint恢復(fù)數(shù)據(jù); 所述主控節(jié)點(diǎn)還包括:輸入觸發(fā)模塊,用于當(dāng)確定所述第一工作節(jié)點(diǎn)完成調(diào)整,且所述第一工作節(jié)點(diǎn)上分布的PE準(zhǔn)備就緒之后,觸發(fā)所述目標(biāo)PE將恢復(fù)的數(shù)據(jù)輸入所述目標(biāo)PE的下游PE進(jìn)行處理。
14.根據(jù)權(quán)利要求13所述的主控節(jié)點(diǎn),其特征在于,所述待調(diào)整的數(shù)據(jù)流包括:待更新的數(shù)據(jù)流和待刪除的數(shù)據(jù)流;所述數(shù)據(jù)恢復(fù)模塊具體用于: 所述主控節(jié)點(diǎn)根據(jù)與所述待更新的數(shù)據(jù)流和待刪除的數(shù)據(jù)流相關(guān)的PE的狀態(tài)數(shù)據(jù),確定執(zhí)行數(shù)據(jù)恢復(fù)的checkpoint ;根據(jù)與所述待更新的數(shù)據(jù)流和待刪除的數(shù)據(jù)流相關(guān)的PE的輸入流和輸出流的依賴關(guān)系,確定需要進(jìn)行數(shù)據(jù)恢復(fù)的目標(biāo)PE ;其中,每個(gè)PE的狀態(tài)數(shù)據(jù)是該P(yáng)E在輸出事件的觸發(fā)下備份的,用于指示該P(yáng)E處理數(shù)據(jù)的狀態(tài)。
15.根據(jù)權(quán)利要求12至14任一項(xiàng)所述的主控節(jié)點(diǎn),其特征在于,所述待調(diào)整的PE包括待刪除的PE ;所述第二工作節(jié)點(diǎn)為所述待刪除的PE所在的工作節(jié)點(diǎn);所述第二升級(jí)指令用于指示所述第二工作節(jié)點(diǎn)刪除所述待刪除的PE。
16.根據(jù)權(quán)利要求12至15任一項(xiàng)所述的主控節(jié)點(diǎn),其特征在于,所述待調(diào)整的PE包括待新增的PE ;所述第二工作節(jié)點(diǎn)為所述主控節(jié)點(diǎn)根據(jù)所述流計(jì)算系統(tǒng)中各個(gè)工作節(jié)點(diǎn)的負(fù)載狀況選擇的工作節(jié)點(diǎn);所述第二升級(jí)指令用于指示所述第二工作節(jié)點(diǎn)創(chuàng)建所述待新增的PE。
17.一種流計(jì)算系統(tǒng),其特征在于,包括:主控節(jié)點(diǎn)和至少一個(gè)工作節(jié)點(diǎn),其中,多個(gè)執(zhí)行單元PE分布于所述至少一個(gè)工作節(jié)點(diǎn)中的一個(gè)或多個(gè)工作節(jié)點(diǎn)上,用于對(duì)所述流計(jì)算系統(tǒng)上部署的流式應(yīng)用的數(shù)據(jù)進(jìn)行處理,其中所述流式應(yīng)用的初始邏輯模型用于表示處理所述流式應(yīng)用的數(shù)據(jù)的所述多個(gè)PE以及所述多個(gè)PE之間的數(shù)據(jù)流走向; 所述主控節(jié)點(diǎn)用于:在所述流式應(yīng)用更新的情況下,獲取所述流式應(yīng)用更新后的邏輯模型,并通過(guò)比較所述流式應(yīng)用的初始邏輯模型以及所述更新后的邏輯模型,確定待調(diào)整的數(shù)據(jù)流;根據(jù)所述待調(diào)整的數(shù)據(jù)流,生成升級(jí)指令;將所述升級(jí)指令下發(fā)給第一工作節(jié)點(diǎn),所述第一工作節(jié)點(diǎn)是與所述待調(diào)整的數(shù)據(jù)流相關(guān)的PE所在的工作節(jié)點(diǎn),所述升級(jí)指令用于指示所述第一工作節(jié)點(diǎn)調(diào)整所述第一工作節(jié)點(diǎn)上分布的PE之間的數(shù)據(jù)流走向; 所述第一工作節(jié)點(diǎn),用于接收所述主控節(jié)點(diǎn)發(fā)送的升級(jí)指令,根據(jù)所述升級(jí)指令的指示,調(diào)整所述第一工作節(jié)點(diǎn)上分布的PE之間的數(shù)據(jù)流走向。
18.根據(jù)權(quán)利要求17所述的流計(jì)算系統(tǒng),其特征在于,在比較所述流式應(yīng)用的初始邏輯模型以及所述更新后的邏輯模型,確定待調(diào)整的數(shù)據(jù)流的方面,所述主控節(jié)點(diǎn)具體用于:比較所述流式應(yīng)用的初始邏輯模型以及所述更新后的邏輯模型,以確定所述待調(diào)整的數(shù)據(jù)流,其中所述流式應(yīng)用的初始邏輯模型所表示的PE與所述更新后的邏輯模型所表示的PE相同。
19.根據(jù)權(quán)利要求17所述的流計(jì)算系統(tǒng),其特征在于,所述主控節(jié)點(diǎn)具體用于,比較所述流式應(yīng)用的初始邏輯模型以及所述更新后的邏輯模型,以確定待調(diào)整的PE以及所述待調(diào)整的數(shù)據(jù)流,其中所述流式應(yīng)用的初始邏輯模型所表示的PE與所述更新后的邏輯模型所表示的PE不完全相同;根據(jù)所述待調(diào)整的數(shù)據(jù)流,生成第一升級(jí)指令;根據(jù)所述待調(diào)整的PE生成第二升級(jí)指令;將所述第一升級(jí)指令下發(fā)給所述第一工作節(jié)點(diǎn),將所述第二升級(jí)指令下發(fā)給第二工作節(jié)點(diǎn),所述第二工作節(jié)點(diǎn)包括所述待調(diào)整的PE所在的工作節(jié)點(diǎn); 所述第一工作節(jié)點(diǎn)具體用于,接收所述主控節(jié)點(diǎn)發(fā)送的所述第一升級(jí)指令,根據(jù)所述第一升級(jí)指令的指示,調(diào)整所述第一工作節(jié)點(diǎn)上分布的PE之間的數(shù)據(jù)流走向; 所述第二工作節(jié)點(diǎn)具體用于,接收所述主控節(jié)點(diǎn)發(fā)送的所述第二升級(jí)指令,根據(jù)所述第二升級(jí)指令的指示調(diào)整所述第二工作節(jié)點(diǎn)上分布的PE的數(shù)目。
20.根據(jù)權(quán)利要求17至19任一項(xiàng)所述的流計(jì)算系統(tǒng),其特征在于,所述主控節(jié)點(diǎn)還用于,根據(jù)與所述待調(diào)整的數(shù)據(jù)流相關(guān)的PE的輸入流和輸出流的依賴關(guān)系,確定需要進(jìn)行數(shù)據(jù)恢復(fù)的目標(biāo)PE和所述目標(biāo)PE執(zhí)行數(shù)據(jù)恢復(fù)的檢查點(diǎn)checkpoint ;向所述目標(biāo)PE所在工作節(jié)點(diǎn)下發(fā)數(shù)據(jù)恢復(fù)指令,所述數(shù)據(jù)恢復(fù)指令用于指示所述目標(biāo)PE根據(jù)所述checkpoint恢復(fù)數(shù)據(jù);當(dāng)確定所述第一工作節(jié)點(diǎn)完成調(diào)整,且所述第一工作節(jié)點(diǎn)上分布的PE準(zhǔn)備就緒之后,觸發(fā)所述目標(biāo)PE將恢復(fù)的數(shù)據(jù)輸入所述目標(biāo)PE的下游PE進(jìn)行處理。
【文檔編號(hào)】G06F9/38GK104317556SQ201410568236
【公開(kāi)日】2015年1月28日 申請(qǐng)日期:2014年10月22日 優(yōu)先權(quán)日:2014年10月22日
【發(fā)明者】洪斯寶, 夏命榛, 張松山 申請(qǐng)人:華為技術(shù)有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
会泽县| 孟州市| 公安县| 蚌埠市| 华坪县| 巧家县| 聂拉木县| 丰镇市| 土默特左旗| 新余市| 通州区| 遵义市| 密云县| 儋州市| 沈阳市| 绥阳县| 秦皇岛市| 乌兰浩特市| 北票市| 明溪县| 台山市| 津市市| 龙陵县| 金堂县| 东源县| 朔州市| 武胜县| 于田县| 区。| 贡觉县| 玉环县| 安徽省| 邵东县| 临武县| 万源市| 龙门县| 伊春市| 焦作市| 景泰县| 潞西市| 临沂市|