專利名稱:在簡單拓?fù)涞姆植际较到y(tǒng)中提供快速標(biāo)頭選擇的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明總體涉及分布計(jì)算的系統(tǒng)和方法。更具體而言,本發(fā)明針對其上存儲有計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),該計(jì)算機(jī)可執(zhí)行指令用于執(zhí)行從在單個計(jì)算機(jī)系統(tǒng)內(nèi)或在計(jì)算機(jī)系統(tǒng)的網(wǎng)絡(luò)內(nèi)的多個過程中的多個節(jié)點(diǎn)選擇標(biāo)頭(leader)節(jié)點(diǎn),以解決簡單拓?fù)渲械臉?biāo)頭選擇問題,該簡單拓?fù)湟脖环Q為“全連接網(wǎng)絡(luò)”。
背景技術(shù):
在分布式系統(tǒng)中,標(biāo)頭選擇問題源于一致性問題。一致性是在一群參與者之間商定一個結(jié)果的過程。因?yàn)閰⑴c者(或他們的通信介質(zhì))可能經(jīng)歷故障,所以標(biāo)頭選擇問題難以解決。隨著節(jié)點(diǎn)的數(shù)量(η)的增長,網(wǎng)絡(luò)背景通信(chatter)按照η2增加。所以,如果節(jié)點(diǎn)數(shù)量增長10個,則背景通信增長100個。因此,所需要的是最小化網(wǎng)絡(luò)背景通信的針對標(biāo)頭選擇問題的解決方案?,F(xiàn)有技術(shù)中已知的某些解決方案涉及所有節(jié)點(diǎn)的時(shí)鐘的同步以使得所有時(shí)鐘反映同步的絕對時(shí)間。這個和其他解決方案涉及選擇標(biāo)頭的若干過程、子過程和回合 (round),這是麻煩且低效的。先前的解決方案顯示出“壞”選擇沖突的高概率,所述沖突是兩個或更多個選擇在時(shí)間上彼此非常接近地開始以致于不能達(dá)到法定數(shù)量(quorum)以便完成選擇。而且,先前的解決方案也不保證只有單個標(biāo)頭被選擇。因此所需要的是一種最小化壞選擇沖突并保證單個標(biāo)頭被選擇的系統(tǒng)。因此,所需要的是用于保證在簡單拓?fù)渲羞x擇單個標(biāo)頭同時(shí)最小化網(wǎng)絡(luò)背景通信以使得當(dāng)故障發(fā)生時(shí)基本無縫地恢復(fù)的快速、高效且簡單的系統(tǒng)和方法。
發(fā)明內(nèi)容
本發(fā)明提供在簡單拓?fù)涞姆植际较到y(tǒng)中選擇新標(biāo)頭節(jié)點(diǎn)的快速、高效且簡單的系統(tǒng)和方法。提供一種計(jì)算機(jī)實(shí)現(xiàn)的、在檢測到現(xiàn)有標(biāo)頭的故障后將節(jié)點(diǎn)配置為標(biāo)頭的方法。 一種示范性計(jì)算機(jī)實(shí)現(xiàn)的方法使得簡單拓?fù)涞姆植际较到y(tǒng)成為容錯的。本文還提供一種計(jì)算機(jī)可讀介質(zhì),其上存儲有用于執(zhí)行所述方法的計(jì)算機(jī)可執(zhí)行指令。所述方法包括若干步驟,這些步驟包括開始第一回合和第二回合。第一回合包括步驟從一個節(jié)點(diǎn)(下文被稱為“選擇發(fā)起者”)向網(wǎng)絡(luò)上所有其他節(jié)點(diǎn)發(fā)送第一開始選擇請求,該選擇發(fā)起者節(jié)點(diǎn)在預(yù)定的響應(yīng)周期內(nèi)從網(wǎng)絡(luò)上所有其他活動(live)節(jié)點(diǎn)接收第一開始選擇請求的結(jié)果,并且該選擇發(fā)起者節(jié)點(diǎn)確定網(wǎng)絡(luò)上所有其他法定數(shù)量的節(jié)點(diǎn)是否對第一開始選擇請求作出響應(yīng)。在不同的時(shí)間處接收到或者根本未接收到響應(yīng)。若干第一回合可以同時(shí)進(jìn)行,但是每個選擇都從單個節(jié)點(diǎn)開始并且只有一個第一回合(如果有的話)將進(jìn)行到第二回合。如果選擇發(fā)起者節(jié)點(diǎn)確定存在法定數(shù)量,則該選擇發(fā)起者節(jié)點(diǎn)變成開始第二回合的獲批準(zhǔn)選擇發(fā)起者節(jié)點(diǎn)。要清楚的是,術(shù)語“選擇發(fā)起者節(jié)點(diǎn)”的使用僅僅是示范性的,因?yàn)樵谑痉缎苑椒ǖ那闆r下若干節(jié)點(diǎn)可以在相同或大約相同的時(shí)間處開始第一回合,其仍然保證只有一個標(biāo)頭將被選擇。每個選擇發(fā)起者節(jié)點(diǎn)是已經(jīng)檢測到標(biāo)頭故障的節(jié)
點(diǎn)ο第二回合包括若干步驟,包括由網(wǎng)絡(luò)上法定數(shù)量的所有節(jié)點(diǎn)批準(zhǔn)選擇發(fā)起者節(jié)點(diǎn)作為獲批準(zhǔn)選擇發(fā)起者節(jié)點(diǎn);由獲批準(zhǔn)選擇發(fā)起者節(jié)點(diǎn)選擇標(biāo)頭;以及由獲批準(zhǔn)選擇發(fā)起者節(jié)點(diǎn)將設(shè)置標(biāo)頭(Set Leader)請求發(fā)送到網(wǎng)絡(luò)上的所有其他節(jié)點(diǎn)。包括第一和第二回合的所述計(jì)算機(jī)實(shí)現(xiàn)的方法發(fā)生在每當(dāng)任何節(jié)點(diǎn)檢測到標(biāo)頭故障時(shí)。檢查標(biāo)頭 (CheckLeader)請求由活動節(jié)點(diǎn)周期性地發(fā)布以監(jiān)測標(biāo)頭故障。而且,在示范性實(shí)施例中,所述方法包括步驟選擇優(yōu)選節(jié)點(diǎn)作為標(biāo)頭,其中該優(yōu)選節(jié)點(diǎn)選自獲批準(zhǔn)選擇發(fā)起者節(jié)點(diǎn)、運(yùn)行最新版本的應(yīng)用的節(jié)點(diǎn)、具有最多剩余正常工作時(shí)間的節(jié)點(diǎn)、具有作為標(biāo)頭的先前經(jīng)歷的節(jié)點(diǎn)和節(jié)點(diǎn)的任何等價(jià)的和補(bǔ)充的優(yōu)選處理。如果法定數(shù)量不存在,則所述計(jì)算機(jī)實(shí)現(xiàn)的方法生成從選擇發(fā)起者節(jié)點(diǎn)到網(wǎng)絡(luò)上所有其他節(jié)點(diǎn)的中止選擇(AbortElection)請求。在示范性實(shí)施例中,第一回合進(jìn)一步包括步驟在從選擇發(fā)起者節(jié)點(diǎn)輸送第一開始選擇(StartElection)請求之前,不持有(hold)有效選擇令牌(token)的多個節(jié)點(diǎn)接受第一有效開始選擇令牌。而且,作為第一回合的一部分,當(dāng)在網(wǎng)絡(luò)上不存在法定數(shù)量的所有節(jié)點(diǎn)時(shí),選擇發(fā)起者節(jié)點(diǎn)向網(wǎng)絡(luò)上所有活動節(jié)點(diǎn)輸送中止選擇請求。當(dāng)中止選擇請求被持有匹配的開始選擇令牌的活動節(jié)點(diǎn)接收時(shí),它們清除開始選擇令牌。若干不同的節(jié)點(diǎn)(每個節(jié)點(diǎn)檢測分布式系統(tǒng)中標(biāo)頭的不存在)開始第一回合;然而,只有一個節(jié)點(diǎn)會獲取法定數(shù)量,或?qū)]有節(jié)點(diǎn)獲取法定數(shù)量。只有獲取法定數(shù)量的節(jié)點(diǎn)進(jìn)行到第二回合,在第二回合中該節(jié)點(diǎn)指定標(biāo)頭并告知其余節(jié)點(diǎn)標(biāo)頭已被設(shè)置。
在下面結(jié)合附圖的詳細(xì)說明中描述本發(fā)明的各種示范性實(shí)施例,這些實(shí)施例將隨著描述的進(jìn)行而變得更加清楚明白,在附圖中
圖1圖示了用于全連接網(wǎng)絡(luò)的分布式系統(tǒng)的標(biāo)頭選擇的示范性方法的流程圖。圖2圖示了可以用于實(shí)現(xiàn)一個或多個實(shí)施例的示范性計(jì)算設(shè)備。
具體實(shí)施例方式圖1圖示了用于在計(jì)算機(jī)系統(tǒng)的網(wǎng)絡(luò)內(nèi)或單個計(jì)算機(jī)系統(tǒng)中多個過程內(nèi)操作節(jié)點(diǎn)以允許在全連接網(wǎng)絡(luò)的分布式系統(tǒng)中的快速標(biāo)頭選擇的系統(tǒng)和方法的示范性實(shí)施例的流程圖?;旧厦總€節(jié)點(diǎn)在步驟100處在某個時(shí)間點(diǎn)處被初始化。在狀態(tài)100中所示的示范性選擇發(fā)起者節(jié)點(diǎn)的初始化之后,選擇發(fā)起者節(jié)點(diǎn)不知道如狀態(tài)110中所示的網(wǎng)絡(luò)的標(biāo)頭關(guān)系的狀態(tài),其中節(jié)點(diǎn)的局部狀態(tài)為標(biāo)頭=空(Mill),選擇=空,其意味著它不知道當(dāng)前標(biāo)頭,也不知道正在進(jìn)行的選擇。所有節(jié)點(diǎn)在狀態(tài)110中開始或在一些狀態(tài)轉(zhuǎn)換之后到達(dá)該狀態(tài)。例如,在示范性實(shí)施例中,作為選擇過程的失敗的第一回合的結(jié)果(本文下面進(jìn)一步討論),選擇發(fā)起者節(jié)點(diǎn)將到達(dá)狀態(tài)110中所示的局部狀態(tài)“標(biāo)頭=空,選擇=空”。從狀態(tài)110,所述方法繼續(xù)到步驟115。在步驟115期間,如果已經(jīng)從另一個節(jié)點(diǎn)接收到開始選擇請求,則選擇發(fā)起者節(jié)點(diǎn)從狀態(tài)110轉(zhuǎn)換成狀態(tài)190。如果未接收到開始選擇請求,則選擇發(fā)起者節(jié)點(diǎn)發(fā)送發(fā)現(xiàn)標(biāo)頭(FindLeader)消息并繼續(xù)到步驟130。由于只有活動節(jié)點(diǎn)知道新選擇的標(biāo)頭的身份,而沒有現(xiàn)場過程(process in place),所以在故障節(jié)點(diǎn)恢復(fù)的情況下,故障節(jié)點(diǎn)可以記住以前標(biāo)頭的身份并且所述系統(tǒng)將利用兩個或更多個標(biāo)頭操作。然而,圖1中所示的方法防止恢復(fù)的節(jié)點(diǎn)假定標(biāo)頭是其所跟隨(follow)的最后一個標(biāo)頭。在故障節(jié)點(diǎn)(甚至為最近的先前標(biāo)頭的故障節(jié)點(diǎn))恢復(fù)成為活動節(jié)點(diǎn)(當(dāng)在步驟100中它再次加入分布式網(wǎng)絡(luò)中時(shí))的情況下,不能假設(shè)標(biāo)頭是當(dāng)它上次活動時(shí)跟隨的最后一個標(biāo)頭,因?yàn)樗慌渲贸刹槐A糇罱粋€標(biāo)頭的存儲。取而代之, 步驟100中所示的示范性的最近恢復(fù)的選擇發(fā)起者節(jié)點(diǎn)進(jìn)入如狀態(tài)110中所示的狀態(tài)“標(biāo)頭=空,選擇=空”。如果它沒有從如步驟115中所確定的輔助節(jié)點(diǎn)接收到開始選擇請求, 則它向所有節(jié)點(diǎn)廣播如步驟130中所示的本質(zhì)上問“標(biāo)頭是誰?,,的消息。如果存在標(biāo)頭,則標(biāo)頭用本質(zhì)上說“我是標(biāo)頭,且這是我的唯一識別碼”的消息對咨詢節(jié)點(diǎn)作出響應(yīng)。一旦知道標(biāo)頭,則選擇發(fā)起者節(jié)點(diǎn)從步驟130進(jìn)行到狀態(tài)220,其中標(biāo)頭是已知的且不需要選擇(選擇=空)。如果選擇發(fā)起者節(jié)點(diǎn)沒有從標(biāo)頭接收到這樣的答案, 則所述方法繼續(xù)以在下文描述的狀態(tài)140處開始回合一。為了最小化等待時(shí)間和網(wǎng)絡(luò)通信量,示范性實(shí)施例包括在標(biāo)頭不能在“檢查標(biāo)頭” 間隔期間在系統(tǒng)中被檢測到之后的兩個壓縮的選擇回合。對這兩個回合的所述算法函數(shù)的優(yōu)化提供了針對標(biāo)頭選擇問題的簡單解決方案,如下文詳細(xì)描述。回合一由檢測到不存在網(wǎng)絡(luò)的標(biāo)頭的一個或多個節(jié)點(diǎn)開始?;睾弦?br>
選擇的回合一的目標(biāo)是批準(zhǔn)選擇發(fā)起者節(jié)點(diǎn)作為“獲批準(zhǔn)選擇發(fā)起者節(jié)點(diǎn)”以實(shí)施選擇的回合二,其中選擇網(wǎng)絡(luò)標(biāo)頭。為了發(fā)起回合一,當(dāng)節(jié)點(diǎn)在步驟130中檢測到標(biāo)頭故障時(shí),選擇發(fā)起者節(jié)點(diǎn)進(jìn)入狀態(tài)140,“標(biāo)頭=空,開始選擇”。系統(tǒng)中已經(jīng)檢測到標(biāo)頭故障并且不具有有效的局部選擇令牌的任何節(jié)點(diǎn)將進(jìn)入狀態(tài)140。在示范性實(shí)施例中,多個節(jié)點(diǎn)可以進(jìn)入狀態(tài)140并且基本同時(shí)發(fā)起回合一。然而,為了解釋回合一的步驟,這里跟隨指定“選擇發(fā)起者節(jié)點(diǎn)”的單個節(jié)點(diǎn)的路徑。選擇發(fā)起者通過向狀態(tài)140與狀態(tài)150之間的所有已知節(jié)點(diǎn)發(fā)送“開始選擇”請求來開始選擇。一旦選擇發(fā)起者節(jié)點(diǎn)已經(jīng)向所有已知節(jié)點(diǎn)發(fā)送“開始選擇”請求,如果選擇發(fā)起者節(jié)點(diǎn)尚未接收到作為某個其他節(jié)點(diǎn)由于在步驟130中的確定的結(jié)果的標(biāo)頭已被選擇的指示,則該節(jié)點(diǎn)進(jìn)入狀態(tài)150,“標(biāo)頭=空,選擇=自己開始”,其指示選擇發(fā)起者節(jié)點(diǎn)發(fā)起回合一。如上述討論,在示范性實(shí)施例中,多個節(jié)點(diǎn)開始回合一,但至多一個節(jié)點(diǎn)將完成成功的回合一以進(jìn)入回合二。每個節(jié)點(diǎn)如果尚未持有有效的(例如,未期滿的)選擇令牌并且拒絕隨后的開始選擇請求,則接受它接收的第一“開始選擇”請求。每個開始選擇請求具有使得對接收它的節(jié)點(diǎn)而言已知的期滿時(shí)間。超過它們的期滿日期的開始選擇請求不被持有,使得持有期滿的開始選擇請求的節(jié)點(diǎn)能夠自由接受新的開始選擇請求。直到它的前一個開始選擇請求期滿為止,節(jié)點(diǎn)才接受新的開始選擇請求。每個節(jié)點(diǎn)維持它自己的相對于它接收到最后一個開始選擇請求的時(shí)間。該算法有益地使用了相對時(shí)間(即,針對每個節(jié)點(diǎn)的局部時(shí)間跨度),使得不同節(jié)點(diǎn)上的絕對時(shí)間值不必同步。一旦所有開始選擇消息被發(fā)送,則選擇發(fā)起者從狀態(tài)140轉(zhuǎn)換成狀態(tài)150。在狀態(tài)150處,選擇發(fā)起者節(jié)點(diǎn)等待,直到所有響應(yīng)
5被接收或超時(shí)(其中最先到來的一個)為止。如在步驟160處所示,回合一存在兩個可能的結(jié)果,在回合一期間所公開的算法實(shí)質(zhì)上問問題“我被法定數(shù)量批準(zhǔn)了嗎?”。兩個可能的結(jié)果依次被描述。法定數(shù)量被定義為全連接網(wǎng)絡(luò)中所有已知節(jié)點(diǎn)中超過一半的節(jié)點(diǎn)。法定數(shù)量需求保證了至多一個節(jié)點(diǎn)將被批準(zhǔn)為獲批準(zhǔn)選擇發(fā)起者節(jié)點(diǎn)。包括發(fā)出開始選擇請求的選擇發(fā)起者的所有節(jié)點(diǎn)知道分布式系統(tǒng)中節(jié)點(diǎn)的總數(shù)。如果節(jié)點(diǎn)的數(shù)量改變,則新數(shù)量被傳播到所有節(jié)點(diǎn)。如果在步驟160 (回合一中的最后一個步驟)之后,包括故障節(jié)點(diǎn)的法定數(shù)量的所有節(jié)點(diǎn)已經(jīng)接受開始選擇請求,則所述過程繼續(xù)到在狀態(tài)170處的回合二??商娲?,如果在步驟160之后,法定數(shù)量的所有節(jié)點(diǎn)未接受開始選擇請求,則所述方法進(jìn)行到狀態(tài)180, “標(biāo)頭=空,選擇=空”。此時(shí),回合一在選擇發(fā)起者處被局部中止并且“中止選擇”消息被發(fā)送到所有其他節(jié)點(diǎn)。選擇發(fā)起者節(jié)點(diǎn)和接收中止選擇消息的所有其他節(jié)點(diǎn)重新進(jìn)入如前所述的狀態(tài)110 (“標(biāo)頭=空,選擇=空”)。在返回到步驟110時(shí),選擇發(fā)起者節(jié)點(diǎn)回到不認(rèn)識已知的標(biāo)頭或進(jìn)行中的任意選擇的狀態(tài)?;睾弦挥梢粋€或多個節(jié)點(diǎn)大約同時(shí)或順序地發(fā)起,直到回合一的單個實(shí)例成功地識別獲批準(zhǔn)選擇發(fā)起者節(jié)點(diǎn)(即步驟160確定已經(jīng)到達(dá)法定數(shù)量)。如上所述,回合一不由已經(jīng)接收到開始選擇請求的、在狀態(tài)110中的節(jié)點(diǎn)開始。這解釋了為什么在選擇已被另一個節(jié)點(diǎn)開始的情況下所述方法從狀態(tài)110進(jìn)行到進(jìn)入狀態(tài)190,其中不存在標(biāo)頭且所述選擇已由另一個節(jié)點(diǎn)開始。從狀態(tài)190,所述方法進(jìn)行到步驟192。在步驟192處,所述節(jié)點(diǎn)實(shí)質(zhì)上問“我已經(jīng)接收到選擇期滿消息了嗎? ”和“我已經(jīng)接收到中止選擇消息了嗎? ”。 如果這些問題之一的答案為是,則節(jié)點(diǎn)進(jìn)入狀態(tài)110。發(fā)送消息的節(jié)點(diǎn)的唯一識別碼被包括在被發(fā)送的消息中,使得接收者知道是哪個節(jié)點(diǎn)發(fā)送該消息。所有活動節(jié)點(diǎn)對于請求作出響應(yīng),并且所述請求節(jié)點(diǎn)知道系統(tǒng)中有多少個其他節(jié)點(diǎn)。因此,請求節(jié)點(diǎn)通過確定法定數(shù)量的節(jié)點(diǎn)是否已經(jīng)接受開始選擇請求而確實(shí)知道它是否已經(jīng)被批準(zhǔn)為獲批準(zhǔn)選擇發(fā)起者節(jié)點(diǎn)。通過設(shè)計(jì),如果系統(tǒng)中的活動節(jié)點(diǎn)的數(shù)量小于法定數(shù)量,或者如果系統(tǒng)被劃分(partition)以使得沒有分區(qū)包含法定數(shù)量的活動節(jié)點(diǎn),則選擇將失敗。在所有中止選擇消息(如果有的話)在步驟192期間被接收之后,節(jié)點(diǎn)從狀態(tài)190 轉(zhuǎn)換到狀態(tài)110。中止選擇消息被發(fā)出,以使得所有其他節(jié)點(diǎn)能夠清除它們當(dāng)前持有的選擇令牌并且此后能夠接受新的開始選擇請求。回合二
返回步驟160,當(dāng)選擇發(fā)起者經(jīng)法定數(shù)量批準(zhǔn)時(shí),發(fā)起第二回合。已經(jīng)被法定數(shù)量批準(zhǔn)為獲批準(zhǔn)選擇發(fā)起者節(jié)點(diǎn)的節(jié)點(diǎn)從已經(jīng)對開始選擇請求作出響應(yīng)的任何節(jié)點(diǎn)中選擇標(biāo)頭。 在一些實(shí)施例中,所述獲批準(zhǔn)選擇發(fā)起者節(jié)點(diǎn)選擇它自己作為標(biāo)頭,如狀態(tài)170所示。在選擇標(biāo)頭之后,包括唯一識別碼的標(biāo)頭數(shù)據(jù)被輸送到所有節(jié)點(diǎn)。盡管狀態(tài)170示出,所述標(biāo)頭=自己意味著獲批準(zhǔn)選擇發(fā)起者節(jié)點(diǎn)是標(biāo)頭,但這僅是示范性的。獲批準(zhǔn)選擇發(fā)起者節(jié)點(diǎn)可以選擇自己作為標(biāo)頭,但是不要求這樣做。而且,獲批準(zhǔn)選擇發(fā)起者節(jié)點(diǎn)不限于從接受開始選擇請求的那些節(jié)點(diǎn)中選擇標(biāo)頭。在示范性實(shí)施例中,獲批準(zhǔn)選擇發(fā)起者節(jié)點(diǎn)從由自己和對開始選擇請求作出響應(yīng)的節(jié)點(diǎn)構(gòu)成的節(jié)點(diǎn)群集中選擇標(biāo)頭。一種簡單的方法是獲批準(zhǔn)選擇發(fā)起者節(jié)點(diǎn)指定自己作為標(biāo)頭,該方法也最小化了網(wǎng)絡(luò)背景通信。然而,在所選的實(shí)施例中,所述系統(tǒng)在除獲批準(zhǔn)選擇發(fā)起者節(jié)點(diǎn)之外的另一個節(jié)點(diǎn)被選擇為標(biāo)頭的情況下被優(yōu)化。當(dāng)然,用于通過批準(zhǔn)選擇發(fā)起者節(jié)點(diǎn)選擇標(biāo)頭的算法可以根據(jù)優(yōu)化目標(biāo)而改變并且可以在沒有不適當(dāng)?shù)膶?shí)驗(yàn)的情況下由本領(lǐng)域普通技術(shù)人員確定。例如,在新版本應(yīng)用的分段延伸(staged rollout)期間,可能有益的是,與運(yùn)行先前版本的節(jié)點(diǎn)相比,優(yōu)先選擇運(yùn)行稍后版本的節(jié)點(diǎn)。在其他情況下,可能有益的是, 優(yōu)先選擇具有最多剩余正常工作時(shí)間的節(jié)點(diǎn),這使得為這些計(jì)算機(jī)系統(tǒng)選擇了更穩(wěn)定的標(biāo)頭。在其他示范性實(shí)施例中,用于標(biāo)頭關(guān)系的優(yōu)選節(jié)點(diǎn)是已經(jīng)具有作為標(biāo)頭的先前經(jīng)歷的節(jié)點(diǎn)。本領(lǐng)域普通技術(shù)人員認(rèn)識到,存在在所述算法中可以捕獲的許多等價(jià)的和補(bǔ)充的優(yōu)選選擇。獲批準(zhǔn)選擇發(fā)起者節(jié)點(diǎn)通過發(fā)送包括所選標(biāo)頭的唯一身份的“設(shè)置標(biāo)頭”請求到所有已知節(jié)點(diǎn)來通知所有節(jié)點(diǎn)其對新標(biāo)頭的選擇。因此,在所述設(shè)置標(biāo)頭請求已被發(fā)送到所有節(jié)點(diǎn)之后,所有活動節(jié)點(diǎn)知道新選擇的標(biāo)頭的身份。回合二在狀態(tài)220處結(jié)束。處于狀態(tài)220中的節(jié)點(diǎn)知道標(biāo)頭的身份并且認(rèn)識到選擇結(jié)束。從狀態(tài)220,節(jié)點(diǎn)繼續(xù)操作與本文所描述的快速標(biāo)頭選擇系統(tǒng)和方法不相關(guān)的附加過程和應(yīng)用,并且可選地進(jìn)入步驟205所示和下文所描述的檢查標(biāo)頭過程。最后,在狀態(tài)220處節(jié)點(diǎn)變得不起作用,如狀態(tài)230中所示。從狀態(tài)230,所述節(jié)點(diǎn)可以在步驟100處再次開始。通信信道的類型(http、tcp、udp)是不重要的。因?yàn)楸疚乃峁┑南到y(tǒng)和方法被設(shè)計(jì)成通過不可靠信道工作,所以信道的質(zhì)量不是操作所公開的系統(tǒng)和方法所必需的。如步驟205所示,檢查標(biāo)頭沒有包括在選擇過程中(回合一和回合二),因?yàn)闃?biāo)頭選擇發(fā)生在標(biāo)頭故障被檢測到之后。而且,檢查標(biāo)頭是可選的過程,其中通過要求最后已知的標(biāo)頭作出響應(yīng)來檢測標(biāo)頭故障。如果最后已知的標(biāo)頭對步驟205中提出的問題作出響應(yīng), 則所述節(jié)點(diǎn)停留在狀態(tài)220處,其中標(biāo)頭是已知的且無需選擇。如果最后已知的標(biāo)頭不對檢查標(biāo)頭請求作出響應(yīng),則該節(jié)點(diǎn)進(jìn)入先前描述的狀態(tài)110。壞選擇沖突的概率(其為當(dāng)兩個或多個選擇在時(shí)間上彼此非常接近地開始以致于它們均不可能獲取法定數(shù)量時(shí))通過隨機(jī)化所示的檢查標(biāo)頭間隔來最小化。所述檢查標(biāo)頭間隔是檢查標(biāo)頭嘗試檢測故障之間的時(shí)間段。一般地,沒有選擇標(biāo)頭的概率(Pf)與回合行程時(shí)間(這里稱為“RTT”)除以檢查標(biāo)頭間隔(這里稱為“CLI”)成比例。在示范性實(shí)施例中,開始選擇的RTT為大約一毫秒,且 CLI為大約100毫秒。因此,在這些示范性實(shí)施例中,一次嘗試沒有選擇標(biāo)頭的概率為大約百分之一(1. 00%),并且二次嘗試中沒有選擇標(biāo)頭的概率為大約萬分之一(0. 01%)且隨著嘗試次數(shù)的增加而成指數(shù)形式減少。所設(shè)想的簡單算法和通過如應(yīng)用到簡單拓?fù)涞暮喕a的實(shí)現(xiàn)方式是針對傳統(tǒng)方法的改進(jìn)的解決方案。具有針對用于兩回合中的簡單拓?fù)涞臉?biāo)頭選擇問題的解決方案的簡單性是對已知標(biāo)頭選擇解決方案的巨大改進(jìn),因?yàn)楸疚乃枋龅姆椒ㄌ峁┊?dāng)針對簡單拓?fù)鋵?shí)現(xiàn)時(shí)明顯更快的可靠選擇。圖2示出具有可以用于實(shí)現(xiàn)上文所述的一個或多個實(shí)施例的組件的示范性計(jì)算機(jī)系統(tǒng)22。示范性實(shí)施例中的快速標(biāo)頭選擇系統(tǒng)和方法的示范性選擇發(fā)起者節(jié)點(diǎn)被具體化為計(jì)算機(jī)系統(tǒng)22,而在其他示范性實(shí)施例中,示范性選擇發(fā)起者節(jié)點(diǎn)為下文所述的計(jì)算機(jī)系統(tǒng)22的若干組件之一。計(jì)算機(jī)系統(tǒng)22包括一個或多個處理單元對、主存儲器沈和將包括主存儲器沈的各種系統(tǒng)組件耦合到處理器M的總線觀。該總線觀表示若干類型的總線結(jié)構(gòu)中的任意一種的一個或多個,其包括存儲器總線和存儲器控制器、外圍總線、加速圖形端口和使用多種總線結(jié)構(gòu)中任意一種的處理器或局部總線。主存儲器沈可以是隨機(jī)存取存儲器(RAM)或耦合到總線觀以用于存儲將由處理器M執(zhí)行的信息和指令的另一個動態(tài)存儲設(shè)備。主存儲器26還可以用于在由處理器M執(zhí)行指令期間存儲臨時(shí)變量或其他中間信息。計(jì)算機(jī)22還包括只讀存儲器(ROM) 30。計(jì)算機(jī)22進(jìn)一步包括一個或多個存儲設(shè)備32。存儲設(shè)備32可以包括用于從硬盤讀取并向其寫入的硬盤驅(qū)動器、用于從可移動磁盤讀取并向其寫入的磁盤驅(qū)動器以及用于向可移動光盤(比如CD或其他光學(xué)介質(zhì))讀取或向其寫入的光盤驅(qū)動器。所述存儲設(shè)備,無論是硬盤驅(qū)動器、磁盤驅(qū)動器、光盤驅(qū)動器或是其組合,都通過適當(dāng)?shù)慕涌谶B接到總線28。所述驅(qū)動器及其相關(guān)聯(lián)的計(jì)算機(jī)可讀介質(zhì)提供對計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或用于計(jì)算機(jī)22的其他數(shù)據(jù)的非易失性存儲。盡管本文所描述的示范性實(shí)施例參考硬盤、可移動磁盤和可移動光盤,但是本領(lǐng)域技術(shù)人員應(yīng)當(dāng)意識到可以存儲可由計(jì)算機(jī)訪問的數(shù)據(jù)的其他類型的計(jì)算機(jī)可讀介質(zhì)(比如盒式磁帶、閃存卡、數(shù)字視頻盤、隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)等等)也可以用在所述示范性操作環(huán)境中。多個程序模塊可以存儲在存儲設(shè)備32、RAM和ROM上,這些程序模塊包括操作系統(tǒng)、一個或多個應(yīng)用程序、其他程序模塊以及程序數(shù)據(jù)。用戶可以通過輸入設(shè)備34(比如鍵盤和指向設(shè)備)將命令和信息輸入到計(jì)算機(jī)22中。其他輸入設(shè)備34可以包括麥克風(fēng)、操縱桿、游戲板、衛(wèi)星天線、掃描儀等等。這些和其他輸入設(shè)備34通過耦合到總線觀的接口連接到處理器對。監(jiān)視器或其他類型的顯示設(shè)備36還經(jīng)由接口連接到總線觀。除了監(jiān)視器之外,個人計(jì)算機(jī)典型地包括其他外圍輸出設(shè)備,比如揚(yáng)聲器和打印機(jī)。計(jì)算機(jī)22還包括耦合到總線觀的通信接口 38。通信接口 38提供耦合到連接到本地網(wǎng)40的網(wǎng)絡(luò)鏈路的雙向數(shù)據(jù)通信。通信接口 38可以是集成的服務(wù)數(shù)字網(wǎng)絡(luò)(ISDN) 卡、或者用于提供到對應(yīng)類型的電話線的數(shù)據(jù)通信連接的調(diào)制解調(diào)器、或者用于提供到兼容的LAN的數(shù)據(jù)通信連接的局域網(wǎng)(LAN)卡。無線鏈路還可以根據(jù)所設(shè)想的特定應(yīng)用來使用。在任何這樣的實(shí)現(xiàn)方式中,通信接口 38發(fā)送并接收攜帶表示各種類型信息的數(shù)字?jǐn)?shù)據(jù)流的電、電磁或光信號。計(jì)算機(jī)22 —般地使用到一個或多個遠(yuǎn)程計(jì)算機(jī)(比如主機(jī)42或遠(yuǎn)程計(jì)算機(jī)44) 的本地連接在聯(lián)網(wǎng)環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)38可以是另一臺個人計(jì)算機(jī)、服務(wù)器、路由器、 網(wǎng)絡(luò)PC、對等設(shè)備或其他公共網(wǎng)絡(luò)節(jié)點(diǎn),并且典型地包括上文相對于計(jì)算機(jī)22描述的許多或所有元件。在圖2所示的實(shí)施例中,網(wǎng)絡(luò)鏈路提供通過本地網(wǎng)40到主機(jī)42或經(jīng)由互聯(lián)網(wǎng)46到遠(yuǎn)程計(jì)算機(jī)44的連接。一般地,計(jì)算機(jī)22的數(shù)據(jù)處理器借助在不同時(shí)間存儲在計(jì)算機(jī)的各種計(jì)算機(jī)可讀存儲介質(zhì)中的指令來編程。在執(zhí)行時(shí),程序被至少部分地從存儲這些程序的計(jì)算機(jī)的次存儲器加載到計(jì)算機(jī)的主電子存儲器中。本文所描述的本發(fā)明包括這些和其他各種類型的計(jì)算機(jī)可讀存儲介質(zhì),其中這樣的介質(zhì)包含用于結(jié)合微處理器或其他數(shù)據(jù)處理器實(shí)現(xiàn)所述步驟的指令或程序。盡管已經(jīng)結(jié)合上文略述的特定實(shí)施例描述了本發(fā)明,但是顯然許多替代、修改和變型對本領(lǐng)域技術(shù)人員而言將是清楚明白的。因此,如上文所闡述的本發(fā)明的優(yōu)選實(shí)施例旨在說明性的而非限制性的。在不脫離本發(fā)明的精神和范圍的情況下,可以進(jìn)行各種變化。
權(quán)利要求
1. 一種計(jì)算機(jī)實(shí)現(xiàn)的方法,用于在選擇發(fā)起者節(jié)點(diǎn)在連接至少一個計(jì)算機(jī)系統(tǒng)上的多個節(jié)點(diǎn)的節(jié)點(diǎn)網(wǎng)絡(luò)上檢測到現(xiàn)有標(biāo)頭的故障(110)之后將節(jié)點(diǎn)配置(100)為新標(biāo)頭,該方法包括以下步驟a.開始第一回合,所述第一回合包括以下步驟i.從選擇發(fā)起者節(jié)點(diǎn)向網(wǎng)絡(luò)上所有其他節(jié)點(diǎn)發(fā)送至少一個開始選擇請求(115); .從網(wǎng)絡(luò)上所有活動節(jié)點(diǎn)接收所述至少一個開始選擇請求的結(jié)果(130),該接收步驟由選擇發(fā)起者節(jié)點(diǎn)來實(shí)施;iii.確定法定數(shù)量的所述選擇發(fā)起者節(jié)點(diǎn)和網(wǎng)絡(luò)上所述所有其他節(jié)點(diǎn)是否接受所述至少一個開始選擇請求(160),該確定步驟由選擇發(fā)起者節(jié)點(diǎn)來實(shí)施;b.在檢測到法定數(shù)量時(shí)開始第二回合(170),所述第二回合包括以下步驟1.批準(zhǔn)選擇發(fā)起者節(jié)點(diǎn)作為獲批準(zhǔn)選擇發(fā)起者(140); .選擇新標(biāo)頭,該選擇步驟由獲批準(zhǔn)選擇發(fā)起者來實(shí)施(150);以及 iii.發(fā)送設(shè)置標(biāo)頭請求到網(wǎng)絡(luò)上的所述所有其他節(jié)點(diǎn)(220)。
2.權(quán)利要求1的方法,進(jìn)一步包括步驟 a.選擇優(yōu)選的節(jié)點(diǎn)作為新標(biāo)頭。
3.權(quán)利要求2的方法,其中該優(yōu)選節(jié)點(diǎn)選自包括以下的群集選擇發(fā)起者節(jié)點(diǎn)、運(yùn)行最新版本的應(yīng)用的節(jié)點(diǎn)、具有最多剩余正常工作時(shí)間的節(jié)點(diǎn)、先前標(biāo)頭和節(jié)點(diǎn)任何等價(jià)的和補(bǔ)充的優(yōu)選處理。
4.權(quán)利要求1的方法,進(jìn)一步包括步驟a.在不存在法定數(shù)量時(shí)將中止選擇請求輸送到網(wǎng)絡(luò)上所有其他節(jié)點(diǎn)。
5.權(quán)利要求1的方法,進(jìn)一步包括周期性重復(fù)所述方法。
6.權(quán)利要求1的方法,進(jìn)一步包括步驟 a.其中第一回合進(jìn)一步包括步驟i.接受第一有效開始選擇令牌,所述接受步驟由不持有有效選擇令牌的多個節(jié)點(diǎn)在從選擇發(fā)起者節(jié)點(diǎn)輸送第一開始選擇請求之前來實(shí)施; .如果法定數(shù)量不存在,則將中止選擇請求輸送到網(wǎng)絡(luò)上所有其他節(jié)點(diǎn),所述輸送步驟由選擇發(fā)起者節(jié)點(diǎn)來實(shí)施。
7.權(quán)利要求6的方法,進(jìn)一步包括在法定數(shù)量存在的情況下開始第二回合的步驟,所述第二回合包括以下步驟a.將選擇發(fā)起者節(jié)點(diǎn)批準(zhǔn)為獲批準(zhǔn)選擇發(fā)起者;b.選擇標(biāo)頭,該選擇步驟由獲批準(zhǔn)選擇發(fā)起者來實(shí)施;c.將設(shè)置標(biāo)頭請求發(fā)送到網(wǎng)絡(luò)上所有其他節(jié)點(diǎn)。
8.權(quán)利要求6的方法,其中每個所述有效的開始選擇令牌具有期滿日期。
9.權(quán)利要求8的方法,其中開始選擇令牌在確定法定數(shù)量是否存在的步驟完成之前期滿并且第一回合由可替代節(jié)點(diǎn)發(fā)起。
10.一種計(jì)算機(jī)可讀介質(zhì),其上存儲有用于執(zhí)行權(quán)利要求1到9中的任一項(xiàng)的方法的計(jì)算機(jī)可執(zhí)行指令。
全文摘要
在連接至少一個計(jì)算機(jī)系統(tǒng)上的多個節(jié)點(diǎn)的簡單拓?fù)涞姆植际较到y(tǒng)中選擇新標(biāo)頭節(jié)點(diǎn)的系統(tǒng)和計(jì)算機(jī)實(shí)現(xiàn)的方法。該計(jì)算機(jī)實(shí)現(xiàn)方法包括若干步驟,包括至少一個檢測到標(biāo)頭不存在的節(jié)點(diǎn),開始第一回合以用于批準(zhǔn)其為獲批準(zhǔn)選擇發(fā)起者。如果在第一回合期間法定數(shù)量接受開始選擇請求,則選擇發(fā)起者開始第二回合以設(shè)置標(biāo)頭。如果在第一回合期間所有節(jié)點(diǎn)的法定數(shù)量尚未達(dá)到,則第一回合失敗。該方法重復(fù)進(jìn)行,直到標(biāo)頭被設(shè)置并且每當(dāng)節(jié)點(diǎn)發(fā)現(xiàn)網(wǎng)絡(luò)沒有活動標(biāo)頭時(shí)被重復(fù)。本文還提供一種計(jì)算機(jī)可讀介質(zhì),其上存儲有計(jì)算機(jī)可執(zhí)行指令以用于執(zhí)行所述計(jì)算機(jī)實(shí)現(xiàn)的方法。
文檔編號H04L29/08GK102523243SQ20111036289
公開日2012年6月27日 申請日期2011年11月15日 優(yōu)先權(quán)日2010年11月15日
發(fā)明者K.蘇爾科夫 申請人:微軟公司