專利名稱:提高有狀態(tài)應(yīng)用的可用性的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于提高有狀態(tài)應(yīng)用的可用性的方法和系統(tǒng)。
背景技術(shù):
一般而言,分布式服務(wù)應(yīng)用被主存(host)在云計算網(wǎng)絡(luò)中(跨越多個節(jié)點),且主要是為了通過服務(wù)應(yīng)用組件的冗余來促進高可用性。這些服務(wù)應(yīng)用通常被劃分成多個部分,這多個部分包括一組服務(wù)應(yīng)用組件。使用這些部分有助于確保整個服務(wù)應(yīng)用不會在對主存該服務(wù)應(yīng)用的節(jié)點進行更新或維修期間變得不可用。在操作中,當(dāng)這些部分單獨地離線時,允許該服務(wù)應(yīng)用的余下部分繼續(xù)在線操作。因此,在理想情況下,該服務(wù)應(yīng)用的用戶不會遇到該服務(wù)應(yīng)用的可用性失效。當(dāng)前,服務(wù)應(yīng)用的劃分是基于位置相關(guān)標(biāo)準(zhǔn)(例如,駐留在數(shù)據(jù)中心內(nèi)的公共節(jié)點上的服務(wù)應(yīng)用組件)或功能相關(guān)標(biāo)準(zhǔn)(例如,執(zhí)行某種角色的所有服務(wù)應(yīng)用組件不能同時離線)。用于將服務(wù)應(yīng)用組件分組成多個部分的這些標(biāo)準(zhǔn)對于有狀態(tài)應(yīng)用(statefulapplication)(即依賴于存儲在其組件外部的數(shù)據(jù)的易失性軟件)而言在某種程度上是有效的。然而,這些標(biāo)準(zhǔn)對于保持持久內(nèi)部狀態(tài)的有狀態(tài)應(yīng)用而言是無效的,該狀態(tài)在服務(wù)應(yīng)用組件處持續(xù)。即,利用上述標(biāo)準(zhǔn)無法考慮服務(wù)應(yīng)用組件的當(dāng)前內(nèi)部狀態(tài),由此在使先前形成的服務(wù)應(yīng)用的部分離線時,導(dǎo)致該服務(wù)應(yīng)用的潛在不可用。因此,本申請中介紹了一種解決上述問題的技術(shù),實現(xiàn)了保持內(nèi)部狀態(tài)的分布式服務(wù)應(yīng)用的高可用性。
發(fā)明內(nèi)容
提供本發(fā)明內(nèi)容是為了以簡化的形式介紹將在以下具體實施方式
中進一步描述的概念。本發(fā)明內(nèi)容并非旨在標(biāo)識所要求保護的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確定所要求保護的主題的范圍。本發(fā)明的實施例涉及用于促進保持內(nèi)部狀態(tài)的服務(wù)應(yīng)用及其部分的高可用性的系統(tǒng)、方法以及計算機存儲介質(zhì)。一般而言,這些“有狀態(tài)”服務(wù)應(yīng)用包括云計算網(wǎng)絡(luò)(下文稱為“云”)內(nèi)的節(jié)點(例如物理機或虛擬機)分布的多個部分,其中這些節(jié)點被容納在一個或多個數(shù)據(jù)存儲中。典型地,云配備有結(jié)構(gòu)控制器,該結(jié)構(gòu)控制器一般負責(zé)圍繞對支持云的基礎(chǔ)功能的計算機資源的健康進行維護和管理的多種任務(wù)。例如,結(jié)構(gòu)控制器可通過選定有狀態(tài)服務(wù)應(yīng)用的部分所駐留的節(jié)點作為目標(biāo)并重新配置這些節(jié)點,以負責(zé)組織協(xié)調(diào)對運行在云上的有狀態(tài)服務(wù)應(yīng)用的更新。在這些更新期間,結(jié)構(gòu)控制器在選定這些節(jié)點作為目標(biāo)時考慮服務(wù)應(yīng)用部分的可用性,以確保有狀態(tài)服務(wù)應(yīng)用均可操作。此外,結(jié)構(gòu)控制器通過考慮服務(wù)應(yīng)用部分的內(nèi)部狀態(tài)來確定要選定作為目標(biāo)的節(jié)點,由此試圖確保在更新期間不使內(nèi)部狀態(tài)完全離線。在示例性實施例中,結(jié)構(gòu)控制器依賴于用于組織協(xié)調(diào)更新來以有狀態(tài)服務(wù)應(yīng)用保持在線和完全功能的方式調(diào)度節(jié)點的重新配置的軟件組件(在本文中稱為“租戶改變管理器(tenant-change manager ) ”)。在操作中,租戶改變管理器采用在結(jié)構(gòu)控制器與有狀態(tài)服務(wù)應(yīng)用的專用組件之間交互的協(xié)議。這些專用組件(在本文中稱為“管理角色”)在有狀態(tài)服務(wù)應(yīng)用內(nèi)實現(xiàn),以監(jiān)測有狀態(tài)服務(wù)應(yīng)用的功能部分(諸如有狀態(tài)服務(wù)應(yīng)用的角色的實例)的內(nèi)部狀態(tài)。通過租戶改變管理器促進的該交互通過考慮角色實例的內(nèi)部狀態(tài)的可用性來確保有狀態(tài)服務(wù)應(yīng)用內(nèi)的改變操作的正確排序,以保持整個有狀態(tài)服務(wù)應(yīng)用的恒定高可用性。作為示例,對內(nèi)部狀態(tài)可用性的該考慮涉及管理角色推斷改變操作期間的內(nèi)部狀態(tài),并將該信息報告給租戶改變管理器。租戶改變管理器采用該信息來建立用于在有狀態(tài)服務(wù)應(yīng)用的特定角色實例上實現(xiàn)改變操作或“租戶任務(wù)”的開始時間。因此,租戶改變管理器與管理角色之間的交互通過考慮分布式角色實例的個體內(nèi)部狀態(tài)而訪問有狀態(tài)服務(wù)應(yīng)用的真實可用性。
以下參考附圖詳細描述本發(fā)明的實施例,附圖中圖1是適用于實現(xiàn)本發(fā)明的實施例的示例性計算環(huán)境的框圖;圖2是適用于實現(xiàn)本發(fā)明的實施例的數(shù)據(jù)中心的框圖,該數(shù)據(jù)中心配置成容許和支持分布在數(shù)據(jù)中心的多個節(jié)點上的服務(wù)應(yīng)用的操作;圖3是示出根據(jù)本發(fā)明的實施例的示例性主存環(huán)境的框圖,其中多個角色實例被組合以形成更新域,以用于逐步實現(xiàn)數(shù)據(jù)中心內(nèi)的租戶任務(wù);圖4是根據(jù)本發(fā)明的實施例的用于有狀態(tài)節(jié)點和無狀態(tài)節(jié)點的處理流程的圖形表不;圖5是根據(jù)本發(fā)明的實施例的包括用于執(zhí)行實現(xiàn)租戶任務(wù)的分立操作的多個組件的云計算網(wǎng)絡(luò)的框圖;圖6是根據(jù)本發(fā)明的實施例的描繪結(jié)構(gòu)控制器和服務(wù)應(yīng)用之間的交互的數(shù)據(jù)中心的示例性拓撲的圖形表示;圖7是示出根據(jù)本發(fā)明的實施例的用于促進云計算網(wǎng)絡(luò)的結(jié)構(gòu)控制器與服務(wù)應(yīng)用之間的交互的整體方法的流程圖;以及圖8是根據(jù)本發(fā)明的實施例的示出用于在執(zhí)行租戶任務(wù)時調(diào)度高優(yōu)先級任務(wù)的整體方法的流程圖。詳細描述本文用細節(jié)來描述本發(fā)明的實施例的主題以滿足法定要求。然而,該描述本身并非旨在限制本專利的范圍。相反,發(fā)明人設(shè)想所要求保護的主題還可結(jié)合其他當(dāng)前或未來技術(shù)按照其他方式來具體化,以包括不同的步驟或類似于本文檔中所描述的步驟的步驟組
口 o一般而言,本發(fā)明的實施例在云計算網(wǎng)絡(luò)中引入了通過允許有狀態(tài)服務(wù)應(yīng)用保持對它們的顧客的高可用性來支持對有狀態(tài)服務(wù)應(yīng)用的更新和修復(fù)的機制。具體而言,這些機制能夠在有狀態(tài)服務(wù)應(yīng)用的多個部分(在本文中稱為“角色實例”)的升級、配置改變、向上或向下擴展以及重新定位過程期間管理這些有狀態(tài)服務(wù)應(yīng)用的持續(xù)可用性。在示例性實施例中,這些機制依賴于有狀態(tài)服務(wù)應(yīng)用與結(jié)構(gòu)控制器之間的交互,結(jié)構(gòu)控制器管理有狀態(tài)服務(wù)應(yīng)用的角色實例的生命周期。如下文詳細討論,在一個實例中,該機制包括駐留在結(jié)構(gòu)控制器處的租戶改變管理器和駐留在有狀態(tài)服務(wù)應(yīng)用內(nèi)的管理角色,管理角色交互以智能地調(diào)度更新或修復(fù)。如本文中所使用,短語“有狀態(tài)服務(wù)應(yīng)用”一般表示其中狀態(tài)嵌入服務(wù)應(yīng)用相應(yīng)的角色實例或程序組件中的那些服務(wù)應(yīng)用。例如,在負責(zé)顯露特定的在線接口以用于進行銀行業(yè)務(wù)的金融機構(gòu)服務(wù)應(yīng)用內(nèi),狀態(tài)可包含顧客數(shù)據(jù)(例如賬戶信息),顧客數(shù)據(jù)被保持在服務(wù)應(yīng)用的角色實例內(nèi)部。即,與上傳至遠程位置相反,顧客數(shù)據(jù)被本地主存在服務(wù)應(yīng)用角色實例處。因此,當(dāng)服務(wù)應(yīng)用分布在云計算網(wǎng)絡(luò)內(nèi)的多個節(jié)點上時,顧客提供的賬戶信息或“狀態(tài)”也分布在云計算網(wǎng)絡(luò)的節(jié)點上。此外,因為存在與服務(wù)應(yīng)用進行銀行業(yè)務(wù)的多個顧客,所以每個角色實例可具有稍不同的內(nèi)部狀態(tài)。因此,伴隨著知曉作為云計算網(wǎng)絡(luò)基礎(chǔ)的平臺的可用性和健康狀況,理解其中運行的分布式服務(wù)應(yīng)用的內(nèi)部狀態(tài)對于調(diào)度維護和恢復(fù)操作的定時是有幫助的。例如,當(dāng)執(zhí)行維護和恢復(fù)操作時,可能使服務(wù)應(yīng)用的多個部分離線。如果沒有特定內(nèi)部狀態(tài)的副本仍保持在線,則使這些部分離線會不利地影響甚至停用整個服務(wù)應(yīng)用。因此,本發(fā)明的實施例涉及用于理解多個內(nèi)部狀態(tài)的位置并協(xié)調(diào)維護和恢復(fù)操作以使得每個內(nèi)部狀態(tài)的副本保持在線的機制。因此,在理解內(nèi)部狀態(tài)位置的情況下協(xié)調(diào)維護和恢復(fù)操作有助于實現(xiàn)角色實例的內(nèi)部狀態(tài)的高可靠性。在一個實施例中,協(xié)調(diào)可包括在相同角色的多個實例上復(fù)制特定狀態(tài),以允許使角色實例中本地主存該特定狀態(tài)的角色之一實例離線。例如,如果角色當(dāng)前具有在數(shù)據(jù)中心上分布的五個實例,且如果這些角色實例中的特定一個角色實例存儲顧客想要維持的狀態(tài),則在使該特定角色實例離線之前,將所存儲的該狀態(tài)復(fù)制、傳播以及維持在五個實例中的其它實例處。以此方式,在多個節(jié)點上的多個角色實例上復(fù)制所存儲狀態(tài)確保該特定狀態(tài)的可靠性。因此,即使該特定角色實例在維護和恢復(fù)操作范圍之外失效,另一角色實例保持失效的角色實例的所存儲狀態(tài)。雖然已經(jīng)描述了鑒于維護和恢復(fù)操作來復(fù)制狀態(tài)的多個不同實施例,但應(yīng)理解和領(lǐng)會的是,其它類型的適合的服務(wù)應(yīng)用也可經(jīng)由本文中描述的過程來更新,而且本發(fā)明的實施例不限于本文中描述的那些有狀態(tài)服務(wù)應(yīng)用。例如,可按照與在云計算網(wǎng)絡(luò)的基礎(chǔ)平臺內(nèi)執(zhí)行租戶任務(wù)時相似的方式來解決無狀態(tài)服務(wù)應(yīng)用。如本文中所使用,短語“無狀態(tài)服務(wù)應(yīng)用” 一般表示由云計算網(wǎng)絡(luò)主存的服務(wù),該服務(wù)將其存儲數(shù)據(jù)卸載至外部實體,諸如能夠管理所存儲數(shù)據(jù)的另一數(shù)據(jù)中心。該數(shù)據(jù)中心可在不同的物理機上保持不同的狀態(tài),但能夠通過創(chuàng)建許多冗余(例如多個機器上的多個副本)來管理這些狀態(tài)。因此,在一個方面中,本發(fā)明的實施例涉及一個或多個機器可讀介質(zhì),一個或多個機器可讀介質(zhì)上具體化有計算機可執(zhí)行指令,計算機可執(zhí)行指令在執(zhí)行時執(zhí)行用于促進云計算網(wǎng)絡(luò)的結(jié)構(gòu)控制器與運行在云計算網(wǎng)絡(luò)中的服務(wù)應(yīng)用之間的交互的方法。該方法最初可包括選擇包括該服務(wù)應(yīng)用的一個或多個角色實例的第一更新域(UD)。典型地,角色實例運行在在線條件下,且代表支持該服務(wù)應(yīng)用的功能的組件程序(例如該服務(wù)應(yīng)用的角色的單個復(fù)制)。該方法還可包括準(zhǔn)備第一 UD以用于執(zhí)行租戶任務(wù)(例如平臺發(fā)起的更新、顧客發(fā)起的更新、平臺發(fā)起的維修、或顧客發(fā)起的維修)。在示例性實施例中,準(zhǔn)備第一 UD包括至少以下步驟通知服務(wù)應(yīng)用內(nèi)的管理角色關(guān)于執(zhí)行租戶任務(wù)的結(jié)構(gòu)控制器意圖;以及基于確定受租戶任務(wù)影響的角色實例的內(nèi)部狀態(tài)是否在該服務(wù)應(yīng)用的不受租戶任務(wù)影響的一部分上復(fù)制,從該管理角色接收響應(yīng)。在實施例中,該響應(yīng)是由管理角色經(jīng)過檢查角色實例內(nèi)部狀態(tài)和/或經(jīng)過采取其它動作之后產(chǎn)生的。例如,這些其它動作可包括利用在云計算網(wǎng)絡(luò)的基礎(chǔ)結(jié)構(gòu)內(nèi)建立的信道來檢索附加信息(例如租戶角色的狀態(tài))。經(jīng)過準(zhǔn)備第一 UD的角色實例之后,發(fā)起將這些角色實例停用至離線狀態(tài)。一般而言,停用角色實例包括使主存第一 UD內(nèi)的一個或多個角色實例的一組節(jié)點不工作。一旦角色實例已采取離線狀態(tài),就允許租戶任務(wù)在第一 UD上執(zhí)行。再進一步,該方法可包括,在完成租戶任務(wù)的執(zhí)行后,就將第一 UD的角色實例恢復(fù)至在線狀態(tài)。在示例性實施例中,將第一 UD的實例恢復(fù)至在線狀態(tài)包括至少以下步驟驗證受租戶任務(wù)影響的角色實例在起作用;以及通知管理角色關(guān)于角色實例上的租戶任務(wù)的執(zhí)行完成,由此提示該服務(wù)應(yīng)用繼續(xù)利用這些角色實例來執(zhí)行任務(wù)。一般而言,將第一UD內(nèi)的角色實例恢復(fù)至在線狀態(tài)還包括使主存這些角色實例的該組節(jié)點工作。在將第一 m)內(nèi)的角色實例恢復(fù)至在線狀態(tài)后,則該方法可通過選擇角色實例的第二 UD以在其上運行租戶任務(wù)而繼續(xù)。典型地,第一 UD和第二 UD在組員關(guān)系上是互斥的,可分別代表在云計算網(wǎng)絡(luò)上傳播租戶任務(wù)時的分立階段。在另一方面中,本發(fā)明的實施例涉及用于在執(zhí)行租戶任務(wù)時調(diào)度高優(yōu)先級任務(wù)的計算機化方法。該計算機化方法包括執(zhí)行以下邏輯步驟接收在服務(wù)應(yīng)用上執(zhí)行租戶任務(wù)的指示;以及標(biāo)識包括該服務(wù)應(yīng)用的一個或多個角色實例的更新域(UD)。在此時,角色實例在在線狀態(tài)下操作。所準(zhǔn)備的UD是為了執(zhí)行租戶任務(wù),而且隨后將UD的實例停用至離線狀態(tài)。在示例性實施例中,準(zhǔn)備UD以用于執(zhí)行租戶任務(wù)的過程包括多個邏輯步驟,包括以下通知服務(wù)應(yīng)用內(nèi)的管理角色關(guān)于執(zhí)行該租戶任務(wù)的意圖;以及接收來自管理角色的肯定響應(yīng),或接收來自管理角色的否定響應(yīng)。典型地,在管理角色確定受租戶任務(wù)影響的角色實例的內(nèi)部狀態(tài)被復(fù)制在該服務(wù)應(yīng)用的不受租戶任務(wù)影響的部分上之后,接收肯定響應(yīng)。在租戶改變管理器(在結(jié)構(gòu)控制器內(nèi)操作)接收來自管理角色的肯定響應(yīng)后,租戶任務(wù)可能被允許在角色實例上執(zhí)行。替代地,在管理角色確定受租戶任務(wù)影響的角色實例的內(nèi)部狀態(tài)受限于那些角色實例之后,接收否定響應(yīng)。在租戶改變管理器接收到來自管理角色的否定響應(yīng)之后,多個操作可接著發(fā)生。在一個實施例中,當(dāng)執(zhí)行租戶任務(wù)的指示是顧客發(fā)起的,則租戶任務(wù)在角色實例上的執(zhí)行被推遲,以允許內(nèi)部狀態(tài)的復(fù)制。在另一實施例中,當(dāng)執(zhí)行租戶任務(wù)的指示是平臺發(fā)起的,則租戶任務(wù)在角色實例上的執(zhí)行被提示繼續(xù)。在某個后續(xù)時間點,接收執(zhí)行高優(yōu)先級任務(wù)的指示。如本文中所使用,短語“高優(yōu)先級”不意味著限制性,而是代表被預(yù)先確定為在優(yōu)先級方案內(nèi)搶先于租戶任務(wù)的任何任務(wù)。在接收到執(zhí)行高優(yōu)先級任務(wù)的指示后,租戶任務(wù)的部署讓位于高優(yōu)先級任務(wù)。在示例性實施例中,讓位的過程包括多個邏輯步驟,包括以下指令服務(wù)應(yīng)用執(zhí)行將角色實例恢復(fù)至在線狀態(tài)的操作的截斷集合;將租戶任務(wù)掛起;以及發(fā)起高優(yōu)先級任務(wù)在角色實例上的執(zhí)行。在完成高優(yōu)先級任務(wù)的執(zhí)行后,繼續(xù)租戶任務(wù)的部署。在示例性實施例中,繼續(xù)的過程包括多個邏輯步驟,包括以下重新發(fā)起將UD的角色實例的停用至離線狀態(tài);以及允許租戶任務(wù)在角色實例上執(zhí)行。一旦完成租戶任務(wù)的執(zhí)行,就可將UD的角色實例恢復(fù)至在線狀態(tài)。在示例性實施例中,將角色實例恢復(fù)至在線狀態(tài)的過程包括多個邏輯步驟,包括以下驗證受租戶任務(wù)影響的角色實例在起作用;以及通知管理角色關(guān)于角色實例上的租戶任務(wù)的執(zhí)行完成,由此提示該服務(wù)應(yīng)用繼續(xù)利用這些角色實例來執(zhí)行多個任務(wù)。在又一方面中,本發(fā)明的實施例涉及用于執(zhí)行使租戶任務(wù)的部署與服務(wù)應(yīng)用的組件程序協(xié)調(diào)的方法的計算機系統(tǒng)。一般地,該計算機系統(tǒng)包括耦合到計算機存儲介質(zhì)的處理單元,其中該計算機存儲介質(zhì)存儲可由該處理單元執(zhí)行的多個計算機軟件組件。最初,計算機軟件組件包括該服務(wù)應(yīng)用的一個或多個角色實例、租戶改變管理器、管理角色、主機代理、線路協(xié)議、調(diào)度組件以及節(jié)點狀態(tài)驅(qū)動器。在實施例中,角色實例代表支持該服務(wù)應(yīng)用的功能的組件程序。租戶改變管理器典型地配置用于指導(dǎo)租戶任務(wù)的部署。指導(dǎo)部署的過程一般包括傳達租戶任務(wù)部署的指示;發(fā)起將角色實例停用至離線狀態(tài);允許租戶任務(wù)在角色實例上執(zhí)行;以及發(fā)起將角色實例恢復(fù)至在線狀態(tài)。作為服務(wù)應(yīng)用的組件的管理角色典型地配置用于監(jiān)測角色實例的內(nèi)部狀態(tài)。在實施例中,在接收到租戶任務(wù)的部署的指示后,管理角色就負責(zé)確定所監(jiān)測到的受租戶任務(wù)影響的角色實例的內(nèi)部狀態(tài)是否在該服務(wù)應(yīng)用的不受租戶任務(wù)影響的部分上復(fù)制。此外,管理角色可配置用于將內(nèi)部狀態(tài)可用性的指示傳達至租戶改變管理器。主機代理典型地駐留在主存角色實例的節(jié)點上。在操作中,主機代理通過線路協(xié)議向服務(wù)應(yīng)用展現(xiàn)角色實例的預(yù)期狀態(tài)。如本文中所使用,短語“預(yù)期狀態(tài)” 一般代表角色實例采取離線狀態(tài)或在線狀態(tài)的目標(biāo)。調(diào)度組件一般配置用于根據(jù)優(yōu)先級方案使租戶任務(wù)被高優(yōu)先級任務(wù)中斷。而且,節(jié)點狀態(tài)驅(qū)動器一般配置用于將角色實例停用至離線狀態(tài)、執(zhí)行租戶任務(wù)、以及在租戶改變管理器的指導(dǎo)下將角色實例恢復(fù)至在線狀態(tài)。如上所述,與使服務(wù)應(yīng)用的所有角色實例同時離線相比,租戶任務(wù)通常被劃分成多個階段并在服務(wù)應(yīng)用的角色實例分組上逐步進行。因此,本發(fā)明的實施例涉及標(biāo)識主存環(huán)境或數(shù)據(jù)中心內(nèi)的更新域。如本文中所利用,短語“更新域”不意味著限制性,而是一般表示主存該服務(wù)應(yīng)用的一個或多個角色實例并且可同時離線的一組節(jié)點(例如物理機或虛擬機)的描述。在特定實施例中,通過更新域描述的該組節(jié)點代表可能同時不可用(例如在有意地使那些節(jié)點離線以向其安裝軟件)、同時確保依賴于那些節(jié)點的服務(wù)應(yīng)用保持可用的節(jié)點。即,更新域的該組節(jié)點典型地包括在執(zhí)行租戶任務(wù)時被允許同時不起作用的有限數(shù)量的節(jié)點,以確保在運行在該組節(jié)點上的角色實例在更新域以外具有復(fù)制。因此,更新域被設(shè)置在適當(dāng)?shù)奈恢?,以向服?wù)應(yīng)用的擁有者確保僅該服務(wù)應(yīng)用的最小數(shù)量的角色實例會同時失效。建立更新域一般包括遵守由主存環(huán)境施加的多個規(guī)則。例如,存在對可加入公共更新域的角色A的實例數(shù)量的限制?;蛘?,存在對可與角色A的實例一起加入公共更新域的角色B的實例數(shù)量的限制。一般而言,如本文中使用的“角色”提供該服務(wù)應(yīng)用的起作用部分的模板描述。例如,在在線購物服務(wù)應(yīng)用的情況下,存在在三個角色之間劃分的三個核心任務(wù),分別是角色A (被分配呈現(xiàn)第一 GUI以接收購買訂單的任務(wù))、角色B (被分配執(zhí)行購買訂單的任務(wù))、以及角色C (被分配呈現(xiàn)第二 GUI以傳達購買訂單的狀態(tài)的任務(wù))。在示例性實施例中,各個角色代表該服務(wù)應(yīng)用的特定類的程序組件。典型地,服務(wù)模型描述在數(shù)據(jù)中心內(nèi)放置每個角色的多少個實例,其中每個實例是特定類的程序組件或角色的復(fù)制。換言之,每個角色代表每類程序組件的實例的集合,其中該服務(wù)應(yīng)用可具有用于執(zhí)行其功能的任何數(shù)量的程序組件類。角色通常具有對其應(yīng)用的配置設(shè)定。在一個實例中,該角色的配置設(shè)定可包括由該角色的所有實例共享的集體設(shè)定。在另一實例中,配置設(shè)定可包括每個角色實例特定的個體設(shè)定。這些個體設(shè)定可包括在角色實例處存儲的狀態(tài),其中該狀態(tài)是該角色實例所專有的。參考上述在線購物服務(wù)應(yīng)用,存儲在角色B的實例處的狀態(tài)可以是由某個客戶作出的特定購買訂單的細節(jié)。在簡要描述了本發(fā)明的實施例的概覽后,以下描述適于實現(xiàn)本發(fā)明的實施例的示例性操作環(huán)境。操作環(huán)境首先具體參考圖1,示出了用于實現(xiàn)本發(fā)明的各實施方式的示例性操作環(huán)境,并將其概括地指定為計算設(shè)備100。計算設(shè)備100只是合適的計算環(huán)境的一個示例,并且不旨在對本發(fā)明的使用范圍或功能提出任何限制。也不應(yīng)該將計算設(shè)備100解釋為對所示出的任一組件或其組合有任何依賴性或要求。本發(fā)明可以在由計算機或諸如個人數(shù)據(jù)助理或其他手持式設(shè)備之類的其他機器執(zhí)行的計算機代碼或機器可使用指令(包括諸如程序模塊之類的計算機可執(zhí)行指令)的一般上下文中描述。一般而言,包括例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等的程序模塊是指執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的代碼。本發(fā)明可以在各種系統(tǒng)配置中實施,這些系統(tǒng)配置包括手持式設(shè)備、消費電子產(chǎn)品、通用計算機、專用計算設(shè)備等等。本發(fā)明也可以在其中任務(wù)由通過通信網(wǎng)絡(luò)鏈接的遠程處理設(shè)備執(zhí)行的分布式計算環(huán)境中實施。參考圖1,計算設(shè)備100包括直接或間接耦合以下設(shè)備的總線110 :存儲器112、一個或多個處理器114、一個或多個呈現(xiàn)組件116、輸入/輸出(I/O)端口 118、輸入/輸出組件120、和說明性電源122。總線110可以是一條或多條總線(諸如地址總線、數(shù)據(jù)總線、或其組合)。雖然為了清楚起見利用線條示出了圖1的各框,但是實際上,各組件的輪廓并不是那樣清楚,并且比喻性地來說,線條更精確地將是灰色的和模糊的。例如,可以將諸如顯示設(shè)備等呈現(xiàn)組件認(rèn)為是I/O組件。而且,處理器具有存儲器。發(fā)明人認(rèn)識到這是本領(lǐng)域的特性,并重申,圖1的圖示只是例示可以結(jié)合本發(fā)明的一個或多個實施方式來使用的示例性計算設(shè)備。諸如“工作站”、“服務(wù)器”、“膝上型計算機”、“手持式設(shè)備”等分類之間沒有區(qū)別,它們?nèi)慷急徽J(rèn)為是在圖1的范圍之內(nèi)的并且被稱為“計算設(shè)備”。計算設(shè)備100通常包括各種計算機可讀介質(zhì)。計算機可讀介質(zhì)可以是可由計算設(shè)備100訪問的任何可用介質(zhì),而且包含易失性和非易失性介質(zhì)、可移動和不可移動介質(zhì)。作為示例而非限制,計算機可讀介質(zhì)可包括計算機存儲介質(zhì)和通信介質(zhì)。計算機存儲介質(zhì)包括以用于存儲諸如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的任何方法或技術(shù)實現(xiàn)的易失性和非易失性、可移動和不可移動介質(zhì)。計算機存儲介質(zhì)包括,但不限于,RAM、ROM、EEPR0M、閃存或其它存儲器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光盤存儲、磁帶盒、磁帶、磁盤存儲或其它磁性存儲設(shè)備、或能用于存儲所需信息且可以由計算設(shè)備100訪問的任何其它介質(zhì)。通信介質(zhì)一般將計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)包含在經(jīng)調(diào)制的數(shù)據(jù)信號中,諸如載波或其它傳輸介質(zhì)并且包括任何信息傳遞介質(zhì)。術(shù)語“經(jīng)調(diào)制數(shù)據(jù)信號”是指具有以在信號中編碼信息的方式被設(shè)定或改變其一個或多個特征的信號。作為示例而非限制,通信介質(zhì)包括有線介質(zhì),諸如有線網(wǎng)絡(luò)或直接線路連接,以及無線介質(zhì),諸如聲學(xué)、RF、紅外線和其他無線介質(zhì)。上述的任意組合也應(yīng)包含在計算機可讀介質(zhì)的范圍內(nèi)。存儲器112包括易失性和/或非易失性存儲器形式的計算機存儲介質(zhì)。存儲器可以是可移動的、不可移動的、或其組合。示例性硬件設(shè)備包括固態(tài)存儲器、硬盤驅(qū)動器、光盤驅(qū)動器等。計算設(shè)備100包括從諸如存儲器112或I/O組件120等各種實體讀取數(shù)據(jù)的一個或多個處理器。呈現(xiàn)組件116向用戶或其他設(shè)備呈現(xiàn)數(shù)據(jù)指示。示例性呈現(xiàn)組件包括顯示設(shè)備、揚聲器、打印組件、振動組件等等。I/O端口 118允許計算設(shè)備100邏輯上耦合至包括I/O組件120的其他設(shè)備,其中某些設(shè)備可以是內(nèi)置的。說明性組件包括話筒、操縱桿、游戲手柄、圓盤式衛(wèi)星天線、掃描儀、打印機、無線設(shè)備等等。數(shù)據(jù)中心的體系結(jié)構(gòu)現(xiàn)在轉(zhuǎn)到圖2,示出了根據(jù)本發(fā)明的實施例的框圖,其中示出了數(shù)據(jù)中心200,配置成容許和支持根據(jù)服務(wù)模型的服務(wù)應(yīng)用的組件程序或角色實例的操作。本領(lǐng)域普通技術(shù)人員將理解和領(lǐng)會,圖2中示出的數(shù)據(jù)中心200僅僅是主存環(huán)境的一個合適的部分的示例,并且不旨在暗示關(guān)于本發(fā)明的實施例的用途或功能的范圍的任何限制。數(shù)據(jù)中心200也不應(yīng)解釋為具有與其中示出的任何單個資源或資源的組合有關(guān)的任何依賴性或要求。此外,盡管為了清楚起見用線條示出了圖2的各個框,但是在實際上,各組件的輪廓并不是那樣清楚,并且比喻性地來說,線條更精確地將是灰色的和模糊的。數(shù)據(jù)中心200包括經(jīng)由網(wǎng)絡(luò)云240互連的多個資源。如本文中描述的這些資源可包括軟件組件(例如結(jié)構(gòu)控制器295)以及有形硬件元件,諸如機架A205、機架B210、機架C215、頂機架交換機230、電源板235、服務(wù)器270、計算設(shè)備280、更新域251以及更新域252。網(wǎng)絡(luò)云240互連這些資源,使得在多個物理資源上分布放置的服務(wù)應(yīng)用的實例可識別其它實例的位置,以在這些實例之間建立通信。此外,網(wǎng)絡(luò)云240通過連接服務(wù)應(yīng)用的實例的信道以及該服務(wù)模型需要的任何其它元件來促進該通信。該網(wǎng)絡(luò)可包括但不限于一個或多個局域網(wǎng)(LAN)和/或廣域網(wǎng)(WAN)。這樣的聯(lián)網(wǎng)環(huán)境常見于辦公室、企業(yè)范圍計算機網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中。因此,網(wǎng)絡(luò)不在此進一步描述。一般而言,數(shù)據(jù)中心200容許一種分布式系統(tǒng),其中服務(wù)應(yīng)用的多個組件程序或角色實例在執(zhí)行這些組件程序的處理設(shè)備上獨立運行,但經(jīng)由網(wǎng)絡(luò)云240互連。有時候,這些計算資源或節(jié)點會經(jīng)歷多個更新。更新域251和252典型地提供如下的一組保證服務(wù)應(yīng)用的角色實例將分布在數(shù)據(jù)中心200中的資源上,而且不會在底層平臺的更新期間全部同時離線。相應(yīng)地,保留了服務(wù)應(yīng)用的操作的一致性。返回數(shù)據(jù)中心200的配置,服務(wù)器270、計算設(shè)備280、故障域251和252以及具有與其耦合的刀片(例如刀片A260、刀片B261、刀片C262)的機架A205、B210以及C215中的每一個可以是任何類型的計算設(shè)備,諸如以上參考圖1所描述的計算設(shè)備100。僅作為示例而非限制,服務(wù)器270、計算設(shè)備280以及刀片A260、刀片B261以及刀片C262中的每一個可以是個人計算機、臺式計算機、膝上型計算機、手持設(shè)備、移動手持設(shè)備、消費電子設(shè)備以及類似物。在實施例中,數(shù)據(jù)中心200可包括以上列出的任何數(shù)量的物理資源,且可包括計算設(shè)備的任何集合或能夠執(zhí)行該服務(wù)應(yīng)用的其它機器。此外,上述物理資源中的一個或多個可進一步主存駐留在其上的結(jié)構(gòu)控制器295,以經(jīng)由通過數(shù)據(jù)中心200的有線或無線網(wǎng)絡(luò)路徑來部署、訪問以及管理該服務(wù)應(yīng)用。然而,應(yīng)理解,本發(fā)明的實施例不限于在圖2中示出的這樣的物理資源上的實現(xiàn),而可以在本發(fā)明的實施例范圍內(nèi)的多種不同類型的計算設(shè)備和設(shè)施中的任一種上實現(xiàn)。換言之,所示出的數(shù)據(jù)中心200的資源描繪了僅旨在用于討論目的的示例性配置;因此,計算工業(yè)中已知的任何合適的資源布局可被使用并由本發(fā)明構(gòu)想。具體而言,數(shù)據(jù)中心200的示例性資源用于引入更新域的概念。如上所討論,更新域代表在數(shù)據(jù)中心200內(nèi)執(zhí)行租戶任務(wù)時變得不可用的節(jié)點的組或集合。如上所討論,節(jié)點可指代數(shù)據(jù)中心200中的刀片(例如刀片A260、刀片B261以及刀片C262)、計算機(例如計算設(shè)備280)、機器(例如服務(wù)器270)或能夠運行服務(wù)應(yīng)用的組件程序或?qū)嵗娜魏纹渌O(shè)備。因此,抽象出更新域的優(yōu)點是為了理解數(shù)據(jù)中心內(nèi)的哪些資源組在執(zhí)行租戶任務(wù)的一個階段時一起離線,以及如何隔離其它資源以免離線。雖然已經(jīng)描述了數(shù)據(jù)中心200和更新域251和252的多種不同配置,但本領(lǐng)域普通技術(shù)人員應(yīng)當(dāng)理解和領(lǐng)會,可基于在節(jié)點上運行的角色實例的身份來抽象出將一組節(jié)點分組的其它類型的合適更新域,而且本發(fā)明的實施例不限于本文中示出的那些更新域251和 252。服務(wù)應(yīng)用的更新域現(xiàn)在轉(zhuǎn)到圖3,示出了根據(jù)本發(fā)明的實施例的示例性主存環(huán)境300的圖形表示。具體而言,主存環(huán)境300包括結(jié)構(gòu)控制器295、服務(wù)應(yīng)用350以及用于支持結(jié)構(gòu)控制器295和服務(wù)應(yīng)用350的操作的數(shù)據(jù)中心200。如上所討論,數(shù)據(jù)中心200包括至少部分地基于服務(wù)應(yīng)用350的角色A、B和C的冗余被組織成更新域305和310的資源,其中角色位于實例311、312、313、321、322以及323處。一般而言,更新域305和310分別描述了根據(jù)更新方案或“任務(wù)列表”而被有意地致使同時不可用的一個或多個節(jié)點。在實施例中,任務(wù)列表(參見圖6的附圖標(biāo)記610)根據(jù)優(yōu)先級來組織被調(diào)度和/或待決的租戶任務(wù)。如下文更完整討論,使任務(wù)列表的至少一部分顯露給服務(wù)應(yīng)用350的管理角色,以使服務(wù)應(yīng)用350準(zhǔn)備好接收即將來臨的租戶任務(wù)。如本文中所使用,短語“租戶任務(wù)”指的是由結(jié)構(gòu)控制器295對服務(wù)應(yīng)用350執(zhí)行的不可變的一組改變操作。這些改變操作會影響服務(wù)應(yīng)用350的可用性。在實施例中,當(dāng)前存在由主存環(huán)境300定義的固定數(shù)量的租戶任務(wù)類型。然而,這些任務(wù)類型可在未來擴展。著重于服務(wù)應(yīng)用350的示例性租戶任務(wù)包括以下服務(wù)應(yīng)用更新任務(wù)(例如維護動作);以及服務(wù)應(yīng)用代碼修改(例如升級動作或推出新版本);服務(wù)應(yīng)用拓撲改變;服務(wù)應(yīng)用配置改變;在采用重啟(例如停止和開始操作)的節(jié)點320的虛擬機(VM)內(nèi)的服務(wù)應(yīng)用訪客OS改變;采用重啟和重鋪的服務(wù)應(yīng)用維修(例如改變訪客OS的注冊表)。一般而言,維修在VM無法通過其它進程恢復(fù)時發(fā)起。其它類型的租戶任務(wù)可著重于主存環(huán)境300的維護。這些租戶任務(wù)類型的示例包括以下基礎(chǔ)結(jié)構(gòu)更新(當(dāng)出故障時使實例321、322和323離線);將應(yīng)用350從一個地理位置遷移至另一地理位置(例如由于硬件和其它平臺問題導(dǎo)致的實例321、322或323的重新定位);以及資源更新(例如對監(jiān)測運行在節(jié)點320的VM上的實例321、322和323的代理的更新)。雖然著重于改變主存環(huán)境300,但這些類型的租戶任務(wù)也可產(chǎn)生實例321、322或323的可用性的中斷。
租戶任務(wù)的執(zhí)行可由主存環(huán)境300的需求(例如更新操作系統(tǒng)軟件的版本)驅(qū)動,或可由主存環(huán)境300的管理員來引起。當(dāng)選擇租戶任務(wù)以在數(shù)據(jù)中心200內(nèi)實現(xiàn)時,租戶任務(wù)的實際執(zhí)行可按階段逐步地進行。即,租戶任務(wù)被劃分成多個階段,其中每個階段的執(zhí)行潛在地影響服務(wù)應(yīng)用350的部分(例如一個或多個角色實例)。例如,如果服務(wù)應(yīng)用350具有角色A的十個實例,則可將租戶任務(wù)分成十個階段,階段可進一步分成子集。在實施例中,取決于租戶任務(wù)類型、該租戶任務(wù)專有的限制、或服務(wù)應(yīng)用350的部署布局,整個更新域或更新域的子集可受階段的影響。此外,階段執(zhí)行的排序是租戶任務(wù)類型所專屬的,和/或受服務(wù)應(yīng)用350的服務(wù)模型管控。在操作中,執(zhí)行每個階段可包括在不同的更新域執(zhí)行租戶任務(wù),直到解決每個更新域為止。例如,租戶任務(wù)的第一階段可包括停用更新域305內(nèi)的節(jié)點320以執(zhí)行維護操作,而租戶任務(wù)的第二階段可包括停用更新域310內(nèi)的節(jié)點。停用節(jié)點320隱含地而且并發(fā)地使角色321、322以及323離線。然而,由于角色A位于實例311和321處,角色B位于實例322和312處,以及角色C位于實例323和313處,使角色321、322以及323離線將不一定使服務(wù)應(yīng)用350不可用。有時候,當(dāng)角色僅位于最小數(shù)量的實例處時,在租戶階段期間實際上僅使更新域的子集離線。即,當(dāng)角色實例321、322和323被分組到相同更新域305中時,可使角色實例321,322和323的任何組合同時離線。不過,在第一階段期間,租戶任務(wù)的效果僅限于更新域305的那些角色實例321、322以及323。如果服務(wù)應(yīng)用350是有狀態(tài)應(yīng)用,而且如果角色實例321、322和323(包含在更新域305中)的狀態(tài)未在角色實例311、312和313 (包含在更新域310中)中復(fù)制,則在實現(xiàn)租戶任務(wù)的第一階段時可能發(fā)生信息的不可用。因此,以下討論的本發(fā)明的實施例涉及協(xié)調(diào)租戶任務(wù)的技術(shù),使得在迭代地執(zhí)行租戶任務(wù)的多個階段時,不使存儲在角色實例處的狀態(tài)不可用。本發(fā)明的實施例進一步包括對分布式服務(wù)應(yīng)用350的拓撲的更新。有利地,該拓撲更新允許服務(wù)應(yīng)用350的角色實例為了互相通信的目的而檢查該服務(wù)應(yīng)用350的其它角色實例。在實例中,該拓撲更新包括用于在服務(wù)應(yīng)用的角色實例上傳播有關(guān)該服務(wù)應(yīng)用拓撲的信息的機制。作為示例,所傳播的信息可包括重新定位的角色實例的改變地址的描述和/或可散布至整個服務(wù)應(yīng)用350的其它數(shù)據(jù)。現(xiàn)在將參考圖3描述該拓撲更新。最初,如果角色A的實例321想要與角色B的實例322通信,則實例321應(yīng)當(dāng)知曉實例322的位置(例如IP地址)以便發(fā)起該通信。典型地,分別使用IP地址到角色實例321和322的名稱的映射,以便促進角色實例321與322之間的通信。該映射被保持在實例321和322中的每一個處。經(jīng)過實例321和322的最初部署,映射是當(dāng)前的,因為實例321和322的位置自從節(jié)點320上的實例化之后已經(jīng)保持靜態(tài)。隨時間流逝,經(jīng)過對服務(wù)應(yīng)用350進行的動態(tài)更新(例如重新定位、添加或去除),實例321和322中的一個或二者可能經(jīng)歷原始IP地址的改變。實例321和322中的一個或多個的這些改變的IP地址可能使服務(wù)應(yīng)用的其它實例具有不準(zhǔn)確的映射,從而導(dǎo)致服務(wù)應(yīng)用拓撲的不一致理解和相互通信的中斷。例如,如果由于實例322已經(jīng)移動,實例321處保持的映射包括與服務(wù)應(yīng)用拓撲有關(guān)的不準(zhǔn)確信息,則實例321可能無法定位實例322或與實例322交談。
為了解決以上討論的問題,配置了拓撲更新以施加冗余手段,該冗余手段記憶IP地址相對于更新域的改變。例如,當(dāng)兩個角色實例321和311分別被添加至兩個分開的更新域305和310時,在第一更新域305內(nèi)操作的服務(wù)應(yīng)用350被通知第一角色實例321被放置在其中,同時在第二更新域310內(nèi)操作的服務(wù)應(yīng)用350被通知第二角色實例311被放置在其中。然后,經(jīng)過分發(fā)通知之后,第一和第二角色實例321和311在它們各自的更新域305和310中被實例化和啟動。因此,駐留在其它角色實例322、323、312和313的映射處的拓撲信息被更新兩次,給予服務(wù)應(yīng)用350關(guān)于新角色實例321和311的定位位置的一致理解。對更新域(UD)應(yīng)用租戶任務(wù)現(xiàn)在轉(zhuǎn)到圖4,圖形表示示出根據(jù)本發(fā)明的實施例的用于在有狀態(tài)服務(wù)應(yīng)用(例如角色A)和無狀態(tài)服務(wù)應(yīng)用(例如角色B)二者上執(zhí)行租戶任務(wù)的階段的流程。當(dāng)在無狀態(tài)服務(wù)應(yīng)用上執(zhí)行租戶任務(wù)時,通常不考慮角色實例中的一個或多個上具體存儲的內(nèi)部狀態(tài)。因此,可按照調(diào)度使無狀態(tài)應(yīng)用的角色實例離線。例如,當(dāng)租戶任務(wù)的階段包括更新包含無狀態(tài)應(yīng)用的角色實例B410的UD時,租戶任務(wù)在角色實例B410上執(zhí)行(參見圖4的框440),從而導(dǎo)致經(jīng)更新的角色實例B’ 420。在該示例中,沒有理由與無狀態(tài)應(yīng)用的其它角色實例協(xié)調(diào),因為這些狀態(tài)被安全地上傳到遠程數(shù)據(jù)存儲(即未本地存儲在角色實例B410處)。然而,當(dāng)在有狀態(tài)服務(wù)應(yīng)用上執(zhí)行租戶任務(wù)時,存在對角色實例上存儲的內(nèi)部狀態(tài)的考慮。因此,可按照協(xié)調(diào)方式使有狀態(tài)服務(wù)應(yīng)用的角色實例離線。在示例性實施例中,該協(xié)調(diào)包括在UD處執(zhí)行租戶任務(wù)時采用至少以下階段準(zhǔn)備UD (參見框430);在UD上執(zhí)行工作(參見框440);以及恢復(fù)UD (參見框450)。當(dāng)準(zhǔn)備UD的角色實例A405以接收租戶任務(wù)時,有狀態(tài)服務(wù)應(yīng)用的管理組件(參見圖5的附圖標(biāo)記597、598和599)負責(zé)確定是否會使角色實例A405離線,并標(biāo)識存儲在角色實例A405上的內(nèi)部狀態(tài)。在實施例中,確定是否會使角色實例A405離線包括至少以下步驟識別結(jié)構(gòu)控制器執(zhí)行特定租戶任務(wù)的意圖(例如接收來自結(jié)構(gòu)控制器的角色實例A405的目標(biāo)狀態(tài),該目標(biāo)狀態(tài)警告管理角色關(guān)于將使角色實例A405進入離線狀態(tài));接收來自結(jié)構(gòu)控制器的描述租戶任務(wù)類型的信息(例如要在角色實例A405上執(zhí)行的操作和那些操作的效果);使結(jié)構(gòu)控制器暫停執(zhí)行租戶任務(wù)(例如直到管理角色以批準(zhǔn)繼續(xù)執(zhí)行作為響應(yīng)或直到預(yù)定時間段期滿為止);采取動作以查明在使角色實例A405進入離線狀態(tài)時服務(wù)應(yīng)用是否將保持可用;以及利用消息對結(jié)構(gòu)控制器作出響應(yīng)。因此,管理角色提示服務(wù)應(yīng)用重新配置自身以不再依賴于或指望UD內(nèi)進入離線狀態(tài)的角色實例A405。以此方式,響應(yīng)于結(jié)構(gòu)控制器而從管理角色發(fā)送的消息可指示角色實例A405準(zhǔn)備好離線。如果經(jīng)過評估經(jīng)調(diào)度而在角色實例A405上執(zhí)行的租戶任務(wù)類型并查明該服務(wù)應(yīng)用將在使角色實例A405進入離線狀態(tài)時不保持可用,則管理角色可能不同意使UD離線。以此方式,管理角色可以利用拒絕允許租戶任務(wù)在角色實例A405上繼續(xù)的消息來對結(jié)構(gòu)控制器作出響應(yīng)。考慮來自管理角色的傳遞拒絕租戶任務(wù)的消息,結(jié)構(gòu)控制器智能地決定如何部分地基于租戶任務(wù)類型來繼續(xù)。例如,如果租戶任務(wù)類型包括對主存環(huán)境的基礎(chǔ)平臺的維修,則結(jié)構(gòu)控制器可不管管理角色所試圖的拒絕而繼續(xù)租戶任務(wù)在角色實例A405上的執(zhí)行。如果租戶任務(wù)類型包括僅對該服務(wù)應(yīng)用的更新,則結(jié)構(gòu)控制器可留意管理角色的拒絕,并取消租戶任務(wù)在角色實例A405上的執(zhí)行。如果租戶任務(wù)類型包括對主存角色實例A405的節(jié)點的OS的維護動作,則結(jié)構(gòu)控制器可試圖與管理角色協(xié)調(diào)使角色實例A405進入離線狀態(tài)。在一個實例中,協(xié)調(diào)包括管理角色請求暫停,暫時中斷租戶任務(wù)的執(zhí)行以允許角色實例A405將其內(nèi)部狀態(tài)復(fù)制到針對租戶任務(wù)當(dāng)前被選定為目標(biāo)的UD之外的另一角色實例。在另一實例中,協(xié)調(diào)包括調(diào)停故障轉(zhuǎn)移,該調(diào)停故障轉(zhuǎn)移通過可控地延遲使角色實例A405進入離線狀態(tài),且通過復(fù)制其內(nèi)部狀態(tài)以在UD上產(chǎn)生冗余,同時使該UD的其它角色實例進入離線狀態(tài)。當(dāng)管理角色和/或結(jié)構(gòu)控制器確定可使角色實例A405進入離線狀態(tài)(參見框435),則可在包含該角色實例A405的UD上開始工作(參見框440)。在該工作階段,結(jié)構(gòu)控制器根據(jù)租戶任務(wù)的定義來執(zhí)行各種任務(wù)(例如執(zhí)行維護動作)。典型地,在該工作階段期間,結(jié)構(gòu)控制器進行該租戶任務(wù)的執(zhí)行,且不與管理角色交流。一旦完成租戶任務(wù)的任務(wù),在繼續(xù)下一階段之前,角色實例A405被允許穩(wěn)定化,使得其內(nèi)部狀態(tài)不再為瞬態(tài)。經(jīng)過角色實例A405穩(wěn)定化之后,可恢復(fù)UD (參見框450)。在恢復(fù)階段期間,由結(jié)構(gòu)控制器通知服務(wù)應(yīng)用的管理角色關(guān)于租戶任務(wù)完成。進一步,在恢復(fù)階段期間,在使UD進入在線狀態(tài)(參見框455)以及指定角色實例A405為經(jīng)更新的角色實例A’ 415之前,管理角色負責(zé)確保所有受影響的角色實例起作用并且穩(wěn)定。如所能看到,在UD準(zhǔn)備階段430與UD恢復(fù)階段450期間,存在服務(wù)應(yīng)用的管理角色與結(jié)構(gòu)控制器之間的協(xié)調(diào)。具體而言,在這兩個階段430和450期間,管理角色計算服務(wù)應(yīng)用的可用性以確定租戶任務(wù)是否繼續(xù)至下一階段。取決于任務(wù)類型和服務(wù)應(yīng)用賬戶設(shè)定,該應(yīng)用可以或可以不阻止該任務(wù)執(zhí)行,但在任何情況下,它可推遲該任務(wù)執(zhí)行。有時候,可在租戶任務(wù)待決時(例如角色A405正在階段430、440或450中的一個處進行處理)發(fā)起高優(yōu)先級任務(wù)。當(dāng)高優(yōu)先級任務(wù)被檢測為發(fā)起時,待決的租戶任務(wù)被搶先。在示例性實施例中,搶先可包括將租戶任務(wù)的執(zhí)行讓位,允許高優(yōu)先級任務(wù)在角色A405上執(zhí)行,并在高優(yōu)先級任務(wù)執(zhí)行完成時繼續(xù)租戶任務(wù)。在搶先期間,例如,調(diào)度組件(參考圖5的標(biāo)記530)可向節(jié)點狀態(tài)驅(qū)動器(參考圖5的附圖標(biāo)記460)發(fā)送讓位請求,節(jié)點狀態(tài)驅(qū)動器負責(zé)推進角色A405處的階段430、440和450。該讓位請求暫時地掛起待決的租戶任務(wù),導(dǎo)致租戶任務(wù)停止進展,同時調(diào)用高優(yōu)先級任務(wù)以在角色A405上開始。換言之,調(diào)度組件指示節(jié)點狀態(tài)驅(qū)動器執(zhí)行適當(dāng)?shù)牟僮?,這些操作使租戶任務(wù)從活動狀態(tài)轉(zhuǎn)換為不活動狀態(tài),且使高優(yōu)先級任務(wù)從不活動狀態(tài)轉(zhuǎn)換為活動狀態(tài),因為典型地,每次僅一個任務(wù)在角色A405上執(zhí)行。這些適當(dāng)?shù)牟僮骺砂◤娦惺菇巧獳405進入在線狀態(tài),使得角色A405基本恢復(fù),并且使角色A405進入離線狀態(tài),使得高優(yōu)先級任務(wù)可在角色A405上進行工作。完成高優(yōu)先級任務(wù)之后,當(dāng)租戶任務(wù)正在等待繼續(xù)時,可由調(diào)度程序確定是否重新召集被中斷的租戶任務(wù)。作為示例,可測量角色A405的狀態(tài)(例如在角色A上運行的軟件的當(dāng)前版本),并基于該狀態(tài),租戶任務(wù)可在角色A405上重新召集或被取消。因此,搶先于待決租戶任務(wù)的進程可包括多次確定和可改變(例如添加、去除、修改)租戶任務(wù)的典型過程內(nèi)的階段430、440和450的動作。用于實現(xiàn)租戶任務(wù)的組件參考圖5,框圖示出了根據(jù)本發(fā)明的實施例的云計算網(wǎng)絡(luò)500,包括用于執(zhí)行實現(xiàn)租戶任務(wù)的分立操作的多個組件。一般而言,網(wǎng)絡(luò)500描繪了租戶改變管理器580與服務(wù)應(yīng)用350的管理角色597-599之間的交互的一個示例。該交互可影響網(wǎng)絡(luò)500上和/或服務(wù)應(yīng)用350上的租戶任務(wù)的實現(xiàn)的協(xié)調(diào)。最初,租戶改變管理器580代表圖3的結(jié)構(gòu)控制器295的組件,負責(zé)與服務(wù)應(yīng)用350的管理角色597-599交互,并部分地基于那些交互來指導(dǎo)租戶任務(wù)的部署。指導(dǎo)部署的過程一般包括將租戶任務(wù)部署的指示傳達至向管理角色597-599 ;發(fā)起將角色實例521-523停用至離線狀態(tài);允許租戶任務(wù)在角色實例521-523上執(zhí)行;以及發(fā)起將角色實例521-523恢復(fù)至在線狀態(tài)。作為服務(wù)應(yīng)用350的組件的管理角色597-599典型地分別配置用于監(jiān)測角色實例521-523的內(nèi)部狀態(tài),角色實例521-523被分組在更新域305內(nèi)。在實施例中,在接收到租戶任務(wù)部署的指示后,管理角色597-599負責(zé)確定所監(jiān)測到的角色實例521-523的內(nèi)部狀態(tài)是否分別在服務(wù)應(yīng)用350的不受租戶任務(wù)影響的部分上(諸如更新域310的節(jié)點A、B和C上)被復(fù)制。如本文中所描繪,租戶任務(wù)最初選定更新域305作為目標(biāo),這影響分別在節(jié)點X、Y和Z上被主存的組件501、502和503的可用性。此外,管理角色597-599可被配置用于將內(nèi)部狀態(tài)的可用性指示傳達給租戶改變管理器580?,F(xiàn)在將參考圖5來詳細描述租戶改變管理器580。如上所述,租戶改變管理器580一般負責(zé)控制對云計算網(wǎng)絡(luò)500的基礎(chǔ)平臺的更新和/或維修(例如調(diào)度和組織協(xié)調(diào)租戶任務(wù))??刂频倪^程可包括租戶改變管理器580管理管理角色597-599與目標(biāo)狀態(tài)機構(gòu)510之間的交互。典型地,每個租戶任務(wù)與特定的目標(biāo)狀態(tài)機構(gòu)相關(guān)聯(lián),該目標(biāo)狀態(tài)機構(gòu)作為驅(qū)動執(zhí)行該租戶任務(wù)所固有的工作的狀態(tài)機來操作。因此,由租戶改變管理器580管理的交互可包括以下步驟調(diào)度針對更新域305的節(jié)點X、Y和Z的租戶任務(wù);確定節(jié)點X、Y和Z上主存的組件501、502和503的身份;識別組件501、502和503分別包括作為服務(wù)應(yīng)用350的部分的角色實例521、522和523后,將執(zhí)行所調(diào)度租戶任務(wù)的意圖傳達至管理角色597-599 ;接收來自管理角色597-599的消息,該消息傳達與角色實例521、522以及523的內(nèi)部狀態(tài)有關(guān)的信息;以及通過考慮角色實例521、522和523的內(nèi)部狀態(tài)來處理租戶任務(wù)的執(zhí)行。在操作中,角色實例521、522和523的內(nèi)部狀態(tài)指導(dǎo)目標(biāo)狀態(tài)機構(gòu)510關(guān)于它在使節(jié)點X、Y和Z從在線狀態(tài)轉(zhuǎn)換成離線狀態(tài)時應(yīng)當(dāng)如何繼續(xù)。
通過給管理角色597-599分別分配監(jiān)測角色實例521-523的內(nèi)部狀態(tài)的責(zé)任,允許租戶改變管理器580保持對服務(wù)應(yīng)用350的實現(xiàn)的具體細節(jié)不知曉,以便高效地操作。因此,管理角色597-599與租戶改變管理器580的合作在結(jié)構(gòu)控制器與應(yīng)用350之間有效地引入了通用協(xié)議,該協(xié)議能實現(xiàn)所有以下操作將與服務(wù)應(yīng)用350的狀態(tài)有關(guān)的充分信息提供給基礎(chǔ)平臺以滿足任何應(yīng)用管理目標(biāo);向服務(wù)應(yīng)用350提供對由基礎(chǔ)平臺發(fā)起的任何正在進行的維護活動的可見性;以及向服務(wù)應(yīng)用350提供正確地定時平臺發(fā)起的活動的機
A
"Z o現(xiàn)在將相對于圖5的管理角色597-599來詳細描述示例性管理角色的性能。一般而言,示例性管理角色被編程為理解本地存儲在服務(wù)應(yīng)用350的一個或多個角色實例處的內(nèi)部狀態(tài),并在網(wǎng)絡(luò)500的基礎(chǔ)平臺上部署租戶任務(wù)(例如維護、更新以及恢復(fù)操作)期間傳達該理解。因此,如本文中所使用,短語“管理角色”泛指服務(wù)應(yīng)用中的負責(zé)監(jiān)測和評估服務(wù)應(yīng)用的內(nèi)部狀態(tài)的組件。此外,示例性的管理角色可負責(zé)與結(jié)構(gòu)控制器協(xié)調(diào)操作,該結(jié)構(gòu)控制器在執(zhí)行租戶任務(wù)時被涉及。將這些責(zé)任委派給管理角色后,結(jié)構(gòu)控制器就被提供對內(nèi)部狀態(tài)的可訪問查看,內(nèi)部狀態(tài)對于服務(wù)應(yīng)用的角色實例而言是本地的。因此,角色實例內(nèi)部狀態(tài)的復(fù)制可以是已知的并由結(jié)構(gòu)控制器考慮。實際上,通過收集和分發(fā)描述角色實例內(nèi)部狀態(tài)的信息,管理角色試圖幫助確保在租戶任務(wù)期間使節(jié)點進入離線狀態(tài)時,結(jié)構(gòu)控制器將不會使特定內(nèi)部狀態(tài)的所有復(fù)制都離線。因此,可改進在結(jié)構(gòu)控制器直接監(jiān)測數(shù)據(jù)中心內(nèi)的所有有狀態(tài)應(yīng)用的所有角色實例的內(nèi)部狀態(tài)時將會發(fā)生的低效率,不過經(jīng)由管理角色使內(nèi)部狀態(tài)對于結(jié)構(gòu)控制器仍然可見。在一個示例中,如果服務(wù)應(yīng)用350具有角色A (例如接收來自顧客的一組數(shù)字圖像)、角色B (例如接收后格式化這些數(shù)字圖像)、以及角色C (例如將經(jīng)過格式化的數(shù)字圖像在n顯示器上呈現(xiàn)),則可創(chuàng)建跟蹤角色A、B和C中實例的內(nèi)部狀態(tài)(例如特定顧客數(shù)據(jù))的第四組角色D。因此,管理角色D (例如管理角色597-599)具有對服務(wù)應(yīng)用350的內(nèi)部細節(jié)的密切理解。例如,管理角色D可以知曉數(shù)字圖像的每個復(fù)制品存儲的位置以及存儲該數(shù)字圖像的角色實例(例如角色實例521-523)當(dāng)前是否可用。此外,管理角色D可能知曉個體地本地存儲該數(shù)字圖像的角色實例的數(shù)量。在實施例中,可通過以下步驟來建立管理角色597-599 :將服務(wù)應(yīng)用350標(biāo)識為結(jié)構(gòu)控制器已將其選擇用于與其組成高可見性的有狀態(tài)應(yīng)用;以及指定該應(yīng)用350的一個或多個角色實例(例如管理角色597-599)來承擔(dān)理解構(gòu)成該服務(wù)應(yīng)用350的其它角色實例(例如角色實例521-523)的內(nèi)部狀態(tài)的責(zé)任。一般而言,從服務(wù)模型的立場,管理角色597-599代表被服務(wù)模型定義中的標(biāo)志指定的常規(guī)服務(wù)應(yīng)用角色。此外,管理角色597-599建立后,服務(wù)應(yīng)用350可配置管理角色597-599中的一個或多個以監(jiān)測和報告服務(wù)應(yīng)用350的多個獨立部分。典型地,服務(wù)應(yīng)用350被編程為決定將管理角色597-599置于由結(jié)構(gòu)控制器推行的一組條件內(nèi)的何處。例如,結(jié)構(gòu)控制器可施加兩個管理角色不能共享同一節(jié)點的條件,從而保持多個角色實例高度可用。在該實例中,參考圖5,未在與被監(jiān)測的其它角色實例521-523 (即服務(wù)角色實例相對于管理角色實例)相同的節(jié)點X、Y和Z (例如物理機或虛擬機)上建立管理角色597-599。建立并放置管理角色597-599后,通常使管理角色597-599能夠通過向租戶改變管理器580顯露管理角色597-599對角色實例521-523的內(nèi)部狀態(tài)的理解,而能夠影響被監(jiān)測的角色實例521-523上的租戶任務(wù)的協(xié)調(diào),其中租戶改變管理器580如以上討論地那樣管理租戶任務(wù)的實現(xiàn)。對角色實例內(nèi)部狀態(tài)的理解可通過爬行(crawl)角色實例521-523和任意地實現(xiàn)復(fù)雜邏輯來實現(xiàn),該復(fù)雜邏輯使對服務(wù)應(yīng)用350自身可用性的理解基于對內(nèi)部狀態(tài)的復(fù)制的數(shù)量和位置。一旦內(nèi)部狀態(tài)的理解已知,則該理解被傳達至租戶改變管理器530。在由管理角色597-599采用的用于傳達角色實例521-523的內(nèi)部狀態(tài)的理解的方案示例中,管理角色597-599可評估角色實例521-523,并傳達封裝租戶改變管理器580所需要的評估的消息?;蛘?,評估和傳達的過程可由管理角色597-599自動地進行(例如在預(yù)定的時間段或在檢測到觸發(fā)事件時)。在實施例中,租戶改變管理器580可包括用于執(zhí)行與協(xié)調(diào)租戶任務(wù)相關(guān)聯(lián)的特定任務(wù)的多個組件。如圖5所示,示例性組件包括執(zhí)行引擎520、調(diào)度組件530、租戶任務(wù)管理組件540以及任務(wù)相容性組件550。任務(wù)相容性組件550配置成處理租戶任務(wù)的搶先過程,其中一個任務(wù)(后部署)比另一待決租戶任務(wù)(先部署)優(yōu)先級高。租戶任務(wù)管理組件540協(xié)調(diào)租戶任務(wù)的部署、將指令發(fā)送至調(diào)度組件530、并跟蹤租戶任務(wù)的進展。調(diào)度組件530 —般負責(zé)調(diào)度租戶任務(wù)的執(zhí)行,同時將當(dāng)前在不同服務(wù)應(yīng)用上執(zhí)行的待決租戶任務(wù)的類型考慮在內(nèi)。此外,調(diào)度組件可進一步配置用于根據(jù)優(yōu)先級方案使一個或多個租戶任務(wù)被高優(yōu)先級任務(wù)中斷(以下參考圖6討論)。在實施例中,執(zhí)行引擎520代表通用有限狀態(tài)(FSM)機,配置成調(diào)用租戶任務(wù)的發(fā)起和執(zhí)行。典型地,執(zhí)行引擎520包括描述用于執(zhí)行特定租戶任務(wù)的工作而進行的一組步驟的框架。該框架也可提供該組步驟之間的排序以及與從一個步驟進行到另一步驟的相關(guān)聯(lián)的鏈接。這些鏈接涉及在移動至另一步驟之前在執(zhí)行第一步驟時應(yīng)當(dāng)滿足的條件。例如,執(zhí)行引擎520可讀取來自調(diào)度組件530和/或目標(biāo)狀態(tài)機構(gòu)510的輸入和輸出,以驅(qū)動更新域305的狀態(tài)轉(zhuǎn)換,其中在更新域305處的狀態(tài)轉(zhuǎn)換的完成允許在該更新域上正確地執(zhí)行租戶任務(wù),并進展至更新域310。在特定實施例中,當(dāng)充當(dāng)FSM時,執(zhí)行引擎520由與租戶任務(wù)的轉(zhuǎn)換(例如不活動狀態(tài)和活動狀態(tài))以及角色實例的轉(zhuǎn)換(例如在線狀態(tài)和離線狀態(tài))相關(guān)聯(lián)的有限數(shù)量狀態(tài)組成,其中每個轉(zhuǎn)換包括在一個狀態(tài)開始和在另一狀態(tài)結(jié)束的一組動作。轉(zhuǎn)換典型地由觸發(fā)器發(fā)起,該觸發(fā)器諸如檢測到的事件(例如寫/存儲操作)。在一個實例中,觸發(fā)器可包括接收到來自調(diào)度組件530的提示執(zhí)行引擎520在更新域305和310上執(zhí)行租戶任務(wù)的指令。一般而言,F(xiàn)SM允許一次僅駐留在一個狀態(tài)中,該狀態(tài)在本文中稱為待決租戶任務(wù)的當(dāng)前狀態(tài)。網(wǎng)絡(luò)500的基礎(chǔ)平臺包括輔助租戶改變管理器580智能地部署和執(zhí)行租戶任務(wù)的附加組件。這些附加組件可包含在結(jié)構(gòu)控制器的范圍內(nèi),或這些組件可脫離結(jié)構(gòu)控制器單獨存在(不過仍支持結(jié)構(gòu)控制器)。在實施例中,基礎(chǔ)平臺的組件包括但不限于以下組件根升級引擎590、目標(biāo)狀態(tài)機構(gòu)510以及節(jié)點狀態(tài)驅(qū)動器460。根升級引擎590 —般設(shè)計成選擇一組節(jié)點(例如更新域310的節(jié)點A、B和C或更新域305的節(jié)點X、Y和Z),該組節(jié)點可在不違犯服務(wù)應(yīng)用350的基礎(chǔ)平臺或服務(wù)模型的預(yù)定規(guī)則的情況下被更新。例如,這些規(guī)則可確保被選擇用于接收租戶任務(wù)的一組節(jié)點主存屬于不多于一個更新域的角色實例。一旦選擇了用于接收租戶任務(wù)的該組節(jié)點,就向租戶改變管理器580提出所選的該組節(jié)點以指導(dǎo)租戶任務(wù)的部署。目標(biāo)狀態(tài)機構(gòu)510 —般與管理角色597-599通信,且配置成將角色實例521-523轉(zhuǎn)換至如執(zhí)行引擎520所指示的預(yù)期狀態(tài)并保持該預(yù)期狀態(tài)。作為示例,在更新域305的準(zhǔn)備階段(參見圖4的附圖標(biāo)記430)期間,角色實例521-523的預(yù)期狀態(tài)可以是離線狀態(tài)435。另一方面,在更新域305的恢復(fù)階段(參見圖4的附圖標(biāo)記450)期間,角色實例521-523的預(yù)期狀態(tài)可以是在線狀態(tài)455。在目標(biāo)狀態(tài)機構(gòu)510的操作的一個示例中,執(zhí)行引擎520和/或調(diào)度組件530可將指令560發(fā)送至目標(biāo)狀態(tài)機構(gòu)510,請求目標(biāo)狀態(tài)機構(gòu)510將更新域305轉(zhuǎn)換至預(yù)期狀態(tài)。如本文中所使用,短語“預(yù)期狀態(tài)”一般代表角色實例521-523采取離線狀態(tài)或在線狀態(tài)的目標(biāo)。一旦采取了適當(dāng)?shù)男袆右詫⒔巧珜嵗?21-523轉(zhuǎn)換至預(yù)期狀態(tài),則可通過線路協(xié)議(示為無箭頭的虛線)將角色實例521-523的實際狀態(tài)報告給相應(yīng)的主機代理(作為角色實例521-523駐留在公共節(jié)點上),相應(yīng)的主機代理將實際狀態(tài)轉(zhuǎn)發(fā)至租戶改變管理器580。租戶改變管理器580進而可將租戶任務(wù)的實際狀態(tài)傳遞給目標(biāo)狀態(tài)機構(gòu)510,以輔助目標(biāo)狀態(tài)機構(gòu)510確定如何繼續(xù)執(zhí)行正在進行的租戶任務(wù)。在另一實施例中,更新域305的節(jié)點X、Y和Z到達預(yù)期狀態(tài)后,目標(biāo)狀態(tài)機構(gòu)510可將角色實例521-523的狀態(tài)傳達至管理角色597-599。在離線狀態(tài)是預(yù)期狀態(tài)的實施例中,通信可包括發(fā)送第一消息,該第一消息通知管理角色597-599關(guān)于應(yīng)當(dāng)考慮停用角色實例521-523,以使服務(wù)應(yīng)用350準(zhǔn)備好不指望使用角色實例521-523。在在線狀態(tài)是預(yù)期狀態(tài)的實施例中,通信可包括發(fā)送第二消息,該第二消息通知管理角色597-599關(guān)于應(yīng)當(dāng)考慮啟用角色實例521-523,以使服務(wù)應(yīng)用350能夠依賴于角色實例521-523。在一些實例中,傳遞預(yù)期狀態(tài)的消息被直接轉(zhuǎn)發(fā)至運行在受租戶任務(wù)影響的節(jié)點X、Y和Z的相應(yīng)根分區(qū)上的主機代理。例如,在將這些消息分發(fā)至適當(dāng)?shù)墓芾斫巧?97-599之前,這些消息可被發(fā)送至圖6的主機代理615。同樣,主機代理用于向服務(wù)應(yīng)用350揭示角色實例521-523的狀態(tài)。進一步地,通過在節(jié)點X、Y和Z上本地存儲這些消息,這些消息能夠在結(jié)構(gòu)控制器故障轉(zhuǎn)移下和/或主存管理角色597-599的節(jié)點分別離線(例如在重啟或重鋪操作期間)時存活。因此,網(wǎng)絡(luò)500的基礎(chǔ)平臺被設(shè)計成,不管當(dāng)前在進展中的租戶任務(wù)如何,都保持對消息的一致可見性。在實施例中,經(jīng)由消息保持的預(yù)期狀態(tài)可被轉(zhuǎn)移至主存服務(wù)應(yīng)用350的管理角色的實例的每個節(jié)點。然后,管理角色597-599可實現(xiàn)用于通過規(guī)則地檢查這些消息來周期性地輪詢更新域305和310的預(yù)期狀態(tài)的機制。這些輪詢用于檢索預(yù)期狀態(tài)和其它信息,并使其對服務(wù)應(yīng)用350可用?!┠繕?biāo)狀態(tài)機構(gòu)510設(shè)定并傳達預(yù)期狀態(tài),節(jié)點狀態(tài)驅(qū)動器460就一般配置用于根據(jù)預(yù)期狀態(tài)在租戶改變管理器580的指導(dǎo)下將角色實例521-523停用至離線狀態(tài)、執(zhí)行租戶任務(wù)、以及將角色實例521-523恢復(fù)至在線狀態(tài)。遵照本發(fā)明的實施例,節(jié)點可代表任何形式的計算設(shè)備,諸如例如個人計算機、臺式計算機、膝上型計算機、移動設(shè)備、消費電子設(shè)備、服務(wù)器、圖1的計算設(shè)備100以及類似物。典型地,該節(jié)點包括或連接至一些形式計算單元(例如中央處理單元、微處理器等等)以支持角色實例和運行在該節(jié)點上的其它組件的操作。如本文中所使用的那樣,短語“計算單元”通常是指具有處理能力和存儲存儲器的專用計算設(shè)備,該專用計算設(shè)備支持一個或多個操作系統(tǒng)或其他基礎(chǔ)軟件。在一個實例中,計算單元被配置為有形硬件元件或機器,有形硬件元件或機器作為節(jié)點的一部分或操作耦合至節(jié)點,以使每個端點能執(zhí)行多種處理和操作。在另一實例中,計算單元可包含耦合至節(jié)點所容納的計算機可讀介質(zhì)的處理器(未示出)。一般而言,計算機可讀介質(zhì)至少臨時地存儲可由處理器執(zhí)行的多個計算機軟件組件(例如角色實例521-523)。如本文所使用的,術(shù)語“處理器”不旨在是限制性的,并且可包含具有計算能力的計算單元的任何要素。在這種能力中,處理器可被配置成處理指令的有形物品。在示例性實施例中,處理可以包括取指令、解碼/解釋指令、執(zhí)行和寫回指令。如圖5所示,更新域305的節(jié)點X、Y和Z和更新域310的節(jié)點A、B和C各自代表虛擬機或物理機。當(dāng)代表虛擬機時,這些節(jié)點可包括圖1的存儲器112的部分和/或圖1的處理器114的部分。如在此所使用的那樣,短語“虛擬機”無意為限制性的,并且可以指由處理單元執(zhí)行以支持服務(wù)應(yīng)用的功能的任何軟件、應(yīng)用、操作系統(tǒng)或程序。在實施例中,虛擬機代表節(jié)點的相應(yīng)的訪客分區(qū),其中該訪客分區(qū)被啟用以主存服務(wù)應(yīng)用350或服務(wù)應(yīng)用350的至少一部分。
一般而言,服務(wù)應(yīng)用350由以分布方式主存服務(wù)應(yīng)用350的云計算網(wǎng)絡(luò)500的租戶(例如顧客)所擁有。該節(jié)點可進一步支持運行在該節(jié)點上的主機代理(參見圖6的附圖標(biāo)記615)。在實施例中,主機代理615駐留在該節(jié)點的根分區(qū)上,其中根分區(qū)一般負責(zé)管理來自虛擬機的請求,諸如執(zhí)行盤I/O操作的請求。應(yīng)理解和領(lǐng)會,圖5中示出的云計算網(wǎng)絡(luò)500僅僅是一個合適的計算系統(tǒng)環(huán)境的實例,且不旨在暗示關(guān)于本發(fā)明的實施例的使用范圍或功能的任何限制。例如,云計算網(wǎng)絡(luò)500可以是公共云、私有云或?qū)S迷?。云計算網(wǎng)絡(luò)500不應(yīng)被解釋為具有與本文中示出的任何單個組件或組件的組合有關(guān)的任何依賴性或要求。此外,盡管為了清楚起見用線條示出了圖5的各個框,但是在實際上,各組件的輪廓并不是那樣清楚,并且比喻性地來說,線條更精確地將是灰色的和模糊的。另外,可以采用任何數(shù)目的物理機、虛擬機、數(shù)據(jù)中心、端點或其組合來在本發(fā)明實施例的范圍內(nèi)實現(xiàn)所期望的功能。云計算網(wǎng)絡(luò)500典型地包括數(shù)據(jù)中心,配置成主存和支持由云計算網(wǎng)絡(luò)350的租客/顧客所擁有的分布式服務(wù)應(yīng)用的角色實例的操作。如本文所使用的短語“服務(wù)應(yīng)用”泛指在云計算網(wǎng)絡(luò)500之上運行或訪問云計算網(wǎng)絡(luò)500內(nèi)的存儲位置的任何軟件或軟件的部分。在一個實施例中,角色實例(例如角色實例521-523)可代表參與支持服務(wù)應(yīng)用(例如服務(wù)應(yīng)用350)的功能的軟件一部分或組件程序。應(yīng)理解和領(lǐng)會,圖5中示出的每個角色實例僅僅是支持服務(wù)應(yīng)用的合適部分的示例,且不旨在暗示關(guān)于本發(fā)明實施例的使用范圍或功能的任何限制。在云計算網(wǎng)絡(luò)500的情境下,所示出的多個組件可在節(jié)點內(nèi)部通信、通過橫跨數(shù)據(jù)中心動態(tài)建立的連接在物理節(jié)點上通信、以及通過物理網(wǎng)絡(luò)拓撲與遠程網(wǎng)絡(luò)資源(例如企業(yè)專用網(wǎng)絡(luò))外部地通信。這些連接可包括經(jīng)由網(wǎng)絡(luò)云(未示出)互連在數(shù)據(jù)中心的物理資源上分布的組件。網(wǎng)絡(luò)云互連這些資源,使得一個組件可識別另一組件的位置以在它們之間建立通信。例如,網(wǎng)絡(luò)云可在連接公共服務(wù)應(yīng)用的角色實例的信道上建立該通信。舉例來說,這些信道可包括但不限于一個或多個局域網(wǎng)(LAN)和/或廣域網(wǎng)(WAN)。這樣的聯(lián)網(wǎng)環(huán)境常見于辦公室、企業(yè)范圍計算機網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中。因此,不在此進一步描述該網(wǎng)絡(luò)。此外,可采用任何數(shù)量的組件在本發(fā)明實施例的范圍內(nèi)實現(xiàn)所期望的功能。盡管為了清楚起見用線條示出了圖5的各組件,但是在實際上,各組件的輪廓并不是那樣清楚,并且按比喻的說法,線條更精確地將是灰色的或模糊的。進一步,盡管將圖5的一些組件描繪為單個框,但這些描繪在本質(zhì)上和數(shù)量上是示例性的,且不應(yīng)理解為限制性(例如,盡管僅示出了一個執(zhí)行引擎520,但可建立更多執(zhí)行引擎以管理與各個租戶任務(wù)相關(guān)聯(lián)的轉(zhuǎn)換)。優(yōu)先和搶先于租戶任務(wù)現(xiàn)在轉(zhuǎn)到圖6,根據(jù)本發(fā)明的實施例示出了描繪結(jié)構(gòu)控制器295和服務(wù)應(yīng)用250之間的交互的數(shù)據(jù)中心的示例性拓撲的圖形表示。最初,結(jié)構(gòu)控制器295可保持當(dāng)前待決的租戶任務(wù)(例如租戶任務(wù)611-613)的任務(wù)列表610。調(diào)度組件530配置成通知服務(wù)應(yīng)用350的至少一個管理角色620關(guān)于影響服務(wù)應(yīng)用350的那些當(dāng)前活動的和待決的租戶任務(wù)以及在任務(wù)列表610內(nèi)出現(xiàn)的任何相關(guān)修改(例如租戶任務(wù)611-613的重新排序或待決租戶任務(wù)的搶先)。
有時候,如上所述,可在租戶任務(wù)正在待決并被部署在活動狀態(tài)時發(fā)起高優(yōu)先級任務(wù)。管控如何處理高優(yōu)先級任務(wù)的策略605對于調(diào)度組件530可用,其中不同的策略605可導(dǎo)致用于執(zhí)行租戶任務(wù)的不同方式。在操作中,策略605管控調(diào)度組件530對圍繞租戶任務(wù)611-613的沖突的反應(yīng)(例如超時和取消消息)。在實施例中,該反應(yīng)由策略605所揭示的租戶任務(wù)因素驅(qū)動。這些因素之一涉及發(fā)起租戶任務(wù)的實體的類型。租戶任務(wù)可被分成兩類應(yīng)用發(fā)起或顧客發(fā)起;以及基礎(chǔ)結(jié)構(gòu)發(fā)起。當(dāng)顧客向他們的服務(wù)應(yīng)用350發(fā)起租戶任務(wù)(例如版本更新)時,該租戶任務(wù)被放置在任務(wù)列表610中,并向管理角色620顯露。一旦顧客發(fā)起的租戶任務(wù)被發(fā)起(例如在到達任務(wù)列表610的次序頂部時),結(jié)構(gòu)控制器295就可查詢管理角色620以確定當(dāng)前在由顧客發(fā)起的租戶任務(wù)選定為目標(biāo)的角色實例上是否存在另一租戶任務(wù)待決。如果基礎(chǔ)結(jié)構(gòu)發(fā)起的租戶任務(wù)(例如由基礎(chǔ)平臺內(nèi)部發(fā)起的維護操作或包括重啟受影響節(jié)點的新的根操作系統(tǒng)版本的安裝)當(dāng)前被部署在被選定為目標(biāo)的角色實例上,則顧客發(fā)起的租戶任務(wù)被掛起(轉(zhuǎn)換至掛起狀態(tài))或完全終止(轉(zhuǎn)換至被取消狀態(tài))。當(dāng)基礎(chǔ)結(jié)構(gòu)向服務(wù)應(yīng)用350發(fā)起租戶任務(wù)時,該任務(wù)可被置于任務(wù)列表610中,或被分配高優(yōu)先級并且立即被部署。在檢測到基礎(chǔ)結(jié)構(gòu)發(fā)起的租戶任務(wù)的部署后,結(jié)構(gòu)控制器295可查詢管理角色620以確定當(dāng)前在由基礎(chǔ)結(jié)構(gòu)發(fā)起的租戶任務(wù)所選定為目標(biāo)的角色實例上是否存在另一租戶任務(wù)待決。如果顧客發(fā)起的租戶任務(wù)當(dāng)前被部署在被選定為目標(biāo)的角色實例上,則可進行若干步驟。一個步驟包括確定顧客發(fā)起的租戶任務(wù)是否被給予任何特權(quán),這些特權(quán)將使其優(yōu)先級排名比基礎(chǔ)結(jié)構(gòu)發(fā)起的租戶任務(wù)的優(yōu)先級高。如果未被給予特權(quán),則另一步驟包括搶先于顧客發(fā)起的租戶任務(wù)。在實施例中,搶先包括使顧客發(fā)起的租戶任務(wù)暫時停止工作(轉(zhuǎn)換至不活動狀態(tài)),同時允許基礎(chǔ)結(jié)構(gòu)發(fā)起的租戶任務(wù)開始(轉(zhuǎn)換至活動狀態(tài))。因此,待決的顧客發(fā)起的租戶任務(wù)將不會阻止基礎(chǔ)結(jié)構(gòu)發(fā)起的租戶任務(wù)。在其它實施例中,調(diào)度組件530配置用于建立任務(wù)列表610,并在特定租戶任務(wù)到達任務(wù)列表610頂部時調(diào)用該特定租戶任務(wù)的執(zhí)行。當(dāng)構(gòu)建任務(wù)列表610時,調(diào)度組件530可依賴于優(yōu)先級方案來產(chǎn)生任務(wù)列表610內(nèi)的租戶任務(wù)排序。此外,調(diào)度組件530被配置用于,當(dāng)在選定共同節(jié)點作為目標(biāo)的兩個或多個租戶任務(wù)之間存在沖突時,選擇適當(dāng)?shù)淖鈶羧蝿?wù)以立即執(zhí)行。該選擇可基于咨詢優(yōu)先級方案并查明哪個租戶任務(wù)應(yīng)當(dāng)根據(jù)該優(yōu)先級方案首先發(fā)起。典型地,優(yōu)先級方案包含由基礎(chǔ)平臺建立的策略605。現(xiàn)在將討論用于采用優(yōu)先級方案的示例性過程。最初,當(dāng)待決租戶任務(wù)正在對象角色實例處執(zhí)行時,新租戶任務(wù)到達調(diào)度組件530。此時,新租戶任務(wù)處于不活動狀態(tài),待決租戶任務(wù)處于活動狀態(tài),而且對象角色實例處于離線狀態(tài)。新租戶任務(wù)的優(yōu)先級可根據(jù)優(yōu)先級方案來確定。如果所確定的優(yōu)先級低于待決租戶任務(wù)的優(yōu)先級,則調(diào)度組件530可繼續(xù)執(zhí)行待決租戶任務(wù)(保持于活動狀態(tài)),同時根據(jù)所確定的優(yōu)先級將新租戶任務(wù)(保持于不活動狀態(tài))插入任務(wù)列表610的租戶任務(wù)611-613隊列中。然而,如果所確定的優(yōu)先級高于待決租戶任務(wù)的優(yōu)先級,則調(diào)度組件530可通過對待決租戶任務(wù)執(zhí)行任務(wù)搶先序列的仲裁動作而搶先于待決租戶任務(wù)的執(zhí)行。這些仲裁操作可包括將待決租戶任務(wù)轉(zhuǎn)換至不活動狀態(tài),并將新租戶任務(wù)轉(zhuǎn)換至活動狀態(tài)。當(dāng)將待決租戶任務(wù)轉(zhuǎn)換至不活動狀態(tài)時,調(diào)度組件530的目標(biāo)是使對象角色實例盡快地從當(dāng)前離線狀態(tài)進入在線狀態(tài)。為此,待決租戶任務(wù)的執(zhí)行在對象角色實例處被掛起,或被允許完成執(zhí)行(例如執(zhí)行圖4的工作階段440)并通過明確定義的狀態(tài)轉(zhuǎn)換路徑退出。當(dāng)待決租戶任務(wù)被掛起時,新的租戶任務(wù)在對象角色實例上執(zhí)行,而且在完成新租戶任務(wù)的執(zhí)行后,在中斷點處在對象角色實例上繼續(xù)先前待決的租戶任務(wù)。在調(diào)度組件530允許待決租戶任務(wù)在對象角色實例上完成執(zhí)行的實例中,可實施超時邏輯以確保待決租戶任務(wù)在預(yù)定的時間量中完成。在操作時,在對象角色實例在預(yù)定時間量期滿之前未能采取在線狀態(tài),則超時邏輯可強制待決租戶任務(wù)過早停止執(zhí)行,以停止阻止新租戶任務(wù)的部署。然而,超時邏輯的優(yōu)勢是允許待決租戶任務(wù)的當(dāng)前階段(例如圖4的階段430、440以及450)運行以在對象角色實例上不中斷地完成,從而使服務(wù)應(yīng)用350在搶先期間保持在一致狀態(tài)。在示例性實施例中,由超時邏輯分配的用于了結(jié)待決租戶任務(wù)的預(yù)定時間量可部分地基于分配給較高優(yōu)先級的新租戶任務(wù)所選定為目標(biāo)的服務(wù)應(yīng)用的特權(quán)級別而改變。換言之,特權(quán)級別一般代表允許服務(wù)應(yīng)用行為影響結(jié)構(gòu)控制器295在掛起待決租戶任務(wù)之前所等待的時間的程度。在實例中,與分配給被分配低特權(quán)級別的服務(wù)應(yīng)用的短時間量相比,被分配高特權(quán)級別的服務(wù)應(yīng)用可被分配較長的時間量來完成“準(zhǔn)備”和“恢復(fù)”階段。例如,關(guān)鍵內(nèi)部應(yīng)用可被給予比第三方主存應(yīng)用高的特權(quán)級別?;A(chǔ)平臺的管理員建立用于執(zhí)行租戶任務(wù)的策略605后,這些特權(quán)級別可被修改。在另一實施例中,被分配給服務(wù)應(yīng)用的特權(quán)級別可用于控制其它操作,諸如在租戶任務(wù)故障的情況下何時產(chǎn)生操作警報。雖然以上討論了在搶先事件下執(zhí)行的動作的多個實施例,但應(yīng)當(dāng)領(lǐng)會和理解,租戶任務(wù)的不同優(yōu)先級可不同地處理,且可在調(diào)度組件530處調(diào)用替代的動作。當(dāng)在服務(wù)應(yīng)用350上執(zhí)行租戶任務(wù)時,結(jié)構(gòu)控制器295可向管理角色620顯露服務(wù)應(yīng)用350的角色實例的運行時健康信息。該健康信息可經(jīng)由消息(例如XML文檔)對管理角色620可用,該消息具有結(jié)構(gòu)控制器295發(fā)布至主機代理615的實例的時間戳,該消息然后經(jīng)由線路協(xié)議616被發(fā)送至服務(wù)應(yīng)用350。一般而言,線路協(xié)議616在主機代理615和服務(wù)應(yīng)用350的角色之間傳遞通信。如圖6所示,典型地,存在線路協(xié)議616與主機代理615之間的一對一對應(yīng)關(guān)系。在實施例中,使健康信息可用的過程包括查詢服務(wù)應(yīng)用350的角色實例(這些角色實例進而將它們的健康信息報告給結(jié)構(gòu)控制器350),并在允許管理角色620查看消息之前聚集健康信息。在查看該消息后,管理角色620可檢測已遇到問題(例如無法返回在線狀態(tài))的一個或多個角色實例,并進行補救動作(例如請求結(jié)構(gòu)控制器295重啟失效的角色實例)。如此,對角色實例的健康信息的理解允許管理角色620評估租戶任務(wù)的結(jié)果,和/或計算是否繼續(xù)至租戶任務(wù)的下一階段。在實施例中,健康信息還可包含內(nèi)部狀態(tài)信息,該內(nèi)部狀態(tài)信息描述服務(wù)應(yīng)用350的角色實例處的特定內(nèi)部狀態(tài)的存在。一般而言,內(nèi)部狀態(tài)信息可用于影響結(jié)構(gòu)控制器295發(fā)起租戶任務(wù)在服務(wù)應(yīng)用350 —部分上的執(zhí)行的定時。如圖6所示,僅出于說明目的,如果服務(wù)應(yīng)用350包括角色A的三個實例(A。A2、和A3)和角色B的三個實例(B。B2、和B3),則內(nèi)部狀態(tài)信息可描述角色A的哪些實例本地存儲第一內(nèi)部狀態(tài),以及角色B的哪些實例本地存儲第二內(nèi)部狀態(tài)。當(dāng)租戶改變管理器580向管理角色620傳達對被選定作為目標(biāo)以采取離線狀態(tài)的那些角色實例的指示時,在部署待決租戶任務(wù)的特定階段后,管理角色620就可咨詢健康信息以確定使被選定作為目標(biāo)的角色實例進入離線狀態(tài)是否安全。
例如,在要求關(guān)于使角色實例A1 (保持第一內(nèi)部狀態(tài))和B1 (保持第二內(nèi)部狀態(tài))進入離線狀態(tài)的反饋時,管理角色620可咨詢健康信息來確定第一內(nèi)部狀態(tài)是否在角色A的兩個或更多個實例處被復(fù)制,以及第二內(nèi)部狀態(tài)是否在角色B的兩個或更多個實例處被復(fù)制。當(dāng)內(nèi)部狀態(tài)信息揭示第一和第二內(nèi)部狀態(tài)在被選定作為目標(biāo)的角色實例(A1和B1)之外被復(fù)制時,管理角色620可發(fā)出待決租戶任務(wù)可如所調(diào)度地被部署的信號。然而,當(dāng)內(nèi)部狀態(tài)信息揭示第一和第二內(nèi)部狀態(tài)未在被選定作為目標(biāo)的角色實例(A1和B1)之外被復(fù)制時,管理角色620可請求待決租戶任務(wù)被延遲,以在角色實例A2、A3、B2以及B3中的一個或多個上分別復(fù)制第一和第二內(nèi)部狀態(tài)。該延遲允許管理角色620有時間保留第一和第二內(nèi)部狀態(tài)的可用性。如上所述,所請求的延遲由結(jié)構(gòu)控制器295考慮,但不一定被允許(例如基于待決租戶任務(wù)的優(yōu)先級)。過程流程現(xiàn)在參考圖7,示出根據(jù)本發(fā)明實施例的用于促進云計算網(wǎng)絡(luò)的結(jié)構(gòu)控制器與服務(wù)應(yīng)用之間的交互的整體方法700的流程圖。盡管術(shù)語“步驟”和/或“框”可在此處用于指示所采用方法的不同元素,但除非而且僅當(dāng)明確描述了各個步驟的順序時,該術(shù)語不應(yīng)被解釋為意味著此處公開的多個步驟之中或之間的任何特定順序。方法700最初可包括選擇包括該服務(wù)應(yīng)用的一個或多個角色實例的第一更新域(UD),如框710所示。典型地,角色實例運行在在線條件下,且代表支持該服務(wù)應(yīng)用的功能的相應(yīng)組件程序(例如該服務(wù)應(yīng)用的角色的單個復(fù)制)。該方法700還可包括準(zhǔn)備第一 UD以用于執(zhí)行租戶任務(wù)(例如平臺發(fā)起的更新、顧客發(fā)起的更新、平臺發(fā)起的維修、或顧客發(fā)起的維修),如框712所示。在示例性實施例中,準(zhǔn)備第一 UD包括至少以下步驟通知服務(wù)應(yīng)用內(nèi)的管理角色關(guān)于結(jié)構(gòu)控制器執(zhí)行租戶任務(wù)的意圖(參見框714);以及基于確定受租戶任務(wù)影響的角色實例的內(nèi)部狀態(tài)是否在該服務(wù)應(yīng)用的不受租戶任務(wù)影響的部分上被復(fù)制,從管理角色接收響應(yīng)(參見框716)。準(zhǔn)備第一UD的角色實例之后,發(fā)起將這些角色實例停用至離線狀態(tài),如框718所示。一般而言,停用角色實例包括使主存第一 UD內(nèi)的一個或多個角色實例的一組節(jié)點不工作。一旦角色實例已采取離線狀態(tài),允許租戶任務(wù)在第一 UD上執(zhí)行,如框720所示。再進一步,該方法700可包括,完成租戶任務(wù)的執(zhí)行后,將第一 UD的角色實例恢復(fù)至在線狀態(tài),如框722所示。在示例性實施例中,將第一 UD的實例恢復(fù)至在線狀態(tài)包括至少以下步驟驗證受租戶任務(wù)影響的角色實例在起作用(參見框724);以及通知管理角色關(guān)于角色實例上的租戶任務(wù)的執(zhí)行完成(參見框726),由此提示該服務(wù)應(yīng)用繼續(xù)利用這些角色實例來執(zhí)行任務(wù)。一般而言,將第一 UD內(nèi)的角色實例恢復(fù)至在線狀態(tài)還包括使主存這些角色實例的該組節(jié)點工作。將第一 內(nèi)的角色實例恢復(fù)至在線狀態(tài)后,則該方法700可通過選擇角色實例的第二 UD以在其上運行租戶任務(wù)而繼續(xù)。典型地,第一 UD和第二 UD在組員關(guān)系上是互斥的,可分別代表在云計算網(wǎng)絡(luò)上傳播租戶任務(wù)時的分立階段?,F(xiàn)在轉(zhuǎn)到圖8,根據(jù)本發(fā)明實施例示出用于在執(zhí)行租戶任務(wù)時調(diào)度高優(yōu)先級任務(wù)的整體方法800的流程圖。該方法800包括接收在服務(wù)應(yīng)用上執(zhí)行租戶任務(wù)的指示(參見框810),并標(biāo)識包括該服務(wù)應(yīng)用的一個或多個角色實例的更新域(UD)(參見框812)。在此時,角色實例在在線狀態(tài)下操作。準(zhǔn)備UD以用于執(zhí)行租戶任務(wù)(參見框814),而且隨后將UD的實例停用至離線狀態(tài)(參見框816)。在示例性實施例中,準(zhǔn)備UD以用于執(zhí)行租戶任務(wù)的過程包括多個邏輯步驟,包括以下通知服務(wù)應(yīng)用內(nèi)的管理角色關(guān)于執(zhí)行該租戶任務(wù)的意圖;以及接收來自管理角色的肯定響應(yīng),或接收來自管理角色的否定響應(yīng)。在某個后續(xù)時間點,接收執(zhí)行高優(yōu)先級任務(wù)的指示,如框818處所示。如本文中所使用,短語“高優(yōu)先級”不意味著限制性,而是代表被預(yù)先確定為在優(yōu)先級方案內(nèi)搶先于租戶任務(wù)的任何任務(wù)。在接收到執(zhí)行高優(yōu)先級任務(wù)的指示后,則如框820處所示,租戶任務(wù)的部署讓位于高優(yōu)先級任務(wù)。在示例性實施例中,讓位的過程包括多個邏輯步驟,包括以下指令服務(wù)應(yīng)用執(zhí)行將角色實例恢復(fù)至在線狀態(tài)的操作的截斷集合(參見框822);將租戶任務(wù)掛起(參見框824);以及發(fā)起高優(yōu)先級任務(wù)在角色實例上的執(zhí)行(參見框826)。完成高優(yōu)先級任務(wù)的執(zhí)行后,繼續(xù)租戶任務(wù)的部署,如框828處所示。在示例性實施例中,繼續(xù)的過程包括多個邏輯步驟,包括以下重新發(fā)起將UD的角色實例停用至離線狀態(tài)(參見框830 );以及允許租戶任務(wù)在角色實例上執(zhí)行(參見框832 )。一旦完成租戶任務(wù)的執(zhí)行,可將UD的角色實例恢復(fù)至在線狀態(tài),如框834處所示。在示例性實施例中,將角色實例恢復(fù)至在線狀態(tài)的過程包括多個邏輯步驟,包括以下驗證受租戶任務(wù)影響的角色實例在起作用;以及通知管理角色關(guān)于角色實例上的租戶任務(wù)的執(zhí)行完成,由此提示該服務(wù)應(yīng)用繼續(xù)利用這些角色實例來執(zhí)行多個任務(wù)。參考具體實施例描述了本發(fā)明的實施例,具體實施例在所有方面都旨在是說明性的而非限制性的。在不背離本發(fā)明范圍的情況下各替換實施例對本發(fā)明的各實施例的所屬領(lǐng)域的普通技術(shù)人員將變得顯而易見。從前面的描述可以看出,本發(fā)明很好地適用于實現(xiàn)上文所闡述的所有目的和目標(biāo),并且具有對于該系統(tǒng)和方法是顯而易見且固有的其他優(yōu)點??衫斫獾氖?,某些特征和子組合是有用的,并且可以加以利用而無需參考其它特征和子組合。這由權(quán)利要求所構(gòu)想的,并在權(quán)利要求的范圍內(nèi)。
權(quán)利要求
1.一個或多個計算機可讀介質(zhì),所述一個或多個計算機可讀介質(zhì)上具體化有計算機可執(zhí)行指令,所述計算機可執(zhí)行指令在被執(zhí)行時執(zhí)行用于促進云計算網(wǎng)絡(luò)的結(jié)構(gòu)控制器與運行在云計算網(wǎng)絡(luò)中的服務(wù)應(yīng)用之間的交互的方法,所述方法包括選擇(710)第一更新域(UD),所述第一更新域(UD)包括所述服務(wù)應(yīng)用的一個或多個角色實例,其中所述一個或多個角色實例在在線狀態(tài)下操作;準(zhǔn)備(712)所述第一 UD以用于執(zhí)行租戶任務(wù),其中準(zhǔn)備所述第一 UD包括(a)通知(714)所述服務(wù)應(yīng)用內(nèi)的管理角色關(guān)于所述結(jié)構(gòu)控制器執(zhí)行租戶任務(wù)的意圖;以及(b)基于確定受租戶任務(wù)影響的一個或多個角色實例的內(nèi)部狀態(tài)是否被復(fù)制在所述服務(wù)應(yīng)用的不受租戶任務(wù)影響的部分上,從所述管理角色接收(716)響應(yīng);發(fā)起(718)將所述第一 UD的一個或多個角色實例停用至離線狀態(tài);以及允許(720)所述租戶任務(wù)在所述第一 UD上執(zhí)行。
2.如權(quán)利要求1所述的計算機可讀介質(zhì),其特征在于,所述方法進一步包括,完成租戶任務(wù)的執(zhí)行后,將所述第一 UD的一個或多個角色實例恢復(fù)(722)至在線狀態(tài)。
3.如權(quán)利要求2所述的計算機可讀介質(zhì),其特征在于,將所述第一UD的一個或多個角色實例恢復(fù)至在線狀態(tài)包括驗證(724)所述受租戶任務(wù)影響的一個或多個角色實例是起作用的;以及通知(726)所述管理角色關(guān)于租戶任務(wù)在所述一個或多個角色實例上的執(zhí)行完成,由此提示所述服務(wù)應(yīng)用繼續(xù)采用所述一個或多個角色實例。
4.如權(quán)利要求3所述的計算機可讀介質(zhì),其特征在于,將所述一個或多個角色實例停用至離線狀態(tài)包括使主存所述第一 UD內(nèi)的一個或多個角色實例的一組節(jié)點不工作,而且其中將所述一個或多個角色實例恢復(fù)至在線狀態(tài)包括使主存所述第一 UD內(nèi)的一個或多個角色實例的所述一組節(jié)點工作。
5.如權(quán)利要求4所述的計算機可讀介質(zhì),其特征在于,所述一組節(jié)點中的每一個代表能夠運行所述服務(wù)應(yīng)用的一個或多個角色實例的物理機或虛擬機,而且其中所述角色實例代表支持所述服務(wù)應(yīng)用的功能的相應(yīng)組件程序。
6.如權(quán)利要求1所述的計算機可讀介質(zhì),其特征在于,所述方法還包括選擇角色實例的第二 UD以在其上運行租戶任務(wù),其中第一 UD和第二 UD在組員關(guān)系上互斥,且各自代表在云計算網(wǎng)絡(luò)上傳播租戶任務(wù)的分立階段。
7.一種用于在執(zhí)行租戶任務(wù)時調(diào)度高優(yōu)先級任務(wù)的計算機化方法,所述方法包括接收(810)在服務(wù)應(yīng)用上執(zhí)行租戶任務(wù)的指示;標(biāo)識(812)更新域(UD),所述更新域(UD)包括所述服務(wù)應(yīng)用的一個或多個角色實例,其中所述一個或多個角色實例在在線狀態(tài)下操作;準(zhǔn)備(814)所述UD以執(zhí)行所述租戶任務(wù);發(fā)起(816)將所述UD的一個或多個角色實例停用至離線狀態(tài);接收(818)執(zhí)行高優(yōu)先級任務(wù)的指示,其中所述高優(yōu)先級任務(wù)在優(yōu)先級方案中預(yù)定為搶先于所述租戶任務(wù);使所述租戶任務(wù)的部署讓位(820)于所述高優(yōu)先級任務(wù),其中所述讓位的過程包括Ca)指示(822)所述服務(wù)應(yīng)用執(zhí)行將所述一個或多個角色實例恢復(fù)至在線狀態(tài)的操作的截斷集合;(b)將所述租戶任務(wù)掛起(824);以及(c)發(fā)起(826)所述高優(yōu)先級任務(wù)在所述一個或多個角色實例上的執(zhí)行;完成所述高優(yōu)先級任務(wù)的執(zhí)行后,繼續(xù)(828)所述租戶任務(wù)的部署,其中繼續(xù)的過程包括Ca)重新發(fā)起(830)將所述UD的一個或多個角色實例停用至離線狀態(tài);以及(b)允許(832)所述租戶任務(wù)在所述一個或多個角色實例上的執(zhí)行;以及完成所述租戶任務(wù)的執(zhí)行后,將所述UD的一個或多個角色實例恢復(fù)(824)至在線狀態(tài)。
8.如權(quán)利要求7所述的計算機化方法,其特征在于,準(zhǔn)備所述UD以執(zhí)行所述租戶任務(wù)包括通知所述服務(wù)應(yīng)用內(nèi)的管理角色關(guān)于執(zhí)行所述租戶任務(wù)的意圖;以及基于確定受租戶任務(wù)影響的一個或多個角色實例的內(nèi)部狀態(tài)被復(fù)制在所述服務(wù)應(yīng)用的不受租戶任務(wù)影響的部分上,從所述管理角色接收肯定響應(yīng);或基于確定受租戶任務(wù)影響的一個或多個角色實例的內(nèi)部狀態(tài)受限于所述一個或多個角色實例,從所述管理角色接收否定響應(yīng)。
9.如權(quán)利要求8所述的計算機化方法,其特征在于,還包括從所述管理角色接收到肯定響應(yīng)時,允許所述租戶任務(wù)在所述一個或多個角色實例上執(zhí)行;以及從所述管理角色接收到否定響應(yīng)時Ca)當(dāng)執(zhí)行租戶任務(wù)的指示是顧客發(fā)起時,推遲所述租戶任務(wù)在所述一個或多個角色實例上的執(zhí)行,以允許內(nèi)部狀態(tài)的復(fù)制;以及(b)當(dāng)執(zhí)行租戶任務(wù)的指示是平臺發(fā)起時,繼續(xù)所述租戶任務(wù)在所述一個或多個角色實例上的執(zhí)行。
10.一種用于執(zhí)行使租戶任務(wù)的逐步部署與服務(wù)應(yīng)用的部分協(xié)調(diào)的方法的計算機系統(tǒng),所述計算機系統(tǒng)包括耦合至計算機存儲介質(zhì)的處理單元,所述計算機存儲介質(zhì)上存儲有多個計算機軟件組件,所述計算機軟件組件可由所述處理單元執(zhí)行,所述計算機軟件組件包括所述服務(wù)應(yīng)用(350)的一個或多個角色實例(321-323),其中所述角色實例代表支持所述服務(wù)應(yīng)用的功能的組件程序;租戶改變管理器(580),用于指導(dǎo)所述租戶任務(wù)的部署,其中指導(dǎo)部署的過程包括傳達部署所述租戶任務(wù)的指示;發(fā)起將所述一個或多個角色實例停用至離線狀態(tài);允許所述租戶任務(wù)在所述一個或多個角色實例上執(zhí)行;以及發(fā)起將所述一個或多個角色實例恢復(fù)至在線狀態(tài);以及所述服務(wù)應(yīng)用的管理角色(597-599),用于監(jiān)測所述一個或多個角色實例的內(nèi)部狀態(tài),其中,在接收到部署所述租戶任務(wù)的指示時,所述管理角色負責(zé)確定所監(jiān)測到的受所述租戶任務(wù)影響的一個或多個角色實例的內(nèi)部狀態(tài)是否被復(fù)制在所述服務(wù)應(yīng)用的未受所述租戶任務(wù)影響的部分上,并負責(zé)將對所述內(nèi)部狀態(tài)的可用性的指示傳達至所述租戶改變管理器。
全文摘要
本發(fā)明公開了用于提高有狀態(tài)應(yīng)用的可用性的方法和系統(tǒng)。提供了用于促進云計算網(wǎng)絡(luò)的結(jié)構(gòu)控制器與運行在云計算網(wǎng)絡(luò)上的服務(wù)應(yīng)用之間的協(xié)調(diào)的系統(tǒng)和計算機可讀介質(zhì)。最初,選擇包括服務(wù)應(yīng)用的角色實例的更新域(UD),其中該服務(wù)應(yīng)用代表被選定作為接收在其上執(zhí)行的租戶任務(wù)的目標(biāo)的有狀態(tài)應(yīng)用。協(xié)調(diào)過程包括準(zhǔn)備UD以執(zhí)行租戶任務(wù);將UD的角色實例停用至離線狀態(tài);允許租戶任務(wù)執(zhí)行;以及在完成租戶任務(wù)執(zhí)行時將角色實例恢復(fù)至在線狀態(tài)。準(zhǔn)備UD包括通知在服務(wù)應(yīng)用內(nèi)建立的管理角色關(guān)于結(jié)構(gòu)控制器執(zhí)行租戶任務(wù)的意圖;以及接收傳達受租戶任務(wù)影響的角色實例的內(nèi)部狀態(tài)的復(fù)制存在的管理角色響應(yīng)。
文檔編號H04L29/08GK103034536SQ201210533228
公開日2013年4月10日 申請日期2012年12月11日 優(yōu)先權(quán)日2011年12月12日
發(fā)明者P·杜爾諾夫, L·伊倫-布里斯, M·庫托年科, C·桑德斯, G·古普塔, A·哈薩恩, I·S·M·菲洛, A·沙哈, T·普夫雷格, S·賽德, S·里瓦斯卡, U·阿扎德 申請人:微軟公司