用于授予對共享資源的訪問的增強(qiáng)機(jī)制的制作方法
【技術(shù)領(lǐng)域】
[0001]本申請總體設(shè)及改進(jìn)的數(shù)據(jù)處理裝置和方法,并且更具體地設(shè)及用于授予對共享 資源的訪問的機(jī)制。
【背景技術(shù)】
[000引 Ricart-Agrawala算法是用于在分布式系統(tǒng)上的互斥的算法。該算法由Glenn 尺;[。曰的和431101^ Agrawala開發(fā),并且是移除了對釋放消息的需要的Lampod的分布式互斥 算法的擴(kuò)展和優(yōu)化。利用Ricad-Agrawala算法,當(dāng)分布式環(huán)境中的節(jié)點(diǎn)(計(jì)算設(shè)備)需要進(jìn) 入臨界區(qū)一一即訪問不能同時(shí)由其他節(jié)點(diǎn)訪問的共享資源(例如,數(shù)據(jù)結(jié)構(gòu)、設(shè)備、等等)的 一部分代碼一一時(shí),節(jié)點(diǎn)向它知道的所有其他節(jié)點(diǎn)發(fā)送指示進(jìn)入臨界區(qū)的需要的通知。
[0003] 響應(yīng)于接收到通知,如果接收節(jié)點(diǎn)不在臨界區(qū)中,即不訪問共享資源,或者將要進(jìn) 入臨界區(qū)但是具有比發(fā)送者節(jié)點(diǎn)更低的優(yōu)先級值,則接收節(jié)點(diǎn)將批準(zhǔn)由發(fā)送者節(jié)點(diǎn)對臨界 區(qū)的訪問的授予。如果接收節(jié)點(diǎn)已經(jīng)在臨界區(qū)中,即訪問共享資源,則接收節(jié)點(diǎn)將不批準(zhǔn)由 發(fā)送者節(jié)點(diǎn)對臨界區(qū)的訪問的授予。
[0004] 在等待時(shí)間經(jīng)過之后,發(fā)送者節(jié)點(diǎn)確定它是否已經(jīng)從所有接收節(jié)點(diǎn)接收到指示對 臨界區(qū)的訪問的授予的批準(zhǔn)的響應(yīng)消息。如果是的話,發(fā)送者節(jié)點(diǎn)將進(jìn)入臨界區(qū)并且訪問 共享資源。如果發(fā)送者節(jié)點(diǎn)沒有獲得對臨界區(qū)的訪問的授予的批準(zhǔn),則發(fā)送者節(jié)點(diǎn)將再次 發(fā)出通知并等待響應(yīng),基本上重復(fù)該嘗試W獲得對臨界區(qū)的訪問。
【發(fā)明內(nèi)容】
[000引在一個(gè)說明性實(shí)施例中,一種在包括多個(gè)節(jié)點(diǎn)的數(shù)據(jù)處理系統(tǒng)中用于控制對代碼 的臨界區(qū)的訪問的方法,每個(gè)節(jié)點(diǎn)是一個(gè)計(jì)算設(shè)備。該方法包括由數(shù)據(jù)處理系統(tǒng)的發(fā)送者 節(jié)點(diǎn)發(fā)送用于請求對代碼的臨界區(qū)的訪問的訪問請求。代碼的臨界區(qū)是訪問共享資源的一 部分代碼。該方法還包括由發(fā)送者節(jié)點(diǎn)從數(shù)據(jù)處理系統(tǒng)中的多個(gè)接收者節(jié)點(diǎn)接收對訪問請 求的響應(yīng)。響應(yīng)中的每個(gè)響應(yīng)包括由發(fā)送響應(yīng)的對應(yīng)接收者節(jié)點(diǎn)感知到的活動節(jié)點(diǎn)的數(shù) 目。另外,該方法包括由發(fā)送者節(jié)點(diǎn)基于在從接收者節(jié)點(diǎn)接收到的響應(yīng)中的每個(gè)響應(yīng)中識 別出的活動節(jié)點(diǎn)的數(shù)目來控制對代碼的臨界區(qū)的訪問。
[0006] 在其他說明性實(shí)施例中,提供一種計(jì)算機(jī)程序產(chǎn)品,其包括具有計(jì)算機(jī)可讀程序 的計(jì)算機(jī)可用或可讀介質(zhì)。計(jì)算機(jī)可讀程序當(dāng)在計(jì)算設(shè)備上運(yùn)行時(shí)使計(jì)算設(shè)備執(zhí)行W上關(guān) 于方法說明性實(shí)施例概述的操作中的各個(gè)操作及其組合。
[0007] 在又一說明性實(shí)施例中,提供一種系統(tǒng)/裝置。該系統(tǒng)/裝置可W包括一個(gè)或多個(gè) 處理器和禪合到一個(gè)或多個(gè)處理器的存儲器。存儲器可W包括指令,當(dāng)指令由一個(gè)或多個(gè) 處理器運(yùn)行時(shí)使一個(gè)或多個(gè)處理器執(zhí)行W上關(guān)于方法說明性實(shí)施例概述的操作中的各個(gè) 操作及其組合。
[0008] 本發(fā)明的運(yùn)些和其他特征和優(yōu)點(diǎn)將在本發(fā)明的示例實(shí)施例的下面的具體實(shí)施方 式中進(jìn)行描述,或者鑒于在本發(fā)明的示例實(shí)施例的下面的【具體實(shí)施方式】對本領(lǐng)域普通技術(shù) 人員將變得顯而易見。
【附圖說明】
[0009] 本發(fā)明W及其優(yōu)選使用模式和進(jìn)一步的目標(biāo)和優(yōu)點(diǎn)將通過在結(jié)合附圖閱讀時(shí)參 考說明性實(shí)施例的下面的【具體實(shí)施方式】得到更好地理解。
[0010] 圖1是說明性實(shí)施例的各方面可W被實(shí)施在其中的分布式數(shù)據(jù)處理系統(tǒng)的示例 圖;
[0011] 圖2是說明性實(shí)施例的各方面可W被實(shí)施在其中的計(jì)算設(shè)備的示例方框圖;
[0012] 圖3是根據(jù)一個(gè)說明性實(shí)施例的計(jì)算設(shè)備集群的示例圖;
[0013] 圖4是根據(jù)一個(gè)說明性實(shí)施例的臨界區(qū)訪問控制引擎的主要可操作元件的示例方 框圖;
[0014] 圖5是根據(jù)一個(gè)說明性實(shí)施例的概述用于在節(jié)點(diǎn)到來之后抑制對訪問請求的傳輸 的示例操作的流程圖;并且
[001引圖6是根據(jù)一個(gè)說明性實(shí)施例的概述用巧臨界區(qū)訪問控制的示例操作的流程圖。
【具體實(shí)施方式】
[0016] 如W上所提到的,Ricart-Agrawala算法可W被用于控制對被用于訪問共享資源 (例如,數(shù)據(jù)結(jié)構(gòu)、設(shè)備、等等)的代碼的臨界區(qū)的訪問。Ricart-Agrawala算法在其中已知多 少節(jié)點(diǎn)(計(jì)算設(shè)備)可操作、節(jié)點(diǎn)的該數(shù)目保持穩(wěn)定并且每個(gè)節(jié)點(diǎn)具有到分布式網(wǎng)絡(luò)中的每 個(gè)其他節(jié)點(diǎn)的連接性的網(wǎng)絡(luò)中效果很好。然而,在其中節(jié)點(diǎn)被散布在地理邊界上的實(shí)際情 形中,例如在云計(jì)算等的情況下,運(yùn)并非總是如此。節(jié)點(diǎn)交換屯、跳消息W感測可能在節(jié)點(diǎn)獲 得增加的、移除的、丟失的網(wǎng)絡(luò)連接、獲得網(wǎng)絡(luò)的排斥等時(shí)不斷地或定期地變化的拓?fù)浣Y(jié) 構(gòu)。屯、跳消息實(shí)質(zhì)上向發(fā)送屯、跳消息的節(jié)點(diǎn)所連接到的所有節(jié)點(diǎn)通知特定節(jié)點(diǎn)可操作。接 收節(jié)點(diǎn)必須基于運(yùn)些屯、跳消息來更新列出可操作節(jié)點(diǎn)的它們自己的數(shù)據(jù)結(jié)構(gòu)W指示接收 節(jié)點(diǎn)"看到"的哪些節(jié)點(diǎn)為可操作的。如果沒有在預(yù)定時(shí)間段內(nèi)從節(jié)點(diǎn)接收到屯、跳消息,貝U 節(jié)點(diǎn)可能不被檢測作為拓?fù)浣Y(jié)構(gòu)的部分或者可W被認(rèn)為是其他節(jié)點(diǎn)不可操作的。
[0017] 感測分布式網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)花費(fèi)大量時(shí)間,例如若干秒。因此,如其當(dāng)前已知的, Ricad-Agrawala算法在分布式網(wǎng)絡(luò)中的節(jié)點(diǎn)成員關(guān)系波動的情況下不能夠被實(shí)施在分布 式網(wǎng)絡(luò)中,并且因此,需要對分布式網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的感測。存在引起已知的Ricad-Agrawala算法不能適當(dāng)?shù)乇粚?shí)施在拓?fù)浣Y(jié)構(gòu)感測網(wǎng)絡(luò)中的多種考慮。
[0018] 第一考慮是在使節(jié)點(diǎn)可操作之后多久對臨界區(qū)的訪問能夠被請求。也就是說,節(jié) 點(diǎn)能夠隨機(jī)地被啟動、被重啟并被關(guān)閉。在重啟之后,如果節(jié)點(diǎn)發(fā)現(xiàn)沒有其他可操作的節(jié) 點(diǎn),則可能存在兩種可能性:節(jié)點(diǎn)是唯一可操作的節(jié)點(diǎn),或者還沒有經(jīng)過足夠的時(shí)間W交換 屯、跳消息。因此,節(jié)點(diǎn)不應(yīng)當(dāng)在啟動或重啟之后立即請求對代碼的臨界區(qū)的訪問。然而,關(guān) 于已知的Ri cad-Agrawala算法,不存在對在節(jié)點(diǎn)的啟動或重啟之后多久節(jié)點(diǎn)能夠請求對 代碼的臨界區(qū)的訪問的控制。在本文中,訪問代碼的臨界區(qū)在本文中與訪問共享資源(例如 數(shù)據(jù)結(jié)構(gòu)、設(shè)備、等等)的概念可互換地來使用,因?yàn)榇a的臨界區(qū)是被運(yùn)行W訪問共享資 源的一部分代碼。
[0019] 第二考慮是如何確保在剩余節(jié)點(diǎn)批準(zhǔn)通過請求節(jié)點(diǎn)對臨界區(qū)的訪問時(shí)訪問臨界 區(qū)是安全的。當(dāng)節(jié)點(diǎn)需要通過訪問臨界區(qū)來獲得對共享資源(數(shù)據(jù)結(jié)構(gòu)、設(shè)備、等等)的獨(dú)占 權(quán)利時(shí),可能不能夠確定分布式環(huán)境中的節(jié)點(diǎn)的正確數(shù)目。因此,對共享資源的訪問可能被 錯(cuò)誤地授予。例如,假設(shè)存在四個(gè)節(jié)點(diǎn)A、B、C和D。如果節(jié)點(diǎn)A僅僅知道節(jié)點(diǎn)B和C,則節(jié)點(diǎn)A將 僅向如下節(jié)點(diǎn)B和C發(fā)送通知或請求,該節(jié)點(diǎn)B和村青求節(jié)點(diǎn)A關(guān)于對臨界區(qū)的訪問的批準(zhǔn)。節(jié) 點(diǎn)B和C可能不在臨界區(qū)中,而節(jié)點(diǎn)D可能實(shí)際上處在代碼的臨界區(qū)中。因此,節(jié)點(diǎn)B和C將批 準(zhǔn)或授予節(jié)點(diǎn)A對臨界區(qū)或共享資源的訪問,并且因此節(jié)點(diǎn)A和D可能都同時(shí)在臨界區(qū)中并 且將具有對應(yīng)當(dāng)僅僅被順序訪問的對應(yīng)的共享資源的同時(shí)訪問。因此,訪問通知或請求的 發(fā)送者不應(yīng)當(dāng)盲目地接受來自接收節(jié)點(diǎn)的訪問授予響應(yīng)。
[0020] 第=考慮是何時(shí)節(jié)點(diǎn)不應(yīng)當(dāng)請求對臨界區(qū)或共享資源的訪問。正常情況下,當(dāng)節(jié) 點(diǎn)或節(jié)點(diǎn)集具有節(jié)點(diǎn)的分布式網(wǎng)絡(luò)的不對稱視圖時(shí),它們將傾向于使它們不可用,即到不 可操作的狀態(tài)。然而,運(yùn)不會即時(shí)地發(fā)生并且因此在節(jié)點(diǎn)使其本身不可用的該時(shí)間段期間, 節(jié)點(diǎn)可能仍然對訪問請求做出響應(yīng)并且發(fā)出訪問請求。運(yùn)可能導(dǎo)致類似于W上提到的共享 訪問問題,因?yàn)榫哂胁粚ΨQ視圖的節(jié)點(diǎn)提供不完整響應(yīng)并將請求發(fā)出到不完整的節(jié)點(diǎn)集。
[0021] 說明性實(shí)施例提供用于授予對共享資源的訪問并且更具體地授予訪問輪流訪問 共享資源的代碼的臨界區(qū)的機(jī)制。說明性實(shí)施例提供用于解決W上提到的=種主要考慮的 機(jī)制。為了解決W上的針對在啟動或重啟之前多久訪問請求應(yīng)當(dāng)被允許由節(jié)點(diǎn)發(fā)送的第一 考慮,說明性實(shí)施例提供用于控制節(jié)點(diǎn)的機(jī)制,使得如果節(jié)點(diǎn)例如通過啟動操作、重啟操 作、等等變得可操作,則節(jié)點(diǎn)確定在網(wǎng)絡(luò)或節(jié)點(diǎn)的集群中是否存在可操作的法定數(shù)目的其 他節(jié)點(diǎn)(即預(yù)定義數(shù)目的節(jié)點(diǎn)的至少一半或更多)(說明性實(shí)施例可W在多個(gè)節(jié)點(diǎn)的任何集 合上操作并且可W被稱為網(wǎng)絡(luò)、集群、等等)。
[0022] 當(dāng)節(jié)點(diǎn)的集群被配置時(shí),集群中的節(jié)點(diǎn)的數(shù)目已知并被通信給集群的節(jié)點(diǎn)。集群 的節(jié)點(diǎn)交換屯、跳消息W指示節(jié)點(diǎn)在集群內(nèi)仍然是可操作的。如果沒有在預(yù)定時(shí)間段內(nèi)從節(jié) 點(diǎn)接收到屯、跳消息,則節(jié)點(diǎn)可W被確定為是不可操作的。因此,通過跟蹤哪些節(jié)點(diǎn)已經(jīng)發(fā)送 屯、跳信號并將可操作節(jié)點(diǎn)的總數(shù)目與集群中的節(jié)點(diǎn)的預(yù)定數(shù)目進(jìn)行比較,可W做出法定數(shù) 目的節(jié)點(diǎn)是否是可獲得的確定。
[0023] 如果法定數(shù)目的節(jié)點(diǎn)在當(dāng)前節(jié)點(diǎn)到來時(shí)不可獲得,則節(jié)點(diǎn)必須在請求對代碼的臨 界區(qū)W及因此共享資源的訪問之前等待預(yù)定延遲超時(shí)時(shí)間段。延遲超時(shí)時(shí)間段是取決于特 定實(shí)施的可調(diào)諧值。延遲超時(shí)時(shí)間段優(yōu)選被設(shè)置為允許節(jié)點(diǎn)活躍并在集群的節(jié)點(diǎn)之間交換 屯、跳消息的時(shí)間段。如果法定數(shù)目的節(jié)點(diǎn)不能夠被獲得,則在發(fā)送者節(jié)點(diǎn)本身處拒絕集群 范圍的訪問,即在發(fā)送者節(jié)點(diǎn)處抑制對訪問通知/請求的發(fā)送。
[0024] 為了解決W上關(guān)于確保即使在集群的其他節(jié)點(diǎn)批準(zhǔn)對臨界區(qū)的訪問時(shí)進(jìn)入臨界 區(qū)是安全的第二考慮,在說明性實(shí)施例中提供用于在集群的節(jié)點(diǎn)之間交換指示多少節(jié)點(diǎn)在 集群中被每個(gè)其他節(jié)點(diǎn)感知為可操作的信息的機(jī)制。也就是說,當(dāng)節(jié)點(diǎn)啟動或被添加到集 群時(shí),節(jié)點(diǎn)從"不可用(DOWN)"狀態(tài)轉(zhuǎn)變?yōu)?停滯(DOWNBEAT)"狀態(tài),即其中節(jié)點(diǎn)能夠發(fā)出屯、 固蝴息但是尚未變成集群的可操作成員的狀態(tài)。在DOWNBEAT狀態(tài)之后,節(jié)點(diǎn)轉(zhuǎn)變到"可用 (UP)"狀態(tài),在該狀態(tài)下節(jié)點(diǎn)是集群的完全合格的成員。當(dāng)節(jié)點(diǎn)處于DOWN肥AT狀態(tài)或UP狀態(tài) 中時(shí),節(jié)點(diǎn)能夠訪問代碼的臨界區(qū)并且因此需要參與集群的訪問授予/拒絕功能。注意,在 DOWNBEAT狀態(tài)或UP狀態(tài)中的節(jié)點(diǎn)被稱為"活動"節(jié)點(diǎn),而在DOWN狀態(tài)中的節(jié)點(diǎn)被稱為"不活 琳'節(jié)點(diǎn)。
[0025] 根據(jù)說明性實(shí)施例,為了確保發(fā)送者節(jié)點(diǎn)不僅僅依靠接收者節(jié)點(diǎn)的響應(yīng)授予發(fā)送 者節(jié)點(diǎn)對臨界區(qū)或共享資源的訪問,在節(jié)點(diǎn)對訪問通知或請求做出響應(yīng)時(shí),除了發(fā)送指示 請求的訪問是否被授予或被拒絕的響應(yīng)之外,節(jié)點(diǎn)還發(fā)送它們感知到的在集群中為活動節(jié) 點(diǎn)的節(jié)點(diǎn)的數(shù)目。發(fā)送者節(jié)點(diǎn)在從集群中的接收節(jié)點(diǎn)接收到運(yùn)樣的響應(yīng)時(shí)將由接收節(jié)點(diǎn)感 知到的活動節(jié)點(diǎn)的數(shù)目與由發(fā)送者