專利名稱:分布式系統(tǒng)中的協(xié)調(diào)升級(jí)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及分布式系統(tǒng)中的協(xié)調(diào)升級(jí)。
背景技術(shù):
分布式系統(tǒng)可具有在分開(kāi)的進(jìn)程中執(zhí)行的應(yīng)用程序可執(zhí)行代碼的多個(gè)副本。在一些實(shí)施例中,應(yīng)用程序的各個(gè)實(shí)例可運(yùn)行在不同硬件平臺(tái)上。在許多情況下,負(fù)載平衡系統(tǒng)可被用于將工作負(fù)載分布到應(yīng)用程序的每個(gè)實(shí)例上。分布式應(yīng)用程序常常被用于高度的可伸縮性可能是有用的場(chǎng)合。例如,網(wǎng)站或web應(yīng)用程序可被伸縮,當(dāng)遇到大量猛增的通信量時(shí),可預(yù)期多個(gè)進(jìn)程。在這種情況下,應(yīng)用程序可被復(fù)制成數(shù)百或數(shù)千個(gè)實(shí)例,各個(gè)實(shí)例并行運(yùn)行。
發(fā)明內(nèi)容
分布式應(yīng)用程序可通過(guò)使用由應(yīng)用程序提供的信息來(lái)更新,以確定分組、定序、以及是否進(jìn)行更新順序。應(yīng)用程序可向更新順序提供輸入,并且可使更新順序在更新之前修復(fù)一個(gè)或多個(gè)副本。更新機(jī)制可被用于改變分布式應(yīng)用程序拓?fù)浣Y(jié)構(gòu)以及對(duì)應(yīng)用程序可執(zhí)行代碼、應(yīng)用程序配置、請(qǐng)求操作系統(tǒng)、虛擬機(jī)、以及主機(jī)系統(tǒng)等作出改變。在一些情況下,分布式應(yīng)用程序可采用選出成員數(shù)(quorum)來(lái)確定當(dāng)前是哪個(gè)版本,并且選出成員數(shù)可在更新過(guò)程期間改變。提供本發(fā)明內(nèi)容以便以簡(jiǎn)化的形式介紹將在以下具體實(shí)施方式
中還描述的一些概念。本發(fā)明內(nèi)容并不旨在標(biāo)識(shí)所要求保護(hù)主題的關(guān)鍵特征或必要特征,也不旨在用于限制所要求保護(hù)主題的范圍。
在附圖中圖I是示出云計(jì)算環(huán)境和平臺(tái)的實(shí)施例的圖示。圖2是示出用于更新分布式應(yīng)用程序的方法的實(shí)施例的時(shí)間線圖示。圖3是示出用于確定更新域更新成功的方法的實(shí)施例的流程圖示。圖4是示出在基于選出成員數(shù)的分布式應(yīng)用程序上執(zhí)行的更新的示例順序的實(shí)施例的圖示。
具體實(shí)施例方式可使用來(lái)自應(yīng)用程序的輸入來(lái)對(duì)分布式應(yīng)用程序進(jìn)行更新以確定如何執(zhí)行更新、何時(shí)可繼續(xù)進(jìn)行更新,以及確定在更新期間是否可能已產(chǎn)生問(wèn)題。應(yīng)用程序可以選出成員數(shù)來(lái)運(yùn)行以確定當(dāng)前是應(yīng)用程序的哪個(gè)版本,并且當(dāng)前版本可隨著更新進(jìn)度而改變。更新機(jī)制可允許分布式應(yīng)用程序在更新過(guò)程期間高度可用。更新可在各組應(yīng)用程序的副本上執(zhí)行,使得當(dāng)一個(gè)組在被更新時(shí),其它組可保持運(yùn)行。
組可被定義為更新域。在一更新域中,一組應(yīng)用程序進(jìn)程可作為原子操作(atomicoperation)來(lái)更新。如果對(duì)于更新域中的每個(gè)進(jìn)程更新沒(méi)有成功,則更新可被掛起或回滾到之前的版本。更新機(jī)制可允許更新在應(yīng)用程序本身上執(zhí)行,這可包括改變應(yīng)用程序配置以及更新應(yīng)用程序可執(zhí)行代碼。更新機(jī)制還可被用于在主機(jī)設(shè)備、虛擬機(jī)、虛擬機(jī)中的客操作系統(tǒng)上執(zhí)行更新,以及更新應(yīng)用程序副本的拓?fù)浣Y(jié)構(gòu)。本說(shuō)明書(shū)通篇中,在所有附圖的描述中,相同的附圖標(biāo)記表示相同的元素。在元素被稱為被“連接”或“耦合”時(shí),這些元素可以直接連接或耦合在一起,或者也可以存在一個(gè)或多個(gè)中間元素。相反,在元素被稱為被“直接連接”或“直接耦合”時(shí),不存在中間元素。本發(fā)明可被具體化為設(shè)備、系統(tǒng)、方法、和/或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明主題的部分或全部可以用硬件和/或軟件(包括固件、常駐軟件、微碼、狀態(tài)機(jī)、門(mén)陣列等)來(lái)具 體化。此外,本發(fā)明主題可以采用其上嵌入有供指令執(zhí)行系統(tǒng)使用或結(jié)合其使用的計(jì)算機(jī)可使用或計(jì)算機(jī)可讀的程序代碼的計(jì)算機(jī)可使用或計(jì)算機(jī)可讀的存儲(chǔ)介質(zhì)上的計(jì)算機(jī)程序產(chǎn)品的形式。在本文的上下文中,計(jì)算機(jī)可使用或計(jì)算機(jī)可讀介質(zhì)可以是可包含、存儲(chǔ)、通信、傳播、或傳輸程序以供指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或結(jié)合其使用的任何介質(zhì)。計(jì)算機(jī)可使用或計(jì)算機(jī)可讀介質(zhì)可以是,例如,但不限于,電、磁、光、電磁、紅外、或半導(dǎo)體系統(tǒng)、裝置、設(shè)備或傳播介質(zhì)。作為示例而非限制,計(jì)算機(jī)可讀介質(zhì)可包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)這樣的信息的任意方法或技術(shù)來(lái)實(shí)現(xiàn)的易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括,但不限于,RAM、ROM、EEPR0M、閃存或其它存儲(chǔ)器技術(shù)、CD-ROM、數(shù)字多功能盤(pán)(DVD)或其它光盤(pán)存儲(chǔ)、磁帶盒、磁帶、磁盤(pán)存儲(chǔ)或其它磁性存儲(chǔ)設(shè)備、或能用于存儲(chǔ)所需信息且可以由指令執(zhí)行系統(tǒng)訪問(wèn)的任何其它介質(zhì)。注意,計(jì)算機(jī)可使用或計(jì)算機(jī)可讀介質(zhì)可以是其上打印有程序的紙張或其他合適的介質(zhì),因?yàn)槌绦蚩梢越?jīng)由例如對(duì)紙張或其他介質(zhì)的光學(xué)掃描而電子地捕獲,隨后如有必要被編譯、解釋,或以其他合適的方式處理,并隨后存儲(chǔ)在計(jì)算機(jī)存儲(chǔ)器中。通信介質(zhì)通常以諸如載波或其他傳輸機(jī)制的已調(diào)制數(shù)據(jù)信號(hào)來(lái)體現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù),并包括任意信息傳送介質(zhì)。術(shù)語(yǔ)“已調(diào)制數(shù)據(jù)信號(hào)”可以被定義為其一個(gè)或多個(gè)特征以在信號(hào)中編碼信息的方式被設(shè)定或更改的信號(hào)。作為示例而非限制,通信介質(zhì)包括諸如有線網(wǎng)絡(luò)或直接線連接之類的有線介質(zhì),以及諸如聲學(xué)、RF、紅外及其他無(wú)線介質(zhì)之類的無(wú)線介質(zhì)。上述的任意組合也應(yīng)包含在計(jì)算機(jī)可讀介質(zhì)的范圍內(nèi)。當(dāng)本發(fā)明在計(jì)算機(jī)可執(zhí)行指令的一般上下文中具體化時(shí),該實(shí)施例可以包括由一個(gè)或多個(gè)系統(tǒng)、計(jì)算機(jī)、或其他設(shè)備執(zhí)行的程序模塊。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。通常,程序模塊的功能可以在各個(gè)實(shí)施例中按需進(jìn)行組合或分布。圖I是示出具有用于升級(jí)分布式應(yīng)用程序的系統(tǒng)的云計(jì)算系統(tǒng)的實(shí)施例100的圖示。實(shí)施例100是云計(jì)算平臺(tái)和環(huán)境的簡(jiǎn)化示例,在該云計(jì)算平臺(tái)和環(huán)境中,分布式系統(tǒng)可在保持高可用性的同時(shí)被升級(jí)。圖I的圖示示出系統(tǒng)的各個(gè)功能組件。在某些情況下,組件可以是硬件組件、軟件組件、或硬件和軟件的組合。某些組件可以是應(yīng)用層軟件,而其他組件可以是操作系統(tǒng)層組件。在某些情況下,一個(gè)組件到另一個(gè)組件的連接可以是緊密連接,其中兩個(gè)或更多個(gè)組件在單個(gè)硬件平臺(tái)上操作。在其他情況下,連接可以通過(guò)跨長(zhǎng)距離的網(wǎng)絡(luò)連接來(lái)進(jìn)行。各實(shí)施例可以使用不同的硬件、軟件、以及互連體系結(jié)構(gòu)來(lái)實(shí)現(xiàn)所描述的功能。系統(tǒng)100是云計(jì)算環(huán)境的示例,其中應(yīng)用程序可通過(guò)使用應(yīng)用程序進(jìn)程的許多個(gè)副本來(lái)執(zhí)行。副本可以是同一可執(zhí)行代碼的相同的副本并具有相同的配置。在執(zhí)行對(duì)系統(tǒng)的更新時(shí),應(yīng)用程序可具有最小停機(jī)時(shí)間或沒(méi)有停機(jī)時(shí)間。在一些情況下,應(yīng)用程序可體驗(yàn)到有些低的能力,但應(yīng)用程序可在更新期間繼續(xù)可用。云服務(wù)管理器可使用更新過(guò)程來(lái)將改變應(yīng)用到云服務(wù)基礎(chǔ)架構(gòu),并且應(yīng)用程序所有者可使用相同的更新過(guò)程來(lái)在應(yīng)用程序上執(zhí)行更新。
在一些云計(jì)算環(huán)境中,云服務(wù)提供者可管理底層硬件并向應(yīng)用程序提供諸如操作系統(tǒng)之類的某些軟件服務(wù)。在這些實(shí)施例中,云服務(wù)提供者可周期性地更新主機(jī)硬件和軟件,以及在應(yīng)用程序可執(zhí)行于其上的各虛擬機(jī)上執(zhí)行的軟件。例如,應(yīng)用程序可在虛擬機(jī)中的客操作系統(tǒng)上執(zhí)行。應(yīng)用程序所有者或管理員可為客操作系統(tǒng)配置云服務(wù)提供者以在更新可用時(shí)實(shí)施所有的安全性更新。在這一示例中,應(yīng)用程序可每周、每天或者甚至在某些情況下每小時(shí)地使更新被應(yīng)用。在一些情況下,應(yīng)用程序所有者或管理員也可將更新應(yīng)用到應(yīng)用程序。更新可以是對(duì)應(yīng)用程序的配置改變,或者可以涉及對(duì)應(yīng)用程序的可執(zhí)行代碼的更新。在一些情況下,可通過(guò)添加或者移除應(yīng)用程序進(jìn)程的副本來(lái)改變應(yīng)用程序拓?fù)浣Y(jié)構(gòu)。當(dāng)更新被執(zhí)行時(shí),應(yīng)用程序進(jìn)程可被一起分組到更新域中。每個(gè)更新域可以是可在同一時(shí)間以及以一種原子方式來(lái)更新的一組進(jìn)程。分組可由應(yīng)用程序確定,而不是使外部更新機(jī)制來(lái)確定分組。當(dāng)應(yīng)用程序確定分組時(shí),應(yīng)用程序可使用應(yīng)用程序拓?fù)浣Y(jié)構(gòu)或應(yīng)用程序內(nèi)的其它信息來(lái)幫助外部更新機(jī)制確定適合的一組更新域以及將要被更新的更新域的順序。在許多實(shí)施例中,應(yīng)用程序可以比外部源更了解可能在組織和管理更新中可能有用的相關(guān)信息。例如,應(yīng)用程序可以了解應(yīng)用程序進(jìn)程的全部副本或?qū)嵗???赏ㄟ^(guò)根據(jù)在其上執(zhí)行進(jìn)程的主機(jī)設(shè)備對(duì)應(yīng)用程序進(jìn)程進(jìn)行分組來(lái)執(zhí)行對(duì)主機(jī)設(shè)備的更新,諸如升級(jí)主機(jī)設(shè)備操作系統(tǒng)。在另一示例中,應(yīng)用程序可基于它們的工作負(fù)載對(duì)副本分組。在這一示例中,具有低工作負(fù)載的各組應(yīng)用程序進(jìn)程可被分組在一起并首先被更新,而具有較高工作負(fù)載的應(yīng)用程序進(jìn)程可被分組在一起并稍后被更新。在一些實(shí)施例中,應(yīng)用程序可以是基于選出成員數(shù)的應(yīng)用程序,其中幾個(gè)應(yīng)用程序進(jìn)程可并行運(yùn)行,且隨后通過(guò)比較來(lái)自幾個(gè)進(jìn)程的結(jié)果來(lái)“投票”或達(dá)成一致。在這些實(shí)施例中,對(duì)當(dāng)前版本的確定可通過(guò)選出成員數(shù)來(lái)確定,并且僅僅那些運(yùn)行在當(dāng)前版本上的進(jìn)程可被視為有效??赡軋?zhí)行較舊版本的進(jìn)程可被忽略或不可運(yùn)行直至它們被更新。實(shí)施例100示出可構(gòu)成云計(jì)算環(huán)境的設(shè)備102。在許多云計(jì)算環(huán)境中,多個(gè)硬件平臺(tái)可被組織在一起以為某些應(yīng)用程序提供大量計(jì)算能力。在許多實(shí)施例中,數(shù)據(jù)中心可包含數(shù)千臺(tái)計(jì)算機(jī),諸如服務(wù)器計(jì)算機(jī),并且可具有可向計(jì)算機(jī)供應(yīng)的、用于運(yùn)行不同應(yīng)用程序的各種管理工具。在許多這類實(shí)施例中,管理工具可為各種承租人供應(yīng)資源。每個(gè)承租人可與云計(jì)算服務(wù)提供者訂立合約以主存一個(gè)或多個(gè)應(yīng)用程序。承租人的資源可與其它承租人的資源隔離開(kāi),使得沒(méi)有承租人可訪問(wèn)其它承租人的數(shù)據(jù)或可執(zhí)行代碼。設(shè)備102可以是傳統(tǒng)的計(jì)算機(jī)設(shè)備,諸如個(gè)人計(jì)算機(jī)或服務(wù)器計(jì)算機(jī),并且可具有硬件平臺(tái)104和各種軟件組件106。硬件平臺(tái)104可以包括處理器108、隨機(jī)存取存儲(chǔ)器110、以及本地存儲(chǔ)112。在一些實(shí)施例中,處理器108可具有一個(gè)或多個(gè)處理器或核心。在一些情況下,單處理器108可具有兩個(gè)、四個(gè)、八個(gè)、十六個(gè)、或其它數(shù)量的核心,并且某些硬件平臺(tái)可具有兩個(gè)或更多處理器108。隨機(jī)存取存儲(chǔ)器110可以是易失性存儲(chǔ)器并且可以是可由處理器108直接訪問(wèn)的高速存儲(chǔ)器。本地存儲(chǔ)112可以是也可由處理器108訪問(wèn)的非易失性存儲(chǔ)器,但在許多情 況下,本地存儲(chǔ)112可能比隨機(jī)存取存儲(chǔ)器110慢。本地存儲(chǔ)112可以或不可以由承租人進(jìn)程訪問(wèn)。在許多實(shí)施例中,在應(yīng)用程序可能正執(zhí)行時(shí),本地存儲(chǔ)112可被用于的承租人數(shù)據(jù)的臨時(shí)存儲(chǔ),而永久的或長(zhǎng)期的存儲(chǔ)可由云存儲(chǔ)系統(tǒng)130來(lái)提供。硬件組件104可包括用戶接口 114和網(wǎng)絡(luò)接口 116。用戶接口 114可以是物理用戶接口,其可包括鍵盤(pán)、顯示器、以及定點(diǎn)設(shè)備。在一些實(shí)施例中,用戶界面可以被傳輸給位于遠(yuǎn)程的另一設(shè)備。網(wǎng)絡(luò)接口 116可以是連接到任何類型的網(wǎng)絡(luò)的任何類型的連接。在常規(guī)數(shù)據(jù)中心中,網(wǎng)絡(luò)接口 116可以是有線以太網(wǎng)連接。軟件組件106可包括主操作系統(tǒng)118和系統(tǒng)管理程序120。在一些實(shí)施例中,系統(tǒng)管理程序120可在硬件平臺(tái)104上本地地執(zhí)行而無(wú)需使用分開(kāi)的操作系統(tǒng)118。系統(tǒng)管理程序120可允許一個(gè)或多個(gè)虛擬機(jī)122在硬件平臺(tái)104上執(zhí)行。每個(gè)虛擬機(jī)122可以是物理硬件平臺(tái)104的軟件仿真,并且可與其它虛擬機(jī)分開(kāi)地且獨(dú)立地運(yùn)行。在許多實(shí)施例中,單硬件平臺(tái)可并行執(zhí)行數(shù)個(gè)虛擬機(jī)。在許多實(shí)施例中,虛擬機(jī)122可以是數(shù)據(jù)中心內(nèi)不同承租人之間的邏輯劃分,其中每個(gè)承租人進(jìn)程可在專用于該承租人的虛擬機(jī)上執(zhí)行。在每一虛擬機(jī)122內(nèi),可執(zhí)行客操作系統(tǒng)124。術(shù)語(yǔ)“客”操作系統(tǒng)指的是虛擬機(jī)的操作系統(tǒng),與“主”操作系統(tǒng)相對(duì)。在許多實(shí)施例中,客操作系統(tǒng)124可以不同于主操作系統(tǒng)118。在這類實(shí)施例中,單個(gè)硬件平臺(tái)104可具有并行執(zhí)行的許多個(gè)不同的客操作系統(tǒng)。應(yīng)用程序副本126可在虛擬機(jī)122內(nèi)執(zhí)行。在一些實(shí)施例中,單個(gè)應(yīng)用程序副本126可在單個(gè)虛擬機(jī)122內(nèi)執(zhí)行,而在另一些實(shí)施例中,不止一個(gè)應(yīng)用程序副本126可在單個(gè)虛擬機(jī)中執(zhí)行。云平臺(tái)可以連接到網(wǎng)絡(luò)128,網(wǎng)絡(luò)128可以是局域網(wǎng)、廣域網(wǎng),并且可包括因特網(wǎng)。云存儲(chǔ)系統(tǒng)130可具有可由各個(gè)虛擬機(jī)122和應(yīng)用程序副本126訪問(wèn)的大存儲(chǔ)132。許多應(yīng)用程序可通過(guò)各種客戶機(jī)設(shè)備134來(lái)訪問(wèn)。客戶機(jī)設(shè)備134可以是可通過(guò)網(wǎng)絡(luò)128訪問(wèn)應(yīng)用程序的任何類型的計(jì)算設(shè)備??蛻魴C(jī)設(shè)備134可以是個(gè)人計(jì)算機(jī)、手持式個(gè)人數(shù)字助理、移動(dòng)電話、服務(wù)器計(jì)算機(jī)、網(wǎng)絡(luò)設(shè)備、游戲控制臺(tái)、或任何其它類型的計(jì)算設(shè)備。
云管理系統(tǒng)136可以為云計(jì)算環(huán)境和執(zhí)行在該環(huán)境內(nèi)的應(yīng)用程序執(zhí)行管理功能中的許多功能。云管理系統(tǒng)136可具有其上可執(zhí)行構(gòu)造控制器140的硬件平臺(tái)138。在許多實(shí)施例中,硬件平臺(tái)138可以是設(shè)備102的云計(jì)算環(huán)境。構(gòu)造控制器140可以是可為云計(jì)算環(huán)境執(zhí)行各種管理功能的應(yīng)用程序。管理功能可包括為各個(gè)承租人供應(yīng)云計(jì)算環(huán)境、添加或移除硬件平臺(tái)、管理云計(jì)算環(huán)境內(nèi)的工作負(fù)載、以及執(zhí)行對(duì)硬件、主操作系統(tǒng)、虛擬機(jī)、客操作系統(tǒng)、以及應(yīng)用程序的更新。作為更新過(guò)程的一部分,構(gòu)造控制器140可接收來(lái)自各種源的更新142,諸如應(yīng)用程序開(kāi)發(fā)者、操作系統(tǒng)提供者、安全性提供者、或其它源。構(gòu)造控制器140可通過(guò)使應(yīng)用程序涉及來(lái)確定如何對(duì)應(yīng)用程序副本分組以及處理各組的順序來(lái)在云計(jì)算環(huán)境上執(zhí)行更新。圖2是示出用于更新分布式應(yīng)用程序的方法的實(shí)施例200的時(shí)間線圖示。實(shí)施例200的過(guò)程是構(gòu)造控制器202可如何與主應(yīng)用程序副本204和被組織到更新域206內(nèi)的一 組應(yīng)用程序副本交互的簡(jiǎn)化的示例。構(gòu)造控制器202的操作被示出在左欄,域主應(yīng)用程序副本204的操作被示出在中間欄,而更新域206的操作被示出在右欄。其它實(shí)施例可以使用不同的序列、更多或更少的步驟、以及不同的命名或術(shù)語(yǔ),來(lái)完成類似功能。在一些實(shí)施例中,各種操縱或操作集合可以與其他操作以同步方式或以異步方式并行執(zhí)行。此處所選的步驟是為了以簡(jiǎn)化的形式示出一些操作原理來(lái)選擇的。實(shí)施例200示出用于對(duì)分布式應(yīng)用程序執(zhí)行更新的方法的一部分。分布式應(yīng)用程序可以是在分開(kāi)且獨(dú)立的多個(gè)進(jìn)程上執(zhí)行的任何應(yīng)用程序。在許多實(shí)施例中,分布式應(yīng)用程序可在許多不同的進(jìn)程上執(zhí)行,有時(shí)候數(shù)目達(dá)數(shù)千或者甚至數(shù)十萬(wàn)進(jìn)程。許多分布式進(jìn)程可以相同配置運(yùn)行相同的可執(zhí)行代碼。許多這類進(jìn)程還可以無(wú)狀態(tài)方式運(yùn)行。由于更新大量的進(jìn)程可能是非常耗時(shí)的任務(wù),因此可在進(jìn)程組中更新應(yīng)用程序。每個(gè)組可被稱為一個(gè)更新域。當(dāng)一個(gè)更新域正被更新時(shí),其它更新域可保持工作。更新方法可使用來(lái)自應(yīng)用程序的輸入以確定進(jìn)程如何被分組以及以什么順序來(lái)對(duì)組或更新域進(jìn)行更新。來(lái)自應(yīng)用程序的輸入可運(yùn)行應(yīng)用程序確定最優(yōu)更新方法。在一些實(shí)施例中,最優(yōu)更新方法可基于特定情況和正被執(zhí)行的更新類型來(lái)改變。實(shí)施例200的方法可被執(zhí)行數(shù)遍以完成更新。例如,拓?fù)浣Y(jié)構(gòu)的改變可在三個(gè)步驟中執(zhí)行。在第一步,更新步驟可開(kāi)啟各進(jìn)程上的一個(gè)特定端口,使得可訪問(wèn)新的拓?fù)浣Y(jié)構(gòu)。在第二步驟,可以用在新的端口上可用的新的應(yīng)用程序副本來(lái)實(shí)現(xiàn)該新的拓?fù)浣Y(jié)構(gòu)。在第三步驟,舊拓?fù)浣Y(jié)構(gòu)的舊的、未使用的端口可被關(guān)閉。在該拓?fù)浣Y(jié)構(gòu)示例中,實(shí)施例200的更新方法可被執(zhí)行三次以完成一次更新。在一些情形下,實(shí)施例200的更新方法可被執(zhí)行一次、兩次或更多次以完成對(duì)系統(tǒng)的改變。實(shí)施例的200更新方法可被用于通過(guò)更新應(yīng)用程序配置或應(yīng)用程序可執(zhí)行代碼來(lái)更新應(yīng)用程序。相同的更新方法還可被用于更新各種基礎(chǔ)架構(gòu)組件,諸如更新主機(jī)硬件、包括主操作系統(tǒng)的主機(jī)軟件、虛擬機(jī)配置、客操作系統(tǒng)、以及可運(yùn)行在主機(jī)或虛擬機(jī)上的其它軟件組件。更新方法可被用于更新可執(zhí)行代碼以及重新配置硬件或軟件組件而不改變可執(zhí)行代碼。在框208,應(yīng)用程序可以正常操作運(yùn)行。在框210,構(gòu)造控制器202可標(biāo)識(shí)待執(zhí)行的更新。更新可由應(yīng)用程序擁有者或云計(jì)算服務(wù)的承租人來(lái)定義。在一些情況下,更新可由云計(jì)算服務(wù)的管理員來(lái)定義??墒謩?dòng)地或自動(dòng)地檢測(cè)更新。在對(duì)應(yīng)用程序進(jìn)行代碼更新或改變的情況下,可以手動(dòng)地標(biāo)識(shí)和啟動(dòng)更新。在對(duì)操作系統(tǒng)進(jìn)行安全性更新的情況下,可以通過(guò)訂閱來(lái)自操作系統(tǒng)制造商的安全性更新服務(wù)來(lái)自動(dòng)地標(biāo)識(shí)更新。在執(zhí)行更新之前,在框212中,構(gòu)造控制器202可向主應(yīng)用程序副本204發(fā)送查詢。主應(yīng)用程序副本204可以是可對(duì)管理性查詢作出響應(yīng)并且可為應(yīng)用程序執(zhí)行管理性功能的應(yīng)用程序副本。在一些實(shí)施例中,可能不存在可被指定為主副本的特定副本。出于本實(shí)施例的目的,主應(yīng)用程序副本204可以指應(yīng)用程序的任何管理性部分。在框214中,主應(yīng)用程序副本204可接收查詢,并且在框216中,主應(yīng)用程序副本204可確定更新域。在框218,更新域可被返回給構(gòu)造控制器202,并且在框220,接收所返回的更新域。在框222,構(gòu)造控制器202可發(fā)送對(duì)于更新域的順序的查詢。順序查詢可在框224中被接收并在框226中被確定。更新順序可在框228中被返回并在框230中被接收。
更新域可以是在其上可執(zhí)行更新的各組應(yīng)用程序副本。在一些實(shí)施例中,更新域可根據(jù)情況改變。例如,對(duì)硬件的更新可根據(jù)運(yùn)行在相同硬件平臺(tái)上的副本來(lái)對(duì)應(yīng)用程序進(jìn)行分組。在一些實(shí)施例中,更新域可包含相同數(shù)量的應(yīng)用程序副本,或者可以是大致相同大小,諸如在另一更新域的應(yīng)用程序副本的數(shù)量的10 %以內(nèi)。在其它實(shí)施例中,一些更新域可以比其它的、較小的更新域大得多。在硬件拓?fù)浣Y(jié)構(gòu)或數(shù)據(jù)中心拓?fù)浣Y(jié)構(gòu)可能對(duì)于各個(gè)硬件平臺(tái)或數(shù)據(jù)中心相當(dāng)不同時(shí),這類實(shí)施例可能是有用的。在另一示例中,可以在位于跨國(guó)家或跨全球的不同數(shù)據(jù)中心中的應(yīng)用程序副本上執(zhí)行更新。在這一情況下,更新域可被定義使得相同數(shù)據(jù)中心中的那些應(yīng)用程序副本可被一起更新。這一分組可允許整個(gè)數(shù)據(jù)中心上的應(yīng)用程序副本被更新,接著前進(jìn)到另一數(shù)據(jù)中心。這一分組可以被排序,使得具有輕負(fù)載的數(shù)據(jù)中心可被首先更新。在許多這種情形下,遍布全球的數(shù)據(jù)中心可具有隨一天中的時(shí)間而改變的工作負(fù)載。通過(guò)根據(jù)時(shí)區(qū)來(lái)對(duì)待執(zhí)行的更新進(jìn)行排序,可以以對(duì)工作負(fù)載的最小中斷的形式來(lái)執(zhí)行更新。在類似的示例中,在不同數(shù)據(jù)中心中跨各個(gè)應(yīng)用程序副本執(zhí)行的更新可以被分組,使得每一個(gè)更新域可包含兩個(gè)或更多數(shù)據(jù)中心中的應(yīng)用程序副本。這一分組可在一些應(yīng)用程序副本上執(zhí)行更新,但可至少保留一些應(yīng)用程序副本運(yùn)行在每個(gè)數(shù)據(jù)中心中。在這一分組中,可對(duì)順序進(jìn)行配置以使每個(gè)數(shù)據(jù)中心可具有至少一些應(yīng)用程序進(jìn)程在更新期間執(zhí)行。在一些實(shí)施例中,構(gòu)造控制器202可將與更新有關(guān)的信息傳送給主應(yīng)用程序副本204,以使應(yīng)用程序副本可為更新確定適當(dāng)?shù)姆纸M和順序。構(gòu)造控制器202可指示該更新是耗時(shí)的還是快速的,是否可能包含應(yīng)用程序、客操作系統(tǒng)或者主操作系統(tǒng)的重啟,更新是否影響應(yīng)用程序、虛擬機(jī)或主機(jī)設(shè)備,或者構(gòu)造控制器202可指示主應(yīng)用程序副本204可考慮的其它因素。在一些實(shí)施例中,多步驟更新順序中的最初的步驟可以是標(biāo)識(shí)其中應(yīng)用程序副本可能未正確工作并因此不能被更新的任何更新域。在這一步驟,可以分析每個(gè)更新域以確定該更新域是否包含被掛起的、沒(méi)有啟動(dòng)的、未響應(yīng)的、或者其它具有潛在問(wèn)題的應(yīng)用程序副本。在這一步驟可被執(zhí)行后,可啟動(dòng)對(duì)問(wèn)題副本的修復(fù)進(jìn)程以嘗試治愈該副本。在一些情況下,治愈可涉及重啟應(yīng)用程序進(jìn)程或客操作系統(tǒng),或者可涉及將應(yīng)用程序副本移動(dòng)到另一硬件平臺(tái)或執(zhí)行其它修復(fù)功能。在已執(zhí)行了這樣的治愈操作之后,更新順序可前進(jìn)到另一步驟,在該步驟可執(zhí)行對(duì)系統(tǒng)的實(shí)際改變。在這一示例中,在對(duì)應(yīng)用程序或底層硬件和軟件組件進(jìn)行改變之前,治愈應(yīng)用程序副本的步驟可使應(yīng)用程序副本滿足用于更新的條件。在框232中,可以處理每一更新域。對(duì)于每個(gè)更新域,可執(zhí)行框234-260的過(guò)程。在對(duì)一個(gè)更新域執(zhí)行了框234-260的過(guò)程之后,可處理順序中的下一更新域。對(duì)于框232中的每個(gè)更新域,在框234,可使更新被執(zhí)行。在應(yīng)用程序域206中,更新可在框236中被接收,并且對(duì)于框238中的每個(gè)副本,可在框240中執(zhí)行更新。在一些情況下,更新可以由在主機(jī)上或虛擬機(jī)內(nèi)運(yùn)行的應(yīng)用程序來(lái)執(zhí)行。一些這 類更新可對(duì)主操作系統(tǒng)或客操作系統(tǒng)、與主操作系統(tǒng)或客操作系統(tǒng)相關(guān)聯(lián)的應(yīng)用程序作出修改,或者可執(zhí)行可以或可以不與應(yīng)用程序相關(guān)聯(lián)的其它改變。在某一時(shí)刻,在框242,構(gòu)造控制器202可發(fā)出一個(gè)查詢以確定更新是否完成。在框244,查詢可由更新域206接收,并且在框246,查詢被評(píng)估。如果更新已被完成并且應(yīng)用程序操作是穩(wěn)定的,則在框248,更新域206可發(fā)送結(jié)果,在框250,該結(jié)果可由構(gòu)造控制器202接收。如果結(jié)果是穩(wěn)定的,則過(guò)程返回到框232以處理下一個(gè)更新域。如果在框246中更新域還沒(méi)有成功完成更新,則在框254,更新域206可發(fā)送結(jié)果,在框256,該結(jié)果可由構(gòu)造控制器202接收。構(gòu)造控制器202可具有可允許超時(shí)操作的一組策略或其它邏輯。如果在框258沒(méi)有發(fā)生超時(shí),則過(guò)程可返回到框242以執(zhí)行另一狀態(tài)查詢。如果在框258發(fā)生超時(shí),則在框260,構(gòu)造控制器202可針對(duì)每一策略定義發(fā)布默認(rèn)結(jié)果O框260的默認(rèn)結(jié)果可取決于各種情形。例如,如果更新正對(duì)主機(jī)硬件或軟件進(jìn)行改動(dòng),則應(yīng)用程序狀態(tài)可被忽略并且下一更新域可被處理。在這一示例中,來(lái)自應(yīng)用程序的輸入可能與確定更新是否成功無(wú)關(guān)。在另一示例中,如果更新正為應(yīng)用程序安裝新的可執(zhí)行代碼,并且應(yīng)用程序并沒(méi)指示應(yīng)用程序代碼正以穩(wěn)定的方式運(yùn)行,則更新操作可以被掛起并且人類管理員可被警告。在另一實(shí)施例中,這一結(jié)果可記錄情況,并且可自動(dòng)嘗試將應(yīng)用程序代碼回退到先前版本。實(shí)施例200示出更新過(guò)程期間構(gòu)造控制器202和應(yīng)用程序之間的數(shù)個(gè)交互。交互可允許來(lái)自應(yīng)用程序的輸入或提示,以影響管理系統(tǒng)如何實(shí)現(xiàn)并驗(yàn)證更新。來(lái)自應(yīng)用程序的反饋和輸入可允許更高效的更新過(guò)程,并且可在更新發(fā)生時(shí)對(duì)應(yīng)用程序的性能進(jìn)行驗(yàn)證。此外,可通過(guò)將更新應(yīng)用于各組應(yīng)用程序副本來(lái)在各階段中實(shí)現(xiàn)更新,由此允許在更新期間其它應(yīng)用程序副本保持運(yùn)行。圖3是顯示用于應(yīng)用程序更新域確定更新是成功還是失敗的方法的實(shí)施例300的流程圖示。實(shí)施例300的過(guò)程可在例如實(shí)施例200的框244至246之間執(zhí)行。其它實(shí)施例可以使用不同的序列、更多或更少的步驟、以及不同的命名或術(shù)語(yǔ),來(lái)完成類似功能。在一些實(shí)施例中,各種操縱或操作集合可以與其他操作以同步方式或以異步方式并行執(zhí)行。此處所選的步驟是為了以簡(jiǎn)化的形式示出一些操作原理來(lái)選擇的。實(shí)施例300可在兩種不同情況下執(zhí)行。在第一種情況下,在框302,可從構(gòu)造控制器接收對(duì)更新中的狀態(tài)的查詢。在另一種情況下,在框304,對(duì)于更新域的更新可能已完成。在任一種情況下,應(yīng)用程序的操作特性和應(yīng)用程序的環(huán)境可被評(píng)估以確定更新是否已成功。在框306,可為更新域評(píng)估每個(gè)應(yīng)用程序副本。在框308,對(duì)于每個(gè)副本,可對(duì)操作系統(tǒng)進(jìn)程進(jìn)行評(píng)估以檢測(cè)任何故障。如果在框308存在故障,則在框310,對(duì)故障的關(guān)鍵性質(zhì)進(jìn)行評(píng)估。如果在框310故障是關(guān)鍵的,則在框312,對(duì)副本的更新被標(biāo)記為失敗。如果在框310故障不是關(guān)鍵的,則過(guò)程可繼續(xù)。在實(shí)施例300中,邏輯被配置使得失敗的第一指示可使過(guò)程退出并處理下一副本。在框312,過(guò)程可返回框306以處理另一副本。在其它實(shí)施例中,邏輯可被定義以使即使檢測(cè)到故障,過(guò)程可繼續(xù)到框314。 在框314,與應(yīng)用程序有關(guān)的進(jìn)程可被分析以確定是否發(fā)生任何故障。如果在框314發(fā)生了故障,則在框316,超時(shí)定時(shí)器可使過(guò)程循環(huán)返回到框314直到超時(shí)發(fā)生。如果在框316超時(shí)發(fā)生,則在框318,可指示失敗。如果在框314,與應(yīng)用程序有關(guān)的進(jìn)程是可運(yùn)行的,則在框320,應(yīng)用程序可運(yùn)行一最小時(shí)間以在框322確定應(yīng)用程序是否穩(wěn)定。如果在框322,應(yīng)用程序是不穩(wěn)定的,則在框324,可指示失敗。如果在框322,應(yīng)用程序是穩(wěn)定的,則在框326,應(yīng)用程序副本可被標(biāo)識(shí)為OK0在一些實(shí)施例中,在框320,可使用測(cè)試算法或其它過(guò)程來(lái)鍛煉應(yīng)用程序。測(cè)試算法可鍛煉應(yīng)用程序副本以對(duì)該副本施壓并確定該副本是否穩(wěn)定。實(shí)施例300示出某些信息的示例,該信息可由應(yīng)用程序提供給構(gòu)造控制器作為更新過(guò)程的一部分。其它實(shí)施例可使用不同機(jī)制來(lái)確定由應(yīng)用程序提供給構(gòu)造控制器的信
肩、O圖4是示出顯示在對(duì)不同更新域執(zhí)行的更新的順序的示例實(shí)施例400的時(shí)間線圖示。實(shí)施例400可示出用于基于選出成員數(shù)的應(yīng)用程序中、用于確定哪一版本的應(yīng)用程序可具有選出成員數(shù)以對(duì)應(yīng)用程序請(qǐng)求作出響應(yīng)的步驟順序。在基于選出成員數(shù)的應(yīng)用程序中,兩個(gè)或多個(gè)應(yīng)用程序進(jìn)程可并行運(yùn)行。在每個(gè)應(yīng)用程序進(jìn)程完成一任務(wù)之后,可發(fā)起對(duì)于任務(wù)的正確應(yīng)答的選出成員數(shù)或“投票”。接收到最多投票的應(yīng)答被確定為是正確的。在實(shí)施例400的示例中,五個(gè)不同更新域被呈現(xiàn)在圖表頂部的水平軸上。這些更新域是UDl 402、UD2 404、UD3 406、UD4 408以及UD5 410??v軸可示出更新域的狀態(tài)以及具體示出隨時(shí)間的更新域的版本,其中在圖表中時(shí)間向下推進(jìn)。在時(shí)間412,所有的更新域被顯示為版本1,其中UD2具有“(P) ”指示符,其示出UD2是主更新域。主更新域的指定可指示更新域或更新域中的進(jìn)程是主應(yīng)用程序副本。在框414中,可執(zhí)行更新操作,其中UDl被更新。在時(shí)間416,UDl被更新到版本2,而剩余的更新域處于版本I。在框418中,可執(zhí)行更新操作,其中UD2被更新。在時(shí)間420,UDl和UD2處于到版本2,而剩余的更新域處于版本I。由于選出成員數(shù)的原因,主更新域可從UD2被改變到UD3,因?yàn)閁D3可處于版本I且版本I是大多數(shù)。在更新過(guò)程至這一刻的期間,版本I的應(yīng)用程序副本可以正正常地運(yùn)行并且對(duì)查詢作出響應(yīng)或執(zhí)行其它功能。由于版本2的應(yīng)用程序副本是少數(shù),版本2的應(yīng)用程序副本可以運(yùn)行但來(lái)自版本2的應(yīng)用程序副本的結(jié)果可被丟棄。在框422中,可執(zhí)行另一更新操作,其中UD3被更新。在時(shí)間424,UD1、UD2和UD3處于版本2,而UD4和UD5處于版本I。在時(shí)間424,版本2的應(yīng)用程序副本是大多數(shù),則隨后版本2的應(yīng)用程序副本可開(kāi)始生成被視為有效的結(jié)果。由于現(xiàn)在版本2是大多數(shù),UDl可被選為主更新域。在框426中,可執(zhí)行第四次更新操作,其中UD4被更新。在時(shí)間428,所有的更新域都處于版本2,僅剩下UD5處于版本I。在框430中,可執(zhí)行最后的更新操作,其中UD5被更新。在時(shí)間432,所有的更新域都處于版本2。
實(shí)施例400中示出的步驟的順序示出了可如何在數(shù)個(gè)更新域上執(zhí)行更新,并且還示出了基于選出成員數(shù)的應(yīng)用程序可如何確定更新版本的應(yīng)用程序何時(shí)被視為有效。以上對(duì)本發(fā)明的描述是出于說(shuō)明和描述的目的而提出的。它不旨在窮舉本主題或?qū)⒈局黝}限于所公開(kāi)的精確形式,且鑒于以上教導(dǎo)其他修改和變型都是可能的。選擇并描述實(shí)施例來(lái)最好地解釋本發(fā)明的原理及其實(shí)踐應(yīng)用,從而使本領(lǐng)域的其他技術(shù)人員能夠在各種實(shí)施例和各種適于所構(gòu)想的特定用途的修改中最好地利用本發(fā)明的技術(shù)。所附權(quán)利要求書(shū)旨在包括除受現(xiàn)有技術(shù)所限的范圍之外的其他替換實(shí)施例。
權(quán)利要求
1.一種在多個(gè)計(jì)算機(jī)處理器上執(zhí)行的方法,所述方法包括 在所述多個(gè)計(jì)算機(jī)處理器上執(zhí)行分布式應(yīng)用程序(208),所述分布式應(yīng)用程序由應(yīng)用程序代碼的多個(gè)副本來(lái)執(zhí)行; 所述分布式應(yīng)用程序被執(zhí)行在具有客操作系統(tǒng)(124)的虛擬機(jī)(122)上,所述虛擬機(jī)被運(yùn)行在主機(jī)設(shè)備(102)上; 將所述多個(gè)副本分組成更新域(216),所述更新域是所述副本的組; 標(biāo)識(shí)將要在所述分布式應(yīng)用程序上執(zhí)行的更新(210); 標(biāo)識(shí)所述更新域的更新順序(226); 對(duì)于所述更新域中的每ー個(gè),對(duì)當(dāng)前更新域進(jìn)行處理以執(zhí)行所述更新; 查詢?cè)诋?dāng)前更新域中執(zhí)行的所述應(yīng)用程序,以確定所述當(dāng)前更新域是否已準(zhǔn)備好更新; 當(dāng)所述當(dāng)前更新域已準(zhǔn)備好更新時(shí),在所述更新域上執(zhí)行所述更新(240); 查詢?cè)诋?dāng)前更新域中執(zhí)行的所述應(yīng)用程序,以確定所述更新是否導(dǎo)致應(yīng)用程序在所述當(dāng)前更新域中正確運(yùn)行(242); 當(dāng)所述更新導(dǎo)致所述應(yīng)用程序正確運(yùn)行時(shí),繼續(xù)到下一更新域(252);以及 當(dāng)所述更新導(dǎo)致所述應(yīng)用程序不正確運(yùn)行時(shí),掛起所述更新(260)。
2.如權(quán)利要求I所述的方法,其特征在于,所述更新包括更新所述應(yīng)用程序的版本。
3.如權(quán)利要求2所述的方法,其特征在干,所述更新所述應(yīng)用程序的版本包括更新應(yīng)用程序可執(zhí)行代碼。
4.如權(quán)利要求2所述的方法,其特征在干,所述更新所述應(yīng)用程序的版本包括更新所述應(yīng)用程序的配置信息。
5.如權(quán)利要求I所述的方法,其特征在于,所述更新包括更新所述主機(jī)。
6.如權(quán)利要求I所述的方法,其特征在于,所述更新包括更新所述客操作系統(tǒng)。
7.如權(quán)利要求I所述的方法,其特征在于,所述分組通過(guò)對(duì)所述分布式應(yīng)用程序查詢所述分組并從所述分布式應(yīng)用程序接收所述分組來(lái)執(zhí)行。
8.如權(quán)利要求7所述的方法,其特征在于,所述查詢被定向到所述分布式應(yīng)用程序的主副本。
9.如權(quán)利要求I所述的方法,其特征在于,還包括 從多個(gè)所述更新域中確定選出成員數(shù),所述選出成員數(shù)確定所述分布式應(yīng)用程序的當(dāng)前版本。
10.如權(quán)利要求9所述的方法,其特征在于,所述選出成員數(shù)在所述更新域中的每ー個(gè)如所述當(dāng)前更新域一樣被處理之后被確定。
11.如權(quán)利要求10所述的方法,其特征在于,所述選出成員數(shù)定義所述分布式應(yīng)用程序的主副本。
12.如權(quán)利要求I所述的方法,其特征在干,以多個(gè)更新步驟來(lái)執(zhí)行所述更新,所述多個(gè)更新步驟中的每ー個(gè)包括按順序處理所述更新域中的每ー個(gè)。
13.如權(quán)利要求12所述的方法,其特征在于,所述更新包括 執(zhí)行第一更新步驟,包括 查詢執(zhí)行在當(dāng)前更新域中的所述應(yīng)用程序,以確定所述當(dāng)前更新域是否已準(zhǔn)備好更新;以及 如果執(zhí)行在所述當(dāng)前更新域中的應(yīng)用程序沒(méi)有準(zhǔn)備好更新,則對(duì)所述應(yīng)用程序執(zhí)行修復(fù); 執(zhí)行第二更新步驟,包括 對(duì)所述應(yīng)用程序執(zhí)行更新。
14.如權(quán)利要求I所述的方法,其特征在于,所述更新域中的每ー個(gè)都被原子地更新。
15.ー種云計(jì)算平臺(tái),包括 多個(gè)主機(jī)設(shè)備(102),所述主機(jī)設(shè)備的每ー個(gè)包括處理器; 對(duì)于所述主機(jī)設(shè)備的每ー個(gè),至少ー個(gè)虛擬機(jī)(122)具有客操作系統(tǒng)(124); 對(duì)于所述虛擬機(jī)的每ー個(gè),包括分布式應(yīng)用程序的至少ー個(gè)副本(126),所述分布式應(yīng)用程序包括多個(gè)所述副本; 構(gòu)造控制器(140),用干 為所述副本確定分組(220),所述分組定義多個(gè)更新域,所述更新域的每ー個(gè)包括多個(gè)所述副本; 確定所述更新域的更新順序(230); 通過(guò)以原子形式處理當(dāng)前更新域來(lái)根據(jù)所述順序處理所述更新域的每ー個(gè),所述當(dāng)前更新域通過(guò)一方法來(lái)處理,該方法包括 查詢執(zhí)行在當(dāng)前更新域中的所述應(yīng)用程序,以確定所述當(dāng)前更新域是否已準(zhǔn)備好更新; 當(dāng)所述當(dāng)前更新域已準(zhǔn)備好更新吋,對(duì)所述更新域執(zhí)行所述更新(234); 查詢執(zhí)行在當(dāng)前更新域中的所述應(yīng)用程序,以確定所述更新是否導(dǎo)致應(yīng)用程序在所述當(dāng)前更新域中正確運(yùn)行(242); 當(dāng)所述更新導(dǎo)致所述應(yīng)用程序正確運(yùn)行時(shí),繼續(xù)到下一更新域(252);以及 當(dāng)所述更新導(dǎo)致所述應(yīng)用程序不正確運(yùn)行時(shí),掛起所述更新(260)。
全文摘要
分布式應(yīng)用程序可通過(guò)使用由應(yīng)用程序提供的信息來(lái)更新,以確定分組、定序、以及是否進(jìn)行更新順序。應(yīng)用程序可向更新順序提供輸入,并且可使更新順序在更新之前修復(fù)一個(gè)或多個(gè)副本。更新機(jī)制可被用于改變分布式應(yīng)用程序拓?fù)浣Y(jié)構(gòu)以及對(duì)應(yīng)用程序可執(zhí)行代碼、應(yīng)用程序配置、請(qǐng)求操作系統(tǒng)、虛擬機(jī)、以及主機(jī)系統(tǒng)等作出改變。在一些情況下,分布式應(yīng)用程序可采用選出成員數(shù)來(lái)確定當(dāng)前是哪個(gè)版本,并且該選出成員數(shù)可在更新過(guò)程期間改變。
文檔編號(hào)G06F9/445GK102681865SQ20111034026
公開(kāi)日2012年9月19日 申請(qǐng)日期2011年10月21日 優(yōu)先權(quán)日2010年10月22日
發(fā)明者A·哈桑, A·沙阿, A·馬尼, H·徐, L·伊倫-布里斯, P·杜爾諾夫, P·納格沙繞, T·弗雷格 申請(qǐng)人:微軟公司