CN113064744B 任務(wù)處理方法、裝置、計算機可讀介質(zhì)及電子設(shè)備 (騰訊科技(深圳)有限公司)_第1頁
CN113064744B 任務(wù)處理方法、裝置、計算機可讀介質(zhì)及電子設(shè)備 (騰訊科技(深圳)有限公司)_第2頁
CN113064744B 任務(wù)處理方法、裝置、計算機可讀介質(zhì)及電子設(shè)備 (騰訊科技(深圳)有限公司)_第3頁
CN113064744B 任務(wù)處理方法、裝置、計算機可讀介質(zhì)及電子設(shè)備 (騰訊科技(深圳)有限公司)_第4頁
CN113064744B 任務(wù)處理方法、裝置、計算機可讀介質(zhì)及電子設(shè)備 (騰訊科技(深圳)有限公司)_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

(12)發(fā)明專利地址518057廣東省深圳市南山區(qū)高新區(qū)限公司44232(56)對比文件權(quán)利要求書3頁說明書17頁附圖7頁(57)摘要本申請的實施例提供了一種應(yīng)用于多節(jié)點務(wù)處理節(jié)點未處理完成的第一任務(wù)的標識信息,所述第一任務(wù)的標識信息是由第二任務(wù)處理節(jié)點在檢測到所述第一任務(wù)處理節(jié)點宕機后獲取由該任務(wù)處理節(jié)點處理的任務(wù)能夠及時恢復(fù)執(zhí)行,提高了系統(tǒng)的容災(zāi)能力,也大大提高了系統(tǒng)檢測多個任務(wù)處理節(jié)點的工作狀態(tài)檢測多個任務(wù)處理節(jié)點的工作狀態(tài)從消息隊列中獲取待消費任務(wù)的標識信息,消息隊列中包含有發(fā)生宕機的第一任務(wù)處理節(jié)點未處理完成的第一任務(wù)的標識信息,第一任務(wù)的標識信息是由第二任務(wù)處理節(jié)點在檢測到第[一任務(wù)處理節(jié)點宕機后獲取并投放至消息隊列根據(jù)獲取到的待消費任務(wù)的標識信息,處理待消費任務(wù)21.一種應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理方法,其特征在于,所述多節(jié)點系統(tǒng)包括多個任務(wù)處理節(jié)點,所述多節(jié)點系統(tǒng)中的各個任務(wù)處理節(jié)點上部署有網(wǎng)絡(luò)控制器,所述網(wǎng)絡(luò)控制器包括任務(wù)編排管理框架和遠程調(diào)用客戶端,所述方法由所述多個任務(wù)處理節(jié)點中的任意一個任務(wù)處理節(jié)點執(zhí)行,所述方法包括:檢測所述多個任務(wù)處理節(jié)點的工作狀態(tài);從消息隊列中獲取待消費任務(wù)的標識信息,所述消息隊列中包含有發(fā)生宕機的第一任務(wù)處理節(jié)點未處理完成的第一任務(wù)的標識信息,所述第一任務(wù)的標識信息是由第二任務(wù)處理節(jié)點在檢測到所述第一任務(wù)處理節(jié)點宕機后獲取并投放至所述消息隊列中的;通過如下方式處理所述待消費任務(wù):通過如下方式依次執(zhí)行所述待消費任務(wù)中包含的網(wǎng)絡(luò)指令:依次將所述待消費任務(wù)中的網(wǎng)絡(luò)指令發(fā)送至所述遠程調(diào)用客戶端,以使所述遠程調(diào)用客戶端依次向與所述網(wǎng)絡(luò)指令對應(yīng)的網(wǎng)絡(luò)設(shè)備發(fā)送所述網(wǎng)絡(luò)指令;若對所述待消費任務(wù)中包含的網(wǎng)絡(luò)指令執(zhí)行失敗,則對所述待消費任務(wù)中已執(zhí)行過的網(wǎng)絡(luò)指令進行回滾處理,以重新處理所述待消費任務(wù)。2.根據(jù)權(quán)利要求1所述的應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理方法,其特征在于,所述方法還若檢測到所述第一任務(wù)處理節(jié)點發(fā)生宕機,則與所述多個任務(wù)處理節(jié)點中的其它任務(wù)處理節(jié)點通過競爭的方式獲取所述第一任務(wù)處理節(jié)點未處理完成的第一任務(wù)的標識信息;其中,所述第二任務(wù)處理節(jié)點包括在競爭中取得成功的任務(wù)處理節(jié)點。3.根據(jù)權(quán)利要求1所述的應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理方法,其特征在于,所述方法由所述多個任務(wù)處理節(jié)點中的指定任務(wù)處理節(jié)點執(zhí)行,所述方法還包括:若所述指定任務(wù)處理節(jié)點是所述多節(jié)點系統(tǒng)中持續(xù)正常工作時間最長的任務(wù)處理節(jié)點,則獲取所述多節(jié)點系統(tǒng)中未處理完成的第二任務(wù)的標識信息;將所述第二任務(wù)的標識信息投放至所述消息隊列中。4.根據(jù)權(quán)利要求3所述的應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理方法,其特征在于,所述若所述指定任務(wù)處理節(jié)點是所述多節(jié)點系統(tǒng)中持續(xù)正常工作時間最長的任務(wù)處理節(jié)點,則獲取所述多節(jié)點系統(tǒng)中未處理完成的第二任務(wù)的標識信息,包括:若所述指定任務(wù)處理節(jié)點是所述多節(jié)點系統(tǒng)中持續(xù)正常工作時間最長的任務(wù)處理節(jié)點,則在等待預(yù)定時間之后獲取所述多節(jié)點系統(tǒng)中未處理完成的第二任務(wù)的標識信息。5.根據(jù)權(quán)利要求1所述的應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理方法,其特征在于,在檢測所述多個任務(wù)處理節(jié)點的工作狀態(tài)之前,所述方法還包括:向注冊中心發(fā)送注冊請求,并在注冊成功后建立與所述注冊中心之間的心跳連接;所述檢測所述多個任務(wù)處理節(jié)點的工作狀態(tài),包括:對所述注冊中心中維護的心跳連接的狀態(tài)進行檢測,以檢測所述多個任務(wù)處理節(jié)點的工作狀態(tài)。36.根據(jù)權(quán)利要求1所述的應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理方法,其特征在于,在通過如下方式處理所述待消費任務(wù)之前,所述根據(jù)獲取到的待消費任務(wù)的標識信息,處理所述待消從所述多節(jié)點系統(tǒng)對應(yīng)的緩存中加載所述待消費任務(wù)的標識信息所對應(yīng)的任務(wù)實體二進制數(shù)據(jù);對所述任務(wù)實體二進制數(shù)據(jù)進行反序列化處理,得到所述待消費任務(wù)。7.根據(jù)權(quán)利要求6所述的應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理方法,其特征在于,所述任務(wù)實體二進制數(shù)據(jù)包括與網(wǎng)絡(luò)指令對應(yīng)的原始二進制數(shù)據(jù);在每個網(wǎng)絡(luò)指令執(zhí)行成功之后,將所述每個網(wǎng)絡(luò)指令進行序列化處理,并通過序列化處理后得到的二進制數(shù)據(jù)替換所述每個網(wǎng)絡(luò)指令在所述緩存中對應(yīng)的原始二進制數(shù)據(jù)。8.根據(jù)權(quán)利要求6所述的應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理方法,其特征在于,所述方法還從所述多節(jié)點系統(tǒng)對應(yīng)的緩存中加載所述待消費任務(wù)的標識信息所對應(yīng)的任務(wù)實體二進制數(shù)據(jù)之后,將所述緩存中的任務(wù)實體二進制數(shù)據(jù)持久化到磁盤中。9.根據(jù)權(quán)利要求7所述的應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理方法,其特征在于,所述網(wǎng)絡(luò)控制器還包括任務(wù)投放客戶端,所述消息隊列中還包含有第三任務(wù)的標識信息,所述第三任務(wù)的標識信息是由所述任務(wù)投放客戶端投放至所述消息隊列中的。10.一種應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理裝置,其特征在于,所述多節(jié)點系統(tǒng)包括多個任務(wù)處理節(jié)點,所述多節(jié)點系統(tǒng)中的各個任務(wù)處理節(jié)點上部署有網(wǎng)絡(luò)控制器,所述網(wǎng)絡(luò)控制器包括任務(wù)編排管理框架和遠程調(diào)用客戶端,所述裝置包括:檢測單元,用于檢測所述多個任務(wù)處理節(jié)點的工作狀態(tài);獲取單元,用于從消息隊列中獲取待消費任務(wù)的標識信息,所述消息隊列中包含有發(fā)生宕機的第一任務(wù)處理節(jié)點未處理完成的第一任務(wù)的標識信息,所述第一任務(wù)的標識信息是由第二任務(wù)處理節(jié)點在檢測到所述第一任務(wù)處理節(jié)點宕機后獲取并投放至所述消息隊列中的;處理單元,用于根據(jù)獲取到的待消費任務(wù)的標識信息,處理所述待消費任務(wù),所述待消費任務(wù)包括至少一個網(wǎng)絡(luò)指令,所述任務(wù)編排管理框架用于依次執(zhí)行所述待消費任務(wù)中包含的網(wǎng)絡(luò)指令;所述處理單元配置為:通過如下方式依次執(zhí)行所述待消費任務(wù)中包含的網(wǎng)絡(luò)指令:依次將所述待消費任務(wù)中的網(wǎng)絡(luò)指令發(fā)送至所述遠程調(diào)用客戶端,以使所述遠程調(diào)用客戶端依次向與所述網(wǎng)絡(luò)指令對應(yīng)的網(wǎng)絡(luò)設(shè)備發(fā)送所述網(wǎng)絡(luò)指令;若對所述待消費任務(wù)中包含的網(wǎng)絡(luò)指令執(zhí)行失敗,則對所述待消費任務(wù)中已執(zhí)行過的網(wǎng)絡(luò)指令進行回滾處理,以重新處理所述待消費任務(wù)。11.一種計算機可讀介質(zhì),其上存儲有計算機程序,其特征在于,所述計算機程序被處理器執(zhí)行時實現(xiàn)如權(quán)利要求1至9中任一項所述的應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理方法。一個或多個處理器;存儲裝置,用于存儲一個或多個程序,當所述一個或多個程序被所述一個或多個處理4器執(zhí)行時,使得所述一個或多個處理器實現(xiàn)如權(quán)利要求1至9中任一項所述的應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理方法。5任務(wù)處理方法、裝置、計算機可讀介質(zhì)及電子設(shè)備技術(shù)領(lǐng)域[0001]本申請涉任務(wù)處理技術(shù)領(lǐng)域,具體而言,涉及一種應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理背景技術(shù)[0002]在任務(wù)處理系統(tǒng)中,通常是由任務(wù)分發(fā)器向任務(wù)處理節(jié)點分配任務(wù),由任務(wù)處理節(jié)點對分配的任務(wù)進行處理。然而,在相關(guān)技術(shù)中,一旦任務(wù)處理節(jié)點出現(xiàn)故障或發(fā)生宕機,那么該任務(wù)處理節(jié)點就會無法處理向其分配的任務(wù),導(dǎo)致該任務(wù)無法得到處理,從而使得整個任務(wù)處理系統(tǒng)的可用性較低。發(fā)明內(nèi)容[0003]本申請的實施例提供了一種應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理方法、裝置、計算機可讀介質(zhì)及電子設(shè)備,進而至少在一定程度上可以避免因任務(wù)處理節(jié)點發(fā)生宕機而導(dǎo)致分配的任務(wù)不能得到處理,并能夠提高系統(tǒng)的容災(zāi)能力和可用性。[0004]本申請的其他特性和優(yōu)點將通過下面的詳細描述變得顯然,或部分地通過本申請的實踐而習(xí)得。[0005]根據(jù)本申請實施例的一個方面,提供了一種應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理方法,所述多節(jié)點系統(tǒng)包括多個任務(wù)處理節(jié)點,所述方法包括:檢測所述多個任務(wù)處理節(jié)點的工作狀態(tài);從消息隊列中獲取待消費任務(wù)的標識信息,所述消息隊列中包含有發(fā)生宕機的第一任務(wù)處理節(jié)點未處理完成的第一任務(wù)的標識信息,所述第一任務(wù)的標識信息是由第二任務(wù)處理節(jié)點在檢測到所述第一任務(wù)處理節(jié)點宕機后獲取并投放至所述消息隊列中的;根據(jù)獲取到的待消費任務(wù)的標識信息,處理所述待消費任務(wù)。[0006]根據(jù)本申請實施例的一個方面,提供了一種應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理裝置,所述多節(jié)點系統(tǒng)包括多個任務(wù)處理節(jié)點,所述裝置包括:檢測單元,用于檢測所述多個任務(wù)處理節(jié)點的工作狀態(tài);獲取單元,用于從消息隊列中獲取待消費任務(wù)的標識信息,所述消息隊列中包含有發(fā)生宕機的第一任務(wù)處理節(jié)點未處理完成的第一任務(wù)的標識信息,所述第一任務(wù)的標識信息是由第二任務(wù)處理節(jié)點在檢測到所述第一任務(wù)處理節(jié)點宕機后獲取并投放至所述消息隊列中的;處理單元,用于根據(jù)獲取到的待消費任務(wù)的標識信息,處理所述待消費任務(wù)。[0007]在本申請的一些實施例中,基于前述方案,所述獲取單元還用于:若檢測到所述第一任務(wù)處理節(jié)點發(fā)生宕機,則與所述多個任務(wù)處理節(jié)點中的其它任務(wù)處理節(jié)點通過競爭的方式獲取所述第一任務(wù)處理節(jié)點未處理完成的第一任務(wù)的標識信息;其中,所述第二任務(wù)處理節(jié)點包括在競爭中取得成功的任務(wù)處理節(jié)點。[0008]在本申請的一些實施例中,基于前述方案,所述應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理裝置位于所述多個任務(wù)處理節(jié)點中的指定任務(wù)處理節(jié)點內(nèi),所述獲取單元還用于:若所述指定任務(wù)處理節(jié)點是所述多節(jié)點系統(tǒng)中持續(xù)正常工作時間最長的任務(wù)處理節(jié)點,則獲取所述6多節(jié)點系統(tǒng)中未處理完成的第二任務(wù)的標識信息;將所述第二任務(wù)的標識信息投放至所述消息隊列中。[0009]在本申請的一些實施例中,基于前述方案,所述獲取單元配置為:若所述指定任務(wù)處理節(jié)點是所述多節(jié)點系統(tǒng)中持續(xù)正常工作時間最長的任務(wù)處理節(jié)點,則在等待預(yù)定時間之后獲取所述多節(jié)點系統(tǒng)中未處理完成的第二任務(wù)的標識信息。[0010]在本申請的一些實施例中,基于前述方案,在檢測所述多個任務(wù)處理節(jié)點的工作狀態(tài)之前,所述檢測單元還用于:向注冊中心發(fā)送注冊請求,并在注冊成功后建立與所述注冊中心之間的心跳連接;所述檢測單元配置為:對所述注冊中心中維護的心跳連接的狀態(tài)進行檢測,以檢測所述多個任務(wù)處理節(jié)點的工作狀態(tài)。[0011]在本申請的一些實施例中,基于前述方案,所述處理單元配置為:從所述多節(jié)點系統(tǒng)對應(yīng)的緩存中加載所述待消費任務(wù)的標識信息所對應(yīng)的任務(wù)實體二進制數(shù)據(jù);對所述任務(wù)實體二進制數(shù)據(jù)進行反序列化處理,得到所述待消費任務(wù);處理所述待消費任務(wù)。[0012]在本申請的一些實施例中,基于前述方案,所述待消費任務(wù)包括至少一個網(wǎng)絡(luò)指令,所述任務(wù)實體二進制數(shù)據(jù)包括與網(wǎng)絡(luò)指令對應(yīng)的原始二進制數(shù)據(jù);所述處理單元配置為:依次執(zhí)行所述待消費任務(wù)中包含的網(wǎng)絡(luò)指令,其中,在每個網(wǎng)絡(luò)指令執(zhí)行成功之后,將所述每個網(wǎng)絡(luò)指令進行序列化處理,并通過序列化處理后得到的二進制數(shù)據(jù)替換所述每個網(wǎng)絡(luò)指令在所述緩存中對應(yīng)的原始二進制數(shù)據(jù)。[0013]在本申請的一些實施例中,基于前述方案,所述處理單元還配置為:若對所述待消費任務(wù)中包含的網(wǎng)絡(luò)指令執(zhí)行失敗,則對所述待消費任務(wù)中已執(zhí)行過的網(wǎng)絡(luò)指令進行回滾處理,以重新處理所述待消費任務(wù)。[0014]在本申請的一些實施例中,基于前述方案,所述處理單元還配置為:從所述多節(jié)點系統(tǒng)對應(yīng)的緩存中加載所述待消費任務(wù)的標識信息所對應(yīng)的任務(wù)實體二進制數(shù)據(jù)之后,將所述緩存中的任務(wù)實體二進制數(shù)據(jù)持久化到磁盤中。[0015]在本申請的一些實施例中,基于前述方案,所述多節(jié)點系統(tǒng)中的各個任務(wù)處理節(jié)點上部署有網(wǎng)絡(luò)控制器,所述網(wǎng)絡(luò)控制器包括任務(wù)編排管理框架,所述任務(wù)編排管理框架用于依次執(zhí)行所述待消費任務(wù)中包含的網(wǎng)絡(luò)指令。[0016]在本申請的一些實施例中,基于前述方案,所述網(wǎng)絡(luò)控制器還包括遠程調(diào)用客戶端,所述處理單元配置為:依次將所述待消費任務(wù)中的網(wǎng)絡(luò)指令發(fā)送至所述遠程調(diào)用客戶端,以使所述遠程調(diào)用客戶端依次向與所述網(wǎng)絡(luò)指令對應(yīng)的網(wǎng)絡(luò)設(shè)備發(fā)送所述網(wǎng)絡(luò)指令。[0017]在本申請的一些實施例中,基于前述方案,所述網(wǎng)絡(luò)控制器還包括任務(wù)投放客戶端,所述消息隊列中還包含有第三任務(wù)的標識信息,所述第三任務(wù)的標識信息是由所述任務(wù)投放客戶端投放至所述消息隊列中的。[0018]根據(jù)本申請實施例的一個方面,提供了一種計算機可讀介質(zhì),其上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)如上述實施例中所述的應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理方法。[0019]根據(jù)本申請實施例的一個方面,提供了一種電子設(shè)備,包括:一個或多個處理器;存儲裝置,用于存儲一個或多個程序,當所述一個或多個程序被所述一個或多個處理器執(zhí)行時,使得所述一個或多個處理器實現(xiàn)如上述實施例中所述的應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理方法。7[0020]在本申請的一些實施例所提供的技術(shù)方案中,當一個任務(wù)處理節(jié)點發(fā)生宕機時,其他任務(wù)處理節(jié)點能夠?qū)⒃撊蝿?wù)處理節(jié)點未處理完成的任務(wù)的標識信息重新投遞至消息隊列中,其他任務(wù)處理節(jié)點便能夠從消息隊列中獲取待消費任務(wù)的標識信息,從而能夠?qū)υ撊蝿?wù)處理節(jié)點未處理完成的任務(wù)進行處理。因而,本申請實施例允許多節(jié)點系統(tǒng)中的任務(wù)處理節(jié)點發(fā)生宕機,即使一個任務(wù)處理節(jié)點發(fā)生宕機時,由其處理的任務(wù)也不會丟失,該任務(wù)處理節(jié)點未完成的任務(wù)能夠得到及時處理,提高了系統(tǒng)的容災(zāi)能力,也大大提高了系統(tǒng)的可用性;此外,任務(wù)處理節(jié)點是根據(jù)獲取到的待消費任務(wù)的標識信息處理待消費任務(wù),因此,實現(xiàn)了任務(wù)分配與任務(wù)處理的解耦,消息隊列還能對任務(wù)進行削峰,從而進一步提高了系統(tǒng)的可靠性,也降低了系統(tǒng)的復(fù)雜度。[0021]應(yīng)當理解的是,以上的一般描述和后文的細節(jié)描述僅是示例性和解釋性的,并不能限制本申請。附圖說明[0022]此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本申請的實施例,并與說明書一起用于解釋本申請的原理。顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)[0023]圖1示出了可以應(yīng)用本申請實施例的技術(shù)方案的示例性系統(tǒng)架構(gòu)的示意圖;[0024]圖2示出了根據(jù)本申請的一個實施例的應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理方法的流程[0025]圖3示出了根據(jù)本申請的一個實施例的節(jié)點上網(wǎng)絡(luò)控制器與任務(wù)編排管理框架的組織形式示意圖;[0026]圖4示出了根據(jù)本申請的一個實施例的圖2中步驟220之前步驟以及步驟220的細節(jié)的流程圖;[0027]圖5示出了根據(jù)本申請的一個實施例的某個節(jié)點發(fā)生宕機時多節(jié)點系統(tǒng)的處理流[0028]圖6示出了根據(jù)本申請的一個實施例的根據(jù)獲取到的待消費任務(wù)的標識信息處理待消費任務(wù)的流程圖;[0029]圖7示出了根據(jù)本申請的一個實施例的節(jié)點全部宕機時多節(jié)點系統(tǒng)的處理流程示[0030]圖8示出了根據(jù)本申請的一個實施例的基于任務(wù)編排管理框架的任務(wù)執(zhí)行流程示[0031]圖9示出了根據(jù)本申請的一個實施例的應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理裝置的框[0032]圖10示出了適于用來實現(xiàn)本申請實施例的電子設(shè)備的計算機系統(tǒng)的結(jié)構(gòu)示意圖。具體實施方式[0033]現(xiàn)在將參考附圖更全面地描述示例實施方式。然而,示例實施方式能夠以多種形式實施,且不應(yīng)被理解為限于在此闡述的范例;相反,提供這些實施方式使得本申請將更加8全面和完整,并將示例實施方式的構(gòu)思全面地傳達給本領(lǐng)域的技術(shù)人員。[0034]此外,所描述的特征、結(jié)構(gòu)或特性可以以任何合適的方式結(jié)合在一個或更多實施例中。在下面的描述中,提供許多具體細節(jié)從而給出對本申請的實施例的充分理解。然而,本領(lǐng)域技術(shù)人員將意識到,可以實踐本申請的技術(shù)方案而沒有特定細節(jié)中的一個或更多,或者可以采用其它的方法、組元、裝置、步驟等。在其它情況下,不詳細示出或描述公知方[0035]附圖中所示的方框圖僅僅是功能實體,不一定必須與物理上獨立的實體相對應(yīng)。即,可以采用軟件形式來實現(xiàn)這些功能實體,或在一個或多個硬件模塊或集成電路中實現(xiàn)這些功能實體,或在不同網(wǎng)絡(luò)和/或處理器裝置和/或微控制器裝置中實現(xiàn)這些功能實體。[0036]附圖中所示的流程圖僅是示例性說明,不是必須包括所有的內(nèi)容和操作/步驟,也不是必須按所描述的順序執(zhí)行。例如,有的操作/步驟還可以分解,而有的操作/步驟可以合并或部分合并,因此實際執(zhí)行的順序有可能根據(jù)實際情況改變。[0037]在網(wǎng)絡(luò)控制領(lǐng)域中,對網(wǎng)絡(luò)控制器的指令進行編排是網(wǎng)絡(luò)控制領(lǐng)域的重要任務(wù)。本申請的發(fā)明人發(fā)現(xiàn),指令編排需要滿足以下特性,才能保證網(wǎng)絡(luò)指令編排能夠順利進行:[0038]首先,由于指令之間存在著相互依賴的關(guān)系,因而對于指令編排而言,保障編排的原子性是至關(guān)重要的;其次,若編排的指令或任務(wù)丟失,會直接影響指令編排的成功率,因而網(wǎng)絡(luò)控制器還需要有較強的容災(zāi)能力,以保證網(wǎng)絡(luò)控制器在宕機后編排的指令和任務(wù)不丟失;再者,當前對于控制器指令編排的開發(fā)而言,由于每套網(wǎng)絡(luò)控制器都有自己的邏輯,因此需要提升整體的開發(fā)效率。[0039]然而,傳統(tǒng)的網(wǎng)絡(luò)控制器指令編排過程難以保證一組指令的原子性,往往只能通過后期的配置審查來完成糾錯;并且,網(wǎng)絡(luò)控制器本身也件錯誤,指令則無法恢復(fù),大大影響了指令編排的效果;此外,目前需要針對每套網(wǎng)絡(luò)控制器單獨開發(fā)對應(yīng)的指令編排策略,導(dǎo)致了整個系統(tǒng)的開發(fā)效率低下,開發(fā)成本較高。[0040]在相關(guān)技術(shù)中,可以使用一些開源的任務(wù)管理框架來實現(xiàn)任務(wù)的分發(fā)和執(zhí)行,這類任務(wù)管理框架比如可以包括AirFlow。這些任務(wù)管理框架通過將網(wǎng)絡(luò)指令嵌入到任務(wù)中,實現(xiàn)網(wǎng)絡(luò)指令的編排。[0041]然而,采用任務(wù)管理框架依然存在以下缺陷:[0042]第一、這些開源任務(wù)管理框架幾乎都是獨立部署的,無法作為組件嵌入到控制器[0043]第二、這些任務(wù)管理框架也往往不具備回滾配置,難以實現(xiàn)一組指令編排的原子性,或者難以便捷的實現(xiàn)一組指令編排的原子性。[0044]第三、現(xiàn)有的開源任務(wù)管理框架對容災(zāi)能力支持不足,在節(jié)點掛機時,容易引起任[0045]為此,本申請首先提供了一種應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理方法。此處的任務(wù)可以是任何能夠以程序代碼表示并用于處理一定流程的任務(wù),比如可以是實現(xiàn)網(wǎng)絡(luò)指令編排的任務(wù)。任務(wù)在程序代碼以一定的實體的表示,比如,在Java程序中,任務(wù)可以以對象的形式表示。因而,本申請實施例提供的一種應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理方法可以應(yīng)用于各種任務(wù)處理的場景之中。[0046]本申請實施例提供的一種應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理方法在用于對網(wǎng)絡(luò)指令9進行編排的場景時,可以克服以上缺陷,能夠?qū)崿F(xiàn)前述的順利完成指令編排所需的特性。[0047]圖1示出了可以應(yīng)用本申請實施例的技術(shù)方案的示例性系統(tǒng)架構(gòu)的示意圖。下面以圖1所示系統(tǒng)架構(gòu)用于網(wǎng)絡(luò)指令編排來對其進行介紹。[0048]如圖1所示,系統(tǒng)架構(gòu)100可以包括網(wǎng)絡(luò)設(shè)備(如圖1中所示交換機101、路由器102和網(wǎng)關(guān)設(shè)備103中的一種或多種,當然也可以其他各類網(wǎng)絡(luò)設(shè)備等等)、網(wǎng)絡(luò)104和多節(jié)點系統(tǒng)110。多節(jié)點系統(tǒng)110包括第一服務(wù)器111、第二服務(wù)器112以及第三服務(wù)器113,多節(jié)點系統(tǒng)110包括的每一個服務(wù)器均為該多節(jié)點系統(tǒng)110中的一個任務(wù)處理節(jié)點。網(wǎng)絡(luò)104用以在終端設(shè)備和多節(jié)點系統(tǒng)110中的任務(wù)處理節(jié)點之間提供通信鏈路的介質(zhì)。網(wǎng)絡(luò)104可以包括[0049]應(yīng)該理解,圖1中的終端設(shè)備、網(wǎng)絡(luò)和多節(jié)點系統(tǒng)中任務(wù)處理節(jié)點的數(shù)目僅僅是示意性的。根據(jù)實現(xiàn)需要,可以具有任意數(shù)目的終端設(shè)備和網(wǎng)絡(luò),多節(jié)點系統(tǒng)中可以包括任意數(shù)目的任務(wù)處理節(jié)點,每一任務(wù)處理節(jié)點甚至可以由一個集群構(gòu)成。比如第一服務(wù)器111可以是多個服務(wù)器組成的服務(wù)器集群等。[0050]多節(jié)點系統(tǒng)110中的任務(wù)處理節(jié)點通過處理任務(wù)來編排該任務(wù)包含的一組網(wǎng)絡(luò)指令,并將網(wǎng)絡(luò)指令發(fā)送至與該網(wǎng)絡(luò)指令對應(yīng)的網(wǎng)絡(luò)設(shè)備之中。當本申請實施例提供的應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理方法在用于對網(wǎng)絡(luò)指令進行編排的場景時,若一個任務(wù)處理節(jié)點在處理任務(wù)過程中發(fā)生宕機事件,那么,通過本申請實施例提供的應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理方法,各任務(wù)處理節(jié)點能夠從消息隊列中獲取待消費任務(wù)的標識信息,而消息隊列中包含了發(fā)生宕機的任務(wù)處理節(jié)點未處理完成的任務(wù)的標識信息,因而,未發(fā)生宕機的任務(wù)處理節(jié)點可以獲取到發(fā)生宕機的任務(wù)處理節(jié)點未處理完成的任務(wù)的標識信息,從而可以由其他未發(fā)生宕機事件的任務(wù)處理節(jié)點處理未被該任務(wù)處理節(jié)點處理完成的任務(wù),從而保證所分配的任務(wù)都能得到有效處理。[0051]需要說明的是,雖然本申請實施例用于對網(wǎng)絡(luò)指令進行編排的場景,但實際上,其可以應(yīng)用于任何任務(wù)處理流程中,比如可以用于工作流的控制過程中;雖然本申請實施例中任務(wù)處理節(jié)點為服務(wù)器,但在本申請的其它實施例中,任務(wù)處理節(jié)點可以是任何類型的終端設(shè)備,任務(wù)處理節(jié)點不僅可以為物理節(jié)點,還可以為虛擬化的節(jié)點,此外,任務(wù)處理節(jié)點還可以為一個服務(wù)器的集群;并且,雖然本申請實施例中多節(jié)點系統(tǒng)僅包括有任務(wù)處理節(jié)點,但是多節(jié)點系統(tǒng)還可以包括數(shù)據(jù)庫、消息隊列等其他各種類型的實體,本申請實施例對此不作任何限定,本申請的保護范圍也不應(yīng)因此而受到任何限制。[0052]并且,易于理解,本申請實施例所提供的應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理方法一般由服務(wù)器執(zhí)行,相應(yīng)地,應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理裝置一般設(shè)置于服務(wù)器中。但是,在本申請的其它實施例中,終端設(shè)備也可以與服務(wù)器具有相似的功能,從而執(zhí)行本申請實施例所提供的應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理的方案。(cloudcomputing)或云存儲(cloudstorage)領(lǐng)域中,也可以應(yīng)用于區(qū)塊鏈(BlockChain)[0054]云計算是一種計算模式,它將計算任務(wù)分布在大量計算機構(gòu)成的資源池上,使各種應(yīng)用系統(tǒng)能夠根據(jù)需要獲取計算力、存儲空間和信息服務(wù)。提供資源的網(wǎng)絡(luò)被稱為“云”?!霸啤敝械馁Y源在使用者看來是可以無限擴展的,并且可以隨時獲取,按需使用,隨時擴展,按使用付費。(InfrastructureasaService,基礎(chǔ)設(shè)施即服務(wù))平臺,在資源池中部署多種類型的虛擬資源,供外部客戶選擇使用。云計算資源池中主[0056]按照邏輯功能劃分,在IaaS(InfrastructureasaService,基礎(chǔ)設(shè)施即服務(wù))層上可以部署PaaS(PlatformasaService,平臺即服務(wù))層,PaaS層之上再部署SaaS[0057]云存儲是在云計算概念上延伸和發(fā)展出來的一個新的概念,分布式云存儲系統(tǒng)(以下簡稱存儲系統(tǒng))是指通過集群應(yīng)用、網(wǎng)格技術(shù)以及分布存儲文件系統(tǒng)等功能,將網(wǎng)絡(luò)中大量各種不同類型的存儲設(shè)備(存儲設(shè)備也稱之為存儲節(jié)點)通過應(yīng)用軟件或應(yīng)用接口集合起來協(xié)同工作,共同對外提供數(shù)據(jù)存儲和業(yè)務(wù)訪問功能的一個存儲系統(tǒng)。[0058]目前,存儲系統(tǒng)的存儲方法為:創(chuàng)建邏輯卷,在創(chuàng)建邏輯卷時,就為每個邏輯卷分配物理存儲空間,該物理存儲空間可能是某個存儲設(shè)備或者某幾個存儲設(shè)備的磁盤組成??蛻舳嗽谀骋贿壿嬀砩洗鎯?shù)據(jù),也就是將數(shù)據(jù)存儲在文件系統(tǒng)上,文件系統(tǒng)將數(shù)據(jù)分成許多部分,每一部分是一個對象,對象不僅包含數(shù)據(jù)而且還包含數(shù)據(jù)標識(ID,IDentity)等額外的信息,文件系統(tǒng)將每個對象分別寫入該邏輯卷的物理存儲空間,且文件系統(tǒng)會記錄每個對象的存儲位置信息,從而當客戶端請求訪問數(shù)據(jù)時,文件系統(tǒng)能夠根據(jù)每個對象的存儲位置信息讓客戶端對數(shù)據(jù)進行訪問。[0059]存儲系統(tǒng)為邏輯卷分配物理存儲空間的過程,具體為:按照對存儲于邏輯卷的對象的容量估量(該估量往往相對于實際要存儲的對象的容量有很大余量)和獨立冗余磁盤陣列(RAID,RedundantArrayofIndependentDisk)的組別,預(yù)先將物理存儲空間劃分成分條,一個邏輯卷可以理解為一個分條,從而為邏輯卷分配了物理存儲空間。[0060]區(qū)塊鏈是分布式數(shù)據(jù)存儲、點對點傳輸、共識機制、加密算法等計算機技術(shù)的新型應(yīng)用模式。區(qū)塊鏈(Blockchain),本質(zhì)上是一個去中心化的數(shù)據(jù)庫,是一串使用密碼學(xué)方法相關(guān)聯(lián)產(chǎn)生的數(shù)據(jù)塊,每一個數(shù)據(jù)塊中包含了一批次網(wǎng)絡(luò)交易的信息,用于驗證其信息的有效性(防偽)和生成下一個區(qū)塊。區(qū)塊鏈可以包括區(qū)塊鏈底層平臺、平臺產(chǎn)品服務(wù)層以及應(yīng)用服務(wù)層。[0061]區(qū)塊鏈底層平臺可以包括用戶管理、基礎(chǔ)服務(wù)、智能合約以及運營監(jiān)控等處理模塊。其中,用戶管理模塊負責(zé)所有區(qū)塊鏈參與者的身份信息管理,包括維護公私鑰生成(賬戶管理)、密鑰管理以及用戶真實身份和區(qū)塊鏈地址對應(yīng)關(guān)系維護(權(quán)限管理)等,并且在授權(quán)的情況下,監(jiān)管和審計某些真實身份的交易情況,提供風(fēng)險控制的規(guī)則配置(風(fēng)控審計);基礎(chǔ)服務(wù)模塊部署在所有區(qū)塊鏈節(jié)點設(shè)備上,用來驗證業(yè)務(wù)請求的有效性,并對有效請求完成共識后記錄到存儲上,對于一個新的業(yè)務(wù)請求,基礎(chǔ)服務(wù)先對接口適配解析和鑒權(quán)處理(接口適配),然后通過共識算法將業(yè)務(wù)信息加密(共識管理),在加密之后完整一致的傳輸至共享賬本上(網(wǎng)絡(luò)通信),并進行記錄存儲;智能合約模塊負責(zé)合約的注冊發(fā)行以及合約觸發(fā)和合約執(zhí)行,開發(fā)人員可以通過某種編程語言定義合約邏輯,發(fā)布到區(qū)塊鏈上(合約11注冊),根據(jù)合約條款的邏輯,調(diào)用密鑰或者其它的事件觸發(fā)執(zhí)行,完成合約邏輯,同時還提供對合約升級注銷的功能;運營監(jiān)控模塊主要負責(zé)產(chǎn)品發(fā)布過程中的部署、配置的修改、合節(jié)點設(shè)備健康狀態(tài)等。[0062]平臺產(chǎn)品服務(wù)層提供典型應(yīng)用的基本能力和實現(xiàn)框架,開發(fā)人員可以基于這些基本能力,疊加業(yè)務(wù)的特性,完成業(yè)務(wù)邏輯的區(qū)塊鏈實現(xiàn)。應(yīng)用服務(wù)層提供基于區(qū)塊鏈方案的應(yīng)用服務(wù)給業(yè)務(wù)參與方進行使用。[0063]當本申請實施例應(yīng)用于對網(wǎng)絡(luò)指令進行編排的場景時,具體可以應(yīng)用于邊緣計算領(lǐng)域和軟件定義網(wǎng)絡(luò)(SDN,SoftwareDefinedNetwork)的網(wǎng)絡(luò)架構(gòu)中,編排的網(wǎng)絡(luò)指令可用于對邊緣網(wǎng)關(guān)進行控制。軟件定義網(wǎng)絡(luò)是一種新的開放網(wǎng)絡(luò)架構(gòu),通過控制與轉(zhuǎn)發(fā)分離、控制面集中、接口開放可編程,實現(xiàn)全局視角網(wǎng)絡(luò)資源靈活調(diào)度以及新業(yè)務(wù)快速部署,能簡[0064]以下對本申請實施例的技術(shù)方案的實現(xiàn)細節(jié)進行詳細闡述:[0065]圖2示出了根據(jù)本申請的一個實施例的應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理方法的流程圖,該應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理方法可以由具有計算和通信功能的設(shè)備來執(zhí)行,比如可以是圖1中所示的第一服務(wù)器111,該多節(jié)點系統(tǒng)包括多個任務(wù)處理節(jié)點。參照圖2所示,該應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理方法至少包括以下步驟:[0066]在步驟220中,檢測多個任務(wù)處理節(jié)點的工作狀態(tài)。[0067]在本申請實施例用于網(wǎng)絡(luò)指令編排的場景時,任務(wù)處理節(jié)點可以采用圖3所示的組織形式,即,節(jié)點包括網(wǎng)絡(luò)控制器,網(wǎng)絡(luò)控制器又包括北向控制API、任務(wù)編排管理框架、RPCClient(RemoteProcedureCallClient,遠程過程調(diào)用客戶端)以及用于生成網(wǎng)絡(luò)指令的功能模塊,用于生成網(wǎng)絡(luò)指令的功能模塊具體包括網(wǎng)絡(luò)編排與計算模塊、網(wǎng)絡(luò)模型對象管理模塊以及全局質(zhì)量監(jiān)控流量調(diào)度模塊,其中,北向控制API是網(wǎng)絡(luò)控制器北向提供的用戶管理應(yīng)用程序接口,用以提供網(wǎng)絡(luò)指令編排的入口;各個用于生成網(wǎng)絡(luò)指令的功能模塊能夠通過網(wǎng)絡(luò)模型對象管理、網(wǎng)絡(luò)編排與計算等操作生成網(wǎng)絡(luò)配置指令;任務(wù)編排管理框架可以用于執(zhí)行本申請實施例提供的應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理方法;RPCClient用于將來自任務(wù)編排管理框架的網(wǎng)絡(luò)指令發(fā)送至與該網(wǎng)絡(luò)指令相對應(yīng)的網(wǎng)絡(luò)設(shè)備。在下文中,若非特別指明,節(jié)點和多節(jié)點系統(tǒng)中的任務(wù)處理節(jié)點是等同的。[0068]多節(jié)點系統(tǒng)中每一任務(wù)處理節(jié)點都可以檢測其他任務(wù)處理節(jié)點的工作狀態(tài),圖2實施例所示步驟可以由多節(jié)點系統(tǒng)中的任意一個節(jié)點執(zhí)行。任務(wù)處理節(jié)點的工作狀態(tài)可以包括正常狀態(tài)和宕機狀態(tài)。[0069]在本申請的一個實施例中,可以以多種方式檢測多節(jié)點系統(tǒng)中任務(wù)處理節(jié)點的工[0070]圖4示出了根據(jù)本申請的一個實施例的圖2中步驟220之前步驟以及步驟220的細節(jié)的流程圖。[0071]請參見圖4,具體包括以下步驟:[0072]在步驟210中,向注冊中心發(fā)送注冊請求,并在注冊成功后建立與所述注冊中心之間的心跳連接。[0073]注冊中心用于對多節(jié)點系統(tǒng)中每一任務(wù)處理節(jié)點進行注冊,并對每一注冊成功的任務(wù)處理節(jié)點進行心跳檢測。任務(wù)處理節(jié)點通過向注冊中心發(fā)送注冊請求來進行注冊,注冊請求中可以攜帶有與任務(wù)處理節(jié)點相關(guān)的信息,比如可以攜帶任務(wù)處理節(jié)點的標識。[0074]任務(wù)處理節(jié)點與注冊中心之間建立心跳連接是通過發(fā)送心跳包的方式進行的,具體而言,可以是由任務(wù)處理節(jié)點向注冊中心發(fā)送心跳包,也可以是由注冊中心向任務(wù)處理節(jié)點發(fā)送心跳包,注冊中心根據(jù)收到或者發(fā)出的心跳包的結(jié)果完成心跳檢測。[0075]在步驟220’中,對注冊中心中維護的心跳連接的狀態(tài)進行檢測,以檢測所述多個任務(wù)處理節(jié)點的工作狀態(tài)。[0076]注冊中心中維護的心跳連接的狀態(tài)可以通過多種數(shù)據(jù)來表示。[0077]比如,可以在注冊中心中維護心跳連接正常的任務(wù)處理節(jié)點的注冊信息或標識信息;當任務(wù)處理節(jié)點對注冊中心進行檢測時,會從注冊中心中獲取到所有與注冊中心保持著正常的心跳連接的注冊信息或標識信息,并存儲到本地;當一個任務(wù)處理節(jié)點發(fā)生宕機時,該任務(wù)處理節(jié)點在注冊中心的心跳停止,注冊中心會將該任務(wù)處理節(jié)點的注冊信息或標識信息移除。其他任務(wù)處理節(jié)點可以根據(jù)在本地存儲了該任務(wù)處理節(jié)點的注冊信息或標識信息,但在注冊中心中發(fā)現(xiàn)該任務(wù)處理節(jié)點的注冊信息或標識信息消失而確定該任務(wù)處理節(jié)點發(fā)生宕機。[0078]再比如,還可以在注冊中心中維護任務(wù)處理節(jié)點的標識信息和狀態(tài)信息,其中,狀態(tài)信息代表對應(yīng)的任務(wù)處理節(jié)點在注冊中心的心跳停止或正常,比如,狀態(tài)信息可以用0或1表示,其中,0可以代表對應(yīng)的任務(wù)處理節(jié)點在注冊中心的心跳停止,1可以代表對應(yīng)的任務(wù)處理節(jié)點在注冊中心的心跳正常;當任務(wù)處理節(jié)點對注冊中心中維護的心跳連接的狀態(tài)進行檢測時,會獲取到各任務(wù)處理節(jié)點的標識信息和對應(yīng)的狀態(tài)信息,若獲取到的狀態(tài)信息代表心跳停止,那么,可以確定對應(yīng)的任務(wù)處理節(jié)點的工作狀態(tài)為宕機。[0079]由此可見,檢測任務(wù)處理節(jié)點的工作狀態(tài)和確定任務(wù)處理節(jié)點是否發(fā)生宕機的方式可以是各種各樣的,并不限于上述的這些。[0080]請繼續(xù)參見圖2,在步驟230中,從消息隊列中獲取待消費任務(wù)的標識信息,消息隊列中包含有發(fā)生宕機的第一任務(wù)處理節(jié)點未處理完成的第一任務(wù)的標識信息,第一任務(wù)的標識信息是由第二任務(wù)處理節(jié)點在檢測到第一任務(wù)處理節(jié)點宕機后獲取并投放至消息隊列中的。[0081]標識信息是可以用于唯一標識一個任務(wù)的信息,標識信息通常采用字符串的數(shù)據(jù)[0083]在本申請的一個實施例中,所述第一任務(wù)的標識信息被投放至消息隊列中最先被消費的位置。[0084]本申請實施例中,由于第一任務(wù)是未被第一任務(wù)處理節(jié)點處理完成的任務(wù),因而,通過將第一任務(wù)的標識信息被投放至消息隊列中最先被消費的位置,能夠使未被處理完成的任務(wù)優(yōu)先得到處理。[0085]第一任務(wù)處理節(jié)點和第二任務(wù)處理節(jié)點都是多節(jié)點系統(tǒng)中的節(jié)點。第二任務(wù)處理節(jié)點在檢測到第一任務(wù)處理節(jié)點宕機后,可以獲取第一任務(wù)處理節(jié)點未處理完成的第一任務(wù)的標識信息,并將其投放至消息隊列中。[0086]在本申請的一個實施例中,所述方法還包括:若檢測到第一任務(wù)處理節(jié)點發(fā)生宕機,則與多個任務(wù)處理節(jié)點中的其它任務(wù)處理節(jié)點通過競爭的方式獲取第一任務(wù)處理節(jié)點未處理完成的第一任務(wù)的標識信息;其中,第二任務(wù)處理節(jié)點包括在競爭中取得成功的任務(wù)處理節(jié)點。[0087]具體地,第二任務(wù)處理節(jié)點可以為在競爭中取得成功的任務(wù)處理節(jié)點。[0088]各任務(wù)處理節(jié)點通過競爭的方式獲取第一任務(wù)的標識信息是指按照一定指標對各任務(wù)處理節(jié)點進行篩選,得到唯一有權(quán)合法獲取第一任務(wù)的標識信息的任務(wù)處理節(jié)點的過程。[0089]競爭的方式所采用的競爭規(guī)則可以是多種多樣的。比如,競爭規(guī)則可以為最先獲取到第一任務(wù)的標識信息的任務(wù)處理節(jié)點是在競爭中取得成功的任務(wù)處理節(jié)點,該任務(wù)處理節(jié)點向其他任務(wù)處理節(jié)點廣播,使其他任務(wù)處理節(jié)點停止獲取第一任務(wù)的標識信息;競爭規(guī)則還可以為最先獲取到第一任務(wù)的標識信息的任務(wù)處理節(jié)點是在競爭中取得成功的任務(wù)處理節(jié)點,該任務(wù)處理節(jié)點向其他任務(wù)處理節(jié)點廣播,使其他任務(wù)處理節(jié)點即使獲取到第一任務(wù)的標識信息,也無權(quán)將其投遞至消息隊列中;此外,競爭規(guī)則還可以為CPU利用率或者內(nèi)存使用率最低的任務(wù)處理節(jié)點是在競爭中取得成功的任務(wù)處理節(jié)點,采用這種競爭規(guī)則的好處是保證第一任務(wù)的標識信息能夠被及時、準確地投放至消息隊列中。[0090]在本申請的一個實施例中,第二任務(wù)處理節(jié)點是多節(jié)點系統(tǒng)中預(yù)先設(shè)置的任務(wù)處理節(jié)點。[0091]比如,可以在多節(jié)點系統(tǒng)中預(yù)先設(shè)置一個具有性能和配置高、可用性高、設(shè)置有備用電源等特性的任務(wù)處理節(jié)點,由該任務(wù)處理節(jié)點負責(zé)獲取其他任務(wù)處理節(jié)點未處理完成的任務(wù)的標識信息。由于該預(yù)先設(shè)置的任務(wù)處理節(jié)點自身的可用性非常高,因而若指定由該任務(wù)處理節(jié)點獲取任務(wù)的標識信息,同樣能夠保證整個系統(tǒng)的高可用性。[0092]圖5示出了根據(jù)本申請的一個實施例的某個節(jié)點發(fā)生宕機時多節(jié)點系統(tǒng)的處理流程示意圖。[0093]請參閱圖5,當某個節(jié)點發(fā)生宕機時多節(jié)點系統(tǒng)的處理流程可以如下:[0094]1、節(jié)點01、節(jié)點02以及節(jié)點03全部在注冊中心中進行注冊,并在注冊成功之后建立與注冊中心的心跳連接。[0095]2、節(jié)點01和節(jié)點02對注冊中心中維護的心跳連接的狀態(tài)進行檢測,當節(jié)點03在注冊中心中的心跳停止,節(jié)點01和節(jié)點02會檢測到節(jié)點03發(fā)生宕機事件。[0096]3、節(jié)點01和節(jié)點02以競爭方式從緩存中獲取節(jié)點03的任務(wù)列表,緩存中存儲了各節(jié)點的任務(wù)列表,任務(wù)列表中包含了一個或多個任務(wù)標識信息。[0097]4、節(jié)點02在競爭中取得成功后,節(jié)點02成功獲取到節(jié)點03的任務(wù)列表,并重新將該任務(wù)列表中未被節(jié)點03處理完成的任務(wù)的標識信息推送至消息隊列中。[0098]5、由于節(jié)點01和節(jié)點02未發(fā)生宕機,因此,節(jié)點01和節(jié)點02能夠從消息隊列中獲取待消費任務(wù)的標識信息,從而獲取待消費任務(wù),其中,當獲取到未被節(jié)點03處理完成的任務(wù)的標識信息時,便可以對該未被節(jié)點03處理完成的任務(wù)進行處理。[0099]請繼續(xù)參見圖2,在步驟240中,根據(jù)獲取到的待消費任務(wù)的標識信息,處理待消費任務(wù)。[0100]獲取到待消費任務(wù)的標識信息之后,可以對其進行消費,進而實現(xiàn)對待消費任務(wù)的處理。[0101]多節(jié)點系統(tǒng)中任何未發(fā)生宕機的任務(wù)處理節(jié)點都能夠從消息隊列中獲取待消費任務(wù)的標識信息。[0102]在當前任務(wù)處理節(jié)點獲取到第一任務(wù)的標識信息的情況下,可以由當前任務(wù)處理節(jié)點實現(xiàn)對第一任務(wù)的處理;在其他任務(wù)處理節(jié)點獲取到第一任務(wù)的標識信息的情況下,也可以由其他任務(wù)處理節(jié)點實現(xiàn)對該第一任務(wù)的處理。[0103]因而,在第一任務(wù)的標識信息被投放至消息隊列中之后,無論該第一任務(wù)的標識信息是被當前任務(wù)節(jié)點獲取到,還是被其他任務(wù)處理節(jié)點獲取到,均能夠?qū)崿F(xiàn)對第一任務(wù)的恢復(fù)處理,從而大大提高了系統(tǒng)的可用性。[0104]圖6示出了根據(jù)本申請的一個實施例的根據(jù)獲取到的待消費任務(wù)的標識信息處理待消費任務(wù)的流程圖。請參閱圖6,步驟240可以具體包括以下步驟:[0105]步驟610,從多節(jié)點系統(tǒng)對應(yīng)的緩存中加載待消費任務(wù)的標識信息所對應(yīng)的任務(wù)實體二進制數(shù)據(jù)。[0106]任務(wù)實體二進制數(shù)據(jù)和待消費任務(wù)的標識信息可以存放于同一緩存中,也可以分別存放在不同緩存中。[0107]緩存可以屬于多節(jié)點系統(tǒng),也可以位于多節(jié)點系統(tǒng)之外。緩存是多節(jié)點系統(tǒng)中各任務(wù)處理節(jié)點共同使用的高速存儲空間,緩存可以位于物理節(jié)點上,也可以位于虛擬節(jié)點上,緩存的物理實質(zhì)可以是內(nèi)存。使用緩存的好處是可以提高任務(wù)實體二進制數(shù)據(jù)的加載效率,從而可以提高任務(wù)處理節(jié)點發(fā)生宕機后任務(wù)的恢復(fù)效率,從而提高系統(tǒng)的可用性。[0108]在本申請的其他實施例中,任務(wù)實體二進制數(shù)據(jù)還可以存儲于磁盤上。[0109]任務(wù)實體二進制數(shù)據(jù)是對任務(wù)進行序列化得到的字節(jié)序列,任務(wù)實體二進制數(shù)據(jù)是在分配任務(wù)時將其刷入緩存中的,通過將任務(wù)以任務(wù)實體二進制數(shù)據(jù)的方式進行存儲,可以便于任務(wù)存儲和傳送。[0111]從多節(jié)點系統(tǒng)對應(yīng)的緩存中加載待消費任務(wù)的標識信息所對應(yīng)的任務(wù)實體二進制數(shù)據(jù)之后,將緩存中的任務(wù)實體二進制數(shù)據(jù)持久化到磁盤中。[0112]步驟620,對任務(wù)實體二進制數(shù)據(jù)進行反序列化處理,得到待消費任務(wù)。[0113]對任務(wù)實體二進制數(shù)據(jù)進行反序列化處理,能夠得到待消費任務(wù)這一對象,對象可以以Java對象的形式表示。[0114]步驟630,處理待消費任務(wù)。[0115]在本申請的一個實施例中,待消費任務(wù)包括至少一個網(wǎng)絡(luò)指令,任務(wù)實體二進制數(shù)據(jù)包括與網(wǎng)絡(luò)指令對應(yīng)的原始二進制數(shù)據(jù)。[0116]處理待消費任務(wù)的步驟可以包括:[0117]依次執(zhí)行待消費任務(wù)中包含的網(wǎng)絡(luò)指令,其中,在每個網(wǎng)絡(luò)指令執(zhí)行成功之后,將每個網(wǎng)絡(luò)指令進行序列化處理,并通過序列化處理后得到的二進制數(shù)據(jù)替換每個網(wǎng)絡(luò)指令在緩存中對應(yīng)的原始二進制數(shù)據(jù)。[0118]當一個待消費任務(wù)中的所有網(wǎng)絡(luò)指令均執(zhí)行成功之后,緩存中各網(wǎng)絡(luò)指令對應(yīng)的原始二進制數(shù)據(jù)均會被覆蓋為二進制數(shù)據(jù)。[0119]將網(wǎng)絡(luò)指令的二進制數(shù)據(jù)該網(wǎng)絡(luò)指令在緩存中對應(yīng)的原始二進制數(shù)據(jù),也可以稱為對任務(wù)實體二進制數(shù)據(jù)的快照。[0120]很顯然,本申請實施例用于對網(wǎng)絡(luò)指令進行編排的場景中,由于在網(wǎng)絡(luò)指令執(zhí)行成功之后,對該網(wǎng)絡(luò)指令進行序列化處理,并通過序列化處理后得到的二進制數(shù)據(jù)替換該網(wǎng)絡(luò)指令在緩存中對應(yīng)的原始二進制數(shù)據(jù),一個網(wǎng)絡(luò)指令對應(yīng)的原始二進制數(shù)據(jù)和二進制數(shù)據(jù)是不同的,代表了網(wǎng)絡(luò)指令的不同狀態(tài),因此,可以確定的是,若緩存中存在原始二進制數(shù)據(jù),則代表該原始二進制數(shù)據(jù)對應(yīng)的網(wǎng)絡(luò)指令未被執(zhí)行成功,若緩存中存在二進制數(shù)據(jù),則代表該二進制數(shù)據(jù)對應(yīng)的網(wǎng)絡(luò)指令被執(zhí)行成功。[0121]基于此,當?shù)谝蝗蝿?wù)的標識信息被投放至消息隊列中后,若第一任務(wù)中的一部分網(wǎng)絡(luò)指令成功執(zhí)行,另一部分網(wǎng)絡(luò)指令則未成功執(zhí)行,那么,緩存中包括一部分網(wǎng)絡(luò)指令對應(yīng)的二進制數(shù)據(jù)和另一部分網(wǎng)絡(luò)指令對應(yīng)的原始二進制數(shù)據(jù)。此時,當多節(jié)點系統(tǒng)中的指定任務(wù)處理節(jié)點獲取到該第一任務(wù)的標識信息之后,可以僅加載第一任務(wù)對應(yīng)的原始二進制數(shù)據(jù),從而僅對第一任務(wù)中未成功執(zhí)行的網(wǎng)絡(luò)指令進行處理,從而避免第一任務(wù)中已成功執(zhí)行的網(wǎng)絡(luò)指令被重復(fù)執(zhí)行,保證了節(jié)點宕機后指令編排任務(wù)恢復(fù)的準確性。[0122]在此基礎(chǔ)上,各任務(wù)處理節(jié)點都能夠分辨出哪些任務(wù)以及任務(wù)中的哪些網(wǎng)絡(luò)指令被執(zhí)行過,基于這些特性就能對上述實施例中的方案進行適應(yīng)性調(diào)整。[0123]具體而言,請繼續(xù)參閱圖5,雖然在圖5中未發(fā)生宕機的節(jié)點獲取的是發(fā)生宕機的節(jié)點的任務(wù)列表,任務(wù)列表可能同時包括處理完成的任務(wù)的標識信息和未處理完成的任務(wù)的標識信息;但在其他實施例中,也可以僅獲取任務(wù)列表中未被發(fā)生宕機的節(jié)點處理完成的任務(wù)的標識信息。[0124]并且,當一個節(jié)點獲取到任務(wù)列表時,該節(jié)點推送至消息隊列中任務(wù)的標識信息既可以為該任務(wù)列表中未處理完成的任務(wù)的標識信息,也可以為該任務(wù)列表中全部任務(wù)的標識信息,之所以可以向消息隊列推送全部任務(wù)的標識信息,是因為從該消息隊列中獲取待消費任務(wù)的標識信息的節(jié)點能夠根據(jù)緩存中的數(shù)據(jù)分辨出已成功執(zhí)行的網(wǎng)絡(luò)指令,從而避免重復(fù)執(zhí)行。[0125]在本申請的一個實施例中,所述方法還包括:在待消費任務(wù)執(zhí)行成功之后,將緩存中的該待消費任務(wù)對應(yīng)的二進制數(shù)據(jù)持久化到磁盤中。[0126]本申請實施例,對二進制數(shù)據(jù)實現(xiàn)了持久化處理,對任務(wù)處理記錄實現(xiàn)了落盤,可以在事后對處理過的任務(wù)進行回溯和審計。[0127]持久化處理的目的留存更多的數(shù)據(jù)以供回溯和審計,因而,本申請實施例應(yīng)用實現(xiàn)持久化的方式可以是任意的??梢栽谌蝿?wù)處理的任意階段進行持久化處理,可以定期進行持久化處理,也可以根據(jù)用戶指令進行持久化處理,可以僅對二進制數(shù)據(jù)進行持久化處理,還可以對包含原始二進制數(shù)據(jù)的任務(wù)實體二進制數(shù)據(jù)進行持久化處理。[0128]在本申請的一個實施例中,處理待消費任務(wù)的步驟還包括:若對待消費任務(wù)中包含的網(wǎng)絡(luò)指令執(zhí)行失敗,則對待消費任務(wù)中已執(zhí)行過的網(wǎng)絡(luò)指令進行回滾處理,以重新處理待消費任務(wù)。[0129]具體而言,待消費任務(wù)包括多個需要依次執(zhí)行的網(wǎng)絡(luò)指令,當待消費任務(wù)中包含的一個網(wǎng)絡(luò)指令執(zhí)行失敗之后,在執(zhí)行該網(wǎng)絡(luò)指令之前執(zhí)行過的網(wǎng)絡(luò)指令需要被重新執(zhí)行,這樣就確保了網(wǎng)絡(luò)指令執(zhí)行的原子性,避免了網(wǎng)絡(luò)指令的執(zhí)行出現(xiàn)錯誤,從而提高了網(wǎng)絡(luò)指令執(zhí)行的可靠性。[0130]在本申請的一個實施例中,多節(jié)點系統(tǒng)中的各個任務(wù)處理節(jié)點上部署有網(wǎng)絡(luò)控制器,網(wǎng)絡(luò)控制器包括任務(wù)編排管理框架,任務(wù)編排管理框架用于依次執(zhí)行待消費任務(wù)中包含的網(wǎng)絡(luò)指令。[0131]請繼續(xù)參閱圖3,其示出了多節(jié)點系統(tǒng)中一個節(jié)點的組織形式,多節(jié)點系統(tǒng)中每個節(jié)點都可以采用該組織形式。[0132]在本申請實施例中,任務(wù)編排管理框架作為組件嵌入至網(wǎng)絡(luò)控制器中,大大降低了網(wǎng)絡(luò)指令下發(fā)的延遲,同時,由于一套任務(wù)編排管理框架可以分別嵌入不同任務(wù)處理節(jié)點的網(wǎng)絡(luò)控制器中,因而還提高了程序代碼的復(fù)用性;并且,可以基于任務(wù)編排管理框架進行二次開發(fā),以使不同的網(wǎng)絡(luò)控制器實現(xiàn)不同的指令編排策略,因此也可以提高開發(fā)效率;另外,各任務(wù)編排管理框架可以單獨進行維護和測試,還降低了系統(tǒng)的耦合性。[0133]在本申請的一個實施例中,所述依次執(zhí)行待消費任務(wù)中包含的網(wǎng)絡(luò)指令,包括:依次將待消費任務(wù)中包含的網(wǎng)絡(luò)指令發(fā)送至與網(wǎng)絡(luò)指令對應(yīng)的網(wǎng)絡(luò)設(shè)備。[0134]此處的網(wǎng)絡(luò)設(shè)備可以為邊緣網(wǎng)關(guān)等各種類型的網(wǎng)絡(luò)設(shè)備。[0135]網(wǎng)絡(luò)指令執(zhí)行成功可以表示網(wǎng)絡(luò)指令成功發(fā)送至與網(wǎng)絡(luò)指令對應(yīng)的網(wǎng)絡(luò)設(shè)備,還可以表示網(wǎng)絡(luò)指令被發(fā)送至對應(yīng)的網(wǎng)絡(luò)設(shè)備之后,接收到該網(wǎng)絡(luò)指令返回的代表成功執(zhí)行該網(wǎng)絡(luò)指令的響應(yīng)信息。[0136]在本申請的一個實施例中,網(wǎng)絡(luò)控制器還包括遠程調(diào)用客戶端,依次執(zhí)行待消費任務(wù)中包含的網(wǎng)絡(luò)指令的步驟可以包括:依次將待消費任務(wù)中的網(wǎng)絡(luò)指令發(fā)送至遠程調(diào)用客戶端,以使遠程調(diào)用客戶端依次向與網(wǎng)絡(luò)指令對應(yīng)的網(wǎng)絡(luò)設(shè)備發(fā)送網(wǎng)絡(luò)指令。[0137]請參閱圖3,網(wǎng)絡(luò)控制器中的RPCClient即為遠程調(diào)用客戶端,因而,本申請實施例還實現(xiàn)了基于遠程調(diào)用協(xié)議進行網(wǎng)絡(luò)指令的編排。[0138]在本申請的一個實施例中,所述方法由多個任務(wù)處理節(jié)點中的指定任務(wù)處理節(jié)點[0139]若指定任務(wù)處理節(jié)點是多節(jié)點系統(tǒng)中持續(xù)正常工作時間最長的任務(wù)處理節(jié)點,則獲取多節(jié)點系統(tǒng)中未處理完成的第二任務(wù)的標識信息;[0140]將第二任務(wù)的標識信息投放至消息隊列中。[0141]多節(jié)點系統(tǒng)中的任務(wù)處理節(jié)點可以構(gòu)成一個集群,一個任務(wù)處理節(jié)點的持續(xù)正常工作時間最長,即該任務(wù)處理節(jié)點是多節(jié)點系統(tǒng)中與注冊中心之間保持正常的心跳連接的持續(xù)時長的任務(wù)處理節(jié)點,也可以稱為集群中最老的節(jié)點。[0142]在本申請的一個實施例中,若指定任務(wù)處理節(jié)點是多節(jié)點系統(tǒng)中持續(xù)正常工作時間最長的任務(wù)處理節(jié)點,則獲取多節(jié)點系統(tǒng)中未處理完成的第二任務(wù)的標識信息的步驟具體可以包括:[0143]若指定任務(wù)處理節(jié)點是多節(jié)點系統(tǒng)中持續(xù)正常工作時間最長的任務(wù)處理節(jié)點,則在等待預(yù)定時間之后獲取多節(jié)點系統(tǒng)中未處理完成的第二任務(wù)的標識信息。[0144]通過在等待預(yù)定時間之后再獲取第二任務(wù)的標識信息,可以減少在指定任務(wù)處理節(jié)點積壓的任務(wù),減少指定任務(wù)處理節(jié)點的負荷。[0145]預(yù)定時間可以根據(jù)需要任意設(shè)定,比如可以設(shè)置為2分鐘。[0146]圖7示出了根據(jù)本申請的一個實施例的節(jié)點全部宕機時多節(jié)點系統(tǒng)的處理流程示意圖,其中,圖7的右上角示出了節(jié)點狀態(tài)與時間關(guān)系的示意圖。請參見圖7,節(jié)點全部宕機時多節(jié)點系統(tǒng)的處理流程可以如下:時間點不同的原因是由于心跳延遲,節(jié)點02在T2時間點才被注冊中心發(fā)現(xiàn)宕機。[0149]3、節(jié)點03在T1時間上線,節(jié)點03按照前述實施例中的方案能夠檢測到節(jié)點02發(fā)生宕機,可以從緩存中獲取節(jié)點02的任務(wù)列表,并將任務(wù)列表中的任務(wù)投放至消息隊列中,從而對節(jié)點02未完成的任務(wù)實現(xiàn)恢復(fù)執(zhí)行,節(jié)點03能夠?qū)崿F(xiàn)對這些任務(wù)的接管,而節(jié)點01未完成的任務(wù)無法被接管。[0150]4、當節(jié)點03通過注冊中心發(fā)現(xiàn)自己是當前集群最老的節(jié)點時,即發(fā)現(xiàn)自己是持續(xù)正常工作時間最長的節(jié)點時,會在2分鐘(僅為示例)后執(zhí)行一個集群恢復(fù)事件。[0151]5、集群恢復(fù)事件會根據(jù)緩存中各節(jié)點的任務(wù)列表和任務(wù)被執(zhí)行時間集合,獲取緩存中將所有任務(wù)執(zhí)行時間早于當前集群最老節(jié)點(節(jié)點03)誕生時間的任務(wù)的標識信息,并將這些任務(wù)的標識信息重新投遞至消息隊列中。[0152]6、節(jié)點03從消息隊列中獲得任務(wù)的標識信息,以消費任務(wù),使得節(jié)點01未處理完成的任務(wù)得以恢復(fù)執(zhí)行。[0153]本申請實施例中,即使多節(jié)點系統(tǒng)中的所有任務(wù)處理節(jié)點均發(fā)生宕機,只要有一個任務(wù)處理節(jié)點上線,其他任務(wù)處理節(jié)點未處理完成的任務(wù)就可以被繼續(xù)執(zhí)行,從而進一步提高了系統(tǒng)的可用性。[0154]在前面所說的例子中,消息隊列中包含的僅僅為節(jié)點未處理完成的第一任務(wù)的標識信息,但消息隊列還可以包括在正常情況下為任務(wù)處理節(jié)點分配的任務(wù)的標識信息。[0155]在本申請的一個實施例中,網(wǎng)絡(luò)控制器還包括任務(wù)投放客戶端,消息隊列中還包含有第三任務(wù)的標識信息,第三任務(wù)的標識信息是由任務(wù)投放客戶端投放至消息隊列中[0156]任務(wù)投放客戶端負責(zé)向任務(wù)編排管理框架發(fā)送正常情況下所需要處理的任務(wù)的標識信息,任務(wù)編排管理框架不僅能夠在其他節(jié)點宕機時處理其他節(jié)點的未處理完成的任務(wù),還可以處理正常情況下所需要執(zhí)行的任務(wù),對于未被其他任務(wù)處理節(jié)點處理完成的任務(wù),當前任務(wù)處理節(jié)點能夠像處理正常情況下所需要處理的任務(wù)一樣進行處理。[0157]請參見圖3,任務(wù)投放客戶端可以包括網(wǎng)絡(luò)編排與計算模塊、網(wǎng)絡(luò)模型對象管理模塊及全局質(zhì)量監(jiān)控流量調(diào)度模塊等各種用于生成網(wǎng)絡(luò)指令的功能模塊,任務(wù)投放客戶端在網(wǎng)絡(luò)控制器中的位置與這些模塊在網(wǎng)絡(luò)控制器中的位置是類似的。因此,每個任務(wù)處理節(jié)點都可以包含一個任務(wù)投放客戶端和一個任務(wù)編排管理框架,任務(wù)投放客戶端和任務(wù)編排管理框架都嵌入在該任務(wù)處理節(jié)點的網(wǎng)絡(luò)控制器上。[0158]圖8示出了根據(jù)本申請的一個實施例的基于任務(wù)編排管理框架的任務(wù)執(zhí)行流程示[0159]下面,先介紹該基于任務(wù)編排管理框架的系統(tǒng)內(nèi)組件和對應(yīng)的功能。[0160](1)客戶端:負責(zé)網(wǎng)絡(luò)指令生成,將一組網(wǎng)絡(luò)指令組合成任務(wù)進行提交,此處的客戶端即相當于前述實施例中的任務(wù)投放客戶端。[0161](2)消息隊列:客戶端同任務(wù)編排管理框架的橋梁,負責(zé)對任務(wù)量進行削峰。[0162](3)存儲/緩存:完成任務(wù)和指令的持久化和緩存,保證任務(wù)不丟失可恢復(fù),可回溯可審計。[0164](5)任務(wù)編排管理框架:網(wǎng)絡(luò)指令的具體執(zhí)行者,負責(zé)將執(zhí)行完任務(wù)中的一組指令,并時刻刷新快照保證任務(wù)不會丟失,可以宕機時被其他節(jié)點的任務(wù)編排框架接管。[0165]在上述組件中,一個客戶端和一個任務(wù)編排管理框架可以位于同一個節(jié)點上,每個節(jié)點都可以包含有一個客戶端和一個任務(wù)編排管理框架,注冊中心和消息隊列可以位于任意節(jié)點上,存儲/緩存也可以位于一個或多個節(jié)點上;另外,還可以提高系統(tǒng)的可用性。[0166]圖8實施例中的基于任務(wù)編排管理框架的任務(wù)執(zhí)行流程如下:[0167]a)每個任務(wù)編排管理框架在系統(tǒng)啟動之初,要去注冊中心完成注冊,并檢測其他任務(wù)編排管理框架的狀態(tài),以此來保證其他框架/節(jié)點宕機時,可以及時發(fā)現(xiàn)并作故障遷移,此處的系統(tǒng)即為包含任務(wù)編排管理框架以及上述組件的系統(tǒng)。[0168]b)客戶端根據(jù)用戶的指令向消息隊列發(fā)送任務(wù)ID,客戶端還會將任務(wù)ID和對應(yīng)的任務(wù)實體二進制放入緩存中。[0169]c)任務(wù)編排管理框架從消息隊列獲取任務(wù)ID。[0170]在本申請的一個實施例中,任務(wù)編排管理框架從消息隊列中獲取由該任務(wù)編排管理框架對應(yīng)的客戶端發(fā)送的任務(wù)ID。[0171]在這種情況下,前述實施例的緩存中節(jié)點的任務(wù)列表,可以是由客戶端寫入的,即客戶端指定了節(jié)點要處理的任務(wù),而任務(wù)列表對于其他節(jié)點未處理完成的任務(wù)ID,可以由獲取到該任務(wù)ID的節(jié)點在獲取到該任務(wù)ID之后立即寫入緩存中。[0172]在本申請的其他實施例中,任務(wù)編排管理框架也可以獲取其他客戶端發(fā)送的任務(wù)[0173]d)依據(jù)任務(wù)ID加載對應(yīng)任務(wù)實體二進制。[0174]e)對任務(wù)實體二進制反序列化,得到任務(wù)。[0175]f)依次執(zhí)行任務(wù)中的網(wǎng)絡(luò)指令,當執(zhí)行網(wǎng)絡(luò)指令失敗時,框架會自動回滾已經(jīng)執(zhí)行過的網(wǎng)絡(luò)指令,此步驟為保證原子性關(guān)鍵步驟,執(zhí)行網(wǎng)絡(luò)指令即向該網(wǎng)絡(luò)指令對應(yīng)的網(wǎng)絡(luò)設(shè)備發(fā)送該網(wǎng)絡(luò)指令。[0177]h)對任務(wù)二進制進行快照,刷入緩存。此處的快照即為位于緩存中的任務(wù)二進制。此步驟為高可用和容災(zāi)關(guān)鍵步驟,每次刷新任務(wù)快照,保證了當框架/節(jié)點宕機時,其他框架/節(jié)點可以依據(jù)快照信息恢復(fù)執(zhí)行任務(wù),保證任務(wù)完成。[0178]i)若任務(wù)沒有執(zhí)行完成,則繼續(xù)執(zhí)行步驟e)及之后的步驟。[0179]j)將任務(wù)持久化到用于存儲的磁盤中,進行落盤。[0180]綜上所述,根據(jù)本申請實施例應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理方法,可以保障指令編排的原子性,能夠確??刂破髟阱礄C之后編排指令任務(wù)不丟失,還可以提高整體開發(fā)效[0181]以下介紹本申請的裝置實施例,可以用于執(zhí)行本申請上述實施例中的應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理方法。對于本申請裝置實施例中未披露的細節(jié),請參照本申請上述的應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理方法的實施例。[0182]圖9示出了根據(jù)本申請的一個實施例的應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理裝置的框[0183]參照圖9所示,根據(jù)本申請的一個實施例的應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理裝置[0184]其中,檢測單元910用于檢測所述多個任務(wù)處理節(jié)點的工作狀態(tài);獲取單元920用于從消息隊列中獲取待消費任務(wù)的標識信息,所述消息隊列中包含有發(fā)生宕機的第一任務(wù)處理節(jié)點未處理完成的第一任務(wù)的標識信息,所述第一任務(wù)的標識信息是由第二任務(wù)處理節(jié)點在檢測到所述第一任務(wù)處理節(jié)點宕機后獲取并投放至所述消息隊列中的;處理單元930用于根據(jù)獲取到的待消費任務(wù)的標識信息,處理所述待消費任務(wù)。[0185]在本申請的一些實施例中,基于前述方案,獲取單元920還用于:若檢測到所述第一任務(wù)處理節(jié)點發(fā)生宕機,則與所述多個任務(wù)處理節(jié)點中的其它任務(wù)處理節(jié)點通過競爭的方式獲取所述第一任務(wù)處理節(jié)點未處理完成的第一任務(wù)的標識信息;其中,所述第二任務(wù)處理節(jié)點包括在競爭中取得成功的任務(wù)處理節(jié)點。[0186]在本申請的一些實施例中,基于前述方案,應(yīng)用于多節(jié)點系統(tǒng)的任務(wù)處理裝置900位于所述多個任務(wù)處理節(jié)點中的指定任務(wù)處理節(jié)點內(nèi),獲取單元920還用于:若所述指定任務(wù)處理節(jié)點是所述多節(jié)點系統(tǒng)中持續(xù)正常工作時間最長的任務(wù)處理節(jié)點,則獲取所述多節(jié)點系統(tǒng)中未處理完成的第二任務(wù)的標識信息;將所述第二任務(wù)的標識信息投放至所述消息隊列中。[0187]在本申請的一些實施例中,基于前述方案,獲取單元920配置為:若所述指定任務(wù)處理節(jié)點是所述多節(jié)點系統(tǒng)中持續(xù)正常工作時間最長的任務(wù)處理節(jié)點,則在等待預(yù)定時間之后獲取所述多節(jié)點系統(tǒng)中未處理完成的第二任務(wù)的標識信息。[0188]在本申請的一些實施例中,基于前述方案,在檢測所述多個任務(wù)處理節(jié)點的工作狀態(tài)之前,檢測單元910還用于:向注冊中心發(fā)送注冊請求,并在注冊成功后建立與所述注冊中心之間的心跳連接;檢測單元910配置為:對所述注冊中心中維護的心跳連接的狀態(tài)進行檢測,以檢測所述多個任務(wù)處理節(jié)點的工作狀態(tài)。[0189]在本申請的一些實施例中,基于前述方案,處理單元930配置為:從所述多節(jié)點系統(tǒng)對應(yīng)的緩存中加載所述待消費任務(wù)的標識信息所對應(yīng)的任務(wù)實體二進制數(shù)據(jù);對所述任務(wù)實體二進制數(shù)據(jù)進行反序列化處理,得到所述待消費任務(wù);處理所述待消費任務(wù)。[0190]在本申請的一些實施例中,基于前述方案,所述待消費任務(wù)包括至少一個網(wǎng)絡(luò)指令,所述任務(wù)實體二進制數(shù)據(jù)包括與網(wǎng)絡(luò)指令對應(yīng)的原始二進制數(shù)據(jù);處理單元930配置為:依次執(zhí)行所述待消費任務(wù)中包含的網(wǎng)絡(luò)指令,其中,在每個網(wǎng)絡(luò)指令執(zhí)行成功之后,將所述每個網(wǎng)絡(luò)指令進行序列化處理,并通過序列化處理后得到的二進制數(shù)據(jù)替換所述每個網(wǎng)絡(luò)指令在所述緩存中對應(yīng)的原始二進制數(shù)據(jù)。[0191]在本申請的一些實施例中,基于前述方案,處理單元930還配置為:若對所述待消費任務(wù)中包含的網(wǎng)絡(luò)指令執(zhí)行失敗,則對所述待消費任務(wù)中已執(zhí)行過的網(wǎng)絡(luò)指令進行回滾處理,以重新處理所述待消費任務(wù)。[0192]在本申請的一些實施例中,基于前述方案,處理單元930還配置為:從所述多節(jié)點系統(tǒng)對應(yīng)的緩存中加載所述待消費任務(wù)的標識信息所對應(yīng)的任務(wù)實體二進制數(shù)據(jù)之后,將所述緩存中的任務(wù)實體二進制數(shù)據(jù)持久化到磁盤中。[0193]在本申請的一些實施例中,基于前述方案,所述多節(jié)點系統(tǒng)中的各個任務(wù)處理節(jié)點上部署有網(wǎng)絡(luò)控制器,所述網(wǎng)絡(luò)控制器包括任務(wù)編排管理框架,所述任務(wù)編排管理框架用于依次執(zhí)行所述待消費任務(wù)中包含的網(wǎng)絡(luò)指令。[0194]在本申請的一些實施例中,基于前述方案,所述網(wǎng)絡(luò)控制器還包括遠程調(diào)用客戶端,處理單元930配置為:依次將所述待消費任務(wù)中的網(wǎng)絡(luò)指令發(fā)送至所述遠程調(diào)用客戶端,以使所述遠程調(diào)用客戶端依次向與所述網(wǎng)絡(luò)指令對應(yīng)的網(wǎng)絡(luò)設(shè)備發(fā)送所述網(wǎng)絡(luò)指令。[0195]在本申請的一些實施例中,基于前述方案,所述網(wǎng)絡(luò)控制器還包括任務(wù)投放客戶端,所述消息隊列中還包含有第三任務(wù)的標識信息,所述第三任務(wù)的標識信息是由所述任務(wù)投放客戶端投放至所述消息隊列中的。[0196]圖10示出了適于用來實現(xiàn)本申請實施例的電子設(shè)備的計算機系統(tǒng)的結(jié)構(gòu)示意圖。[0197]需要說明的是,圖10示出的電子設(shè)備的計算機系統(tǒng)1000僅是一個示例,不應(yīng)對本申請實施例的功能和使用范圍帶來任何限制。[0198]如圖10所示,計算機系統(tǒng)1000包括中央處理單元(CentralProcessingUnit,CPU)1001,其可以根據(jù)存儲在只讀存儲器(Read-OnlyMemory,ROM)1002中的程序或者從存儲部分1008加載到隨機訪問存儲器(RandomAccessMemory,RAM)1003中的程序而執(zhí)行各作所需的各種程序和數(shù)據(jù)。CPU1001、ROM1002以及RAM1003通過總線1004入/輸出(Input/Output,I/0)接口1005也連接至總線1004。[0199]以下部件連接至I/0接口1005:包括鍵盤、鼠標等的輸入部分1006;包括諸如陰極器等的輸出部分1007;包括硬盤等的存儲部分1008;以及包括諸如LAN(LocalAreaNetwork,局域網(wǎng))卡、調(diào)制解調(diào)器等的網(wǎng)絡(luò)接口卡的通信部分1009。通信部分1009經(jīng)由諸如因特網(wǎng)的網(wǎng)絡(luò)執(zhí)行通信處理。驅(qū)動器1010也根據(jù)需要連接至I/0接口1005。可拆卸介質(zhì)從其上讀出的計算機程序根據(jù)需要被安裝入存儲部分1008。[0200]特別地,根據(jù)本申請的實施例,上文參考流程圖描述的過程可以被實現(xiàn)為計算機軟件程序。例如,本申請的實施例包括一種計算機程序產(chǎn)品,其包括承載在計算機可讀介質(zhì)上的計算機程序,該計算機程序包含用于執(zhí)行流程圖所示的方法的程序代碼。在這樣的實施例中,該計算機程序可以通過通信部分1009從網(wǎng)絡(luò)上被下載和安裝,和/或從可拆卸介質(zhì)1011被安裝。在該計算機程序被中央處理單元(CPU)1001執(zhí)行時,執(zhí)行本申請的系統(tǒng)中限定的各種功能。[0201]需要說明的是,本申請實施例所示的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論