采用此類硬件虛擬化技術(shù)的系統(tǒng)的實例示出于圖3中并且在下文進行詳細描述。
[0031] 在一些實施方案中,VMM可W使用因特網(wǎng)協(xié)議(I巧隧道技術(shù)來封裝客戶端數(shù)據(jù)包 并通過網(wǎng)絡(luò)底層在提供商網(wǎng)絡(luò)內(nèi)的不同主機上的客戶端資源實例之間路由所述客戶端數(shù) 據(jù)包。提供商網(wǎng)絡(luò)可W包括物理網(wǎng)絡(luò)底層,所述物理網(wǎng)絡(luò)底層包括聯(lián)網(wǎng)裝置(例如路由器、 交換機、網(wǎng)絡(luò)地址轉(zhuǎn)換器(NAT)等等)W及所述裝置之間的物理連接。提供商網(wǎng)絡(luò)可W采 用IP隧道技術(shù)來提供覆蓋網(wǎng)絡(luò),經(jīng)由所述覆蓋網(wǎng)絡(luò),可W通過網(wǎng)絡(luò)底層經(jīng)由隧道或覆蓋網(wǎng) 絡(luò)路由來傳遞經(jīng)封裝的包(也就是說,已標記有覆蓋網(wǎng)絡(luò)元數(shù)據(jù)W便在覆蓋網(wǎng)絡(luò)上進行路 由的客戶端包,所述元數(shù)據(jù)包括但不限于覆蓋網(wǎng)絡(luò)地址信息)。IP隧道技術(shù)可W提供用于 在網(wǎng)絡(luò)底層上創(chuàng)建覆蓋網(wǎng)絡(luò)的映射和封裝系統(tǒng),并且可W為覆蓋網(wǎng)絡(luò)層(公用IP地址)和 網(wǎng)絡(luò)底層層(專用IP地址)提供單獨的命名空間。在至少一些實施方案中,可W對照映射 目錄來檢查覆蓋網(wǎng)絡(luò)層中的經(jīng)封裝的包,W確定它們的隧道底層目標(專用IP地址)應當 是什么。IP隧道技術(shù)可W提供覆蓋在物理網(wǎng)絡(luò)底層上的虛擬網(wǎng)絡(luò)拓撲;向客戶端呈現(xiàn)的接 口(例如,服務API)附接至覆蓋網(wǎng)絡(luò),使得當客戶端資源實例提供包將要被發(fā)往的IP地址 時,通過與可W確定IP覆蓋地址在哪里的映射服務通信而使所述IP地址在虛擬空間中運 行。覆蓋網(wǎng)絡(luò)技術(shù)的示例使用示出于圖3中并且在下文進行詳細描述。
[0032] 主機上的客戶端資源實例可W根據(jù)有狀態(tài)協(xié)議(例如傳輸控制協(xié)議(TCP))和/ 或根據(jù)無狀態(tài)協(xié)議(例如用戶數(shù)據(jù)報協(xié)議0JD巧)與同一主機上或不同主機上的其它客戶 端資源實例通信。然而,客戶端包是根據(jù)覆蓋網(wǎng)絡(luò)協(xié)議由進行發(fā)送的VMM封裝W及由進行 接收的VMM解封。主機上的VMM在從主機上的客戶端資源實例接收到目標是另一客戶端資 源實例的IP地址的客戶端包(例如,TCP或UDP包)后根據(jù)覆蓋網(wǎng)絡(luò)(或IP隧道)協(xié)議 對所述客戶端包進行封裝或標記并且將經(jīng)封裝的包發(fā)送至覆蓋網(wǎng)絡(luò)上W便遞送。接著可W 根據(jù)IP隧道技術(shù)經(jīng)由覆蓋網(wǎng)絡(luò)將經(jīng)封裝的包路由至另一VMM。其它VMM從包剝?nèi)ジ采w網(wǎng)絡(luò) 封裝并且將客戶端包(例如,TCP或UDP包)遞送至主機上的、實現(xiàn)目標客戶端資源實例的 適當VM。換句話說,在一些實施方案中,雖然在服務提供商計算環(huán)境(例如,服務提供商數(shù) 據(jù)中屯、)中可能存在單個下層物理網(wǎng)絡(luò),但是本文所描述的封裝可W使得看起來像是每一 客戶端應用(或一個或多個客戶端應用在上面執(zhí)行的每一客戶端資源實例)在它自己的虛 擬網(wǎng)絡(luò)上運行(例如,用于多個客戶端應用的數(shù)據(jù)包可W在同一物理網(wǎng)絡(luò)上行進,但是可 能看起來像是指向所述客戶端應用中的每一者的流量是在專用網(wǎng)絡(luò)上行進)。
[0033] 在一些實施方案中,覆蓋網(wǎng)絡(luò)可W是根據(jù)無連接(或無狀態(tài))IP協(xié)議實現(xiàn)的無狀 態(tài)網(wǎng)絡(luò)。在一些此類實施方案中,進行發(fā)送的VMM將經(jīng)封裝的包發(fā)送至覆蓋網(wǎng)絡(luò)W便路由 和遞送,但不接收應答(ACK)或關(guān)于包的遞送的其它響應。在其它實施方案中,VMM可W接 收ACK或關(guān)于經(jīng)封裝的包的遞送的其它響應。
[0034] 與其中分布式鎖管理器的組件在與采用它們所管理的鎖的應用相同的數(shù)據(jù)平面 內(nèi)執(zhí)行和/或通信的現(xiàn)有系統(tǒng)中不同,在本文所描述的系統(tǒng)的一些實施方案中,分布式鎖 管理器可W結(jié)合至分布式計算系統(tǒng)(例如,向客戶端提供虛擬計算資源和/或虛擬計算服 務的系統(tǒng))的控制平面層中,并且此控制平面層可W具有與在所述系統(tǒng)中的虛擬化資源上 執(zhí)行的客戶端軟件不同的網(wǎng)絡(luò)可用性。在一些實施方案中,客戶端軟件可能不知道控制平 面層或DLM的網(wǎng)絡(luò)可用性,所述網(wǎng)絡(luò)可用性可W作為服務呈現(xiàn)給客戶端(例如通過API)。
[0035] 如上所述,在包括DLM的現(xiàn)有系統(tǒng)中,DLM的組件用來彼此通信的連接機制是客戶 端應用存取與鎖相關(guān)聯(lián)的資源所用的相同連接機制。然而,在本文所描述的系統(tǒng)的一些實 施方案中,情況不是運樣的。而是,客戶端應用可能只需要進行本地API調(diào)用W便加入到本 文所描述的鎖和鎖定機制中。在一些實施方案中,由DLM管理的鎖可能具有唯一標識符(或 具有特定命名空間的唯一標識符),從API的角度來看,所述標識符可W被認為是鎖的"句 柄"。如上所述,在一些實施方案中,客戶端應用可能不需要知道關(guān)于由DLM組件用來進行 彼此通信的網(wǎng)絡(luò)連接的任何東西。而是,它可W通過調(diào)用一個或多個API對鎖進行操作,每 一API對應于特定的鎖管理操作。在一些實施方案中,可能是客戶端應用負責確定如何使 用鎖和/或如何公布鎖。在一些實施方案中,在進程或應用創(chuàng)建鎖后,一個或多個其它進程 或應用(有時也被稱為"參與者")可W訂購鎖(例如,作為觀察者或根據(jù)其它鎖模式)。
[0036] 與一些現(xiàn)有DLM不同,本文所描述的DLM可W包括到它們在其中實現(xiàn)的分布式系 統(tǒng)的控制平面中的鉤子,所述鉤子允許用戶創(chuàng)建具有不同共享等級的鎖并且管理那些鎖, 而無需依賴于使用所述鎖的應用的網(wǎng)絡(luò)連接性。
[0037] 在一些實施方案中,本文所描述的分布式鎖管理器可W跨越本地主機(例如,在 客戶端網(wǎng)絡(luò)上執(zhí)行的那些主機)和在提供商網(wǎng)絡(luò)(例如,公用或?qū)S玫脑朴嬎悱h(huán)境)中執(zhí) 行的主機之間的邊界。在一些實施方案中,實現(xiàn)本文所描述的技術(shù)可W包括建置一組軟件 組件,所述軟件組件允許在客戶端網(wǎng)絡(luò)上(例如,在顧客的所在地處)的主機和/或在云計 算環(huán)境內(nèi)的主機獲得、操縱和管理DLM鎖。鎖本身可W是相對簡單的,并且可W是完全由客 戶端應用設(shè)計者決定什么資源應被鎖定W及它們何時應被鎖定。在各種實施方案中,與鎖 相關(guān)聯(lián)的資源可W包括磁盤卷、虛擬網(wǎng)絡(luò)適配器、文件、數(shù)據(jù)庫內(nèi)的記錄或其它項、或應用 開發(fā)者希望使之免遭多個進程非同步存取的任何其它資源。如上所述,鎖可W被分組到層 級中。例如,可能存在與文件鎖相關(guān)聯(lián)的記錄鎖或共享一組鎖的主機群組。
[0038] 在一些實施方案中,在鎖的狀態(tài)改變時(例如,在為了獨占寫入存取而獲取所述 鎖時),所述鎖的所有訂戶將具有所述鎖的一致的時間點視圖。換句話說,鎖狀態(tài)改變可W 是不可分割的,因為一次只有一個進程可W修改鎖狀態(tài)(并且只有在所述進程持有獨占鎖 時),并且在任何給定時間,所述鎖的所有參與者都將看到相同的值。在一些實施方案中,鎖 本身可W是持久的,因為即使沒有任何訂戶,所述鎖也能持續(xù)下去。例如,如果有Ξ個主機 共享磁盤卷的鎖(例如,兩個在云計算環(huán)境中而一個在本地),其中一個持有所述鎖W進行 獨占寫入,并且如果所有Ξ個主機發(fā)生故障或者是關(guān)閉并隨后重新啟動,那么可W通過鎖 管理器保存鎖的狀態(tài)并且獨占寫入鎖仍然可W由獲得它的主機持有。例如,鎖狀態(tài)可W保 存在加入到鎖定機制中的控制平面中除了使用所述鎖的應用組件在其上執(zhí)行的主機上外 的某處。在一些實施方案中,本地進程(例如,在云計算環(huán)境中和/或在客戶端網(wǎng)絡(luò)上的各 種資源實例中執(zhí)行的客戶端應用)可W保存DLM代表它們創(chuàng)建的每一鎖的鎖狀態(tài)的經(jīng)高速 緩存的視圖,并且在云計算環(huán)境中的持久數(shù)據(jù)存儲區(qū)中(例如在數(shù)據(jù)庫中)還可W存在每 一鎖的鎖狀態(tài)的副本。
[0039] 在一些實施方案中,在鎖可能會具有需要驗證才能加入鎖群組或存取鎖才能查看 和/或修改鎖的安全存取性質(zhì)的意義上,鎖也可W是安全的。如前所述,鎖可W包括值,其 含義是由利用鎖的應用或虛擬計算服務來確定。應指出,在一些實施方案中,可能是客戶端 應用負責遵照它們自己的鎖定規(guī)則。例如,如果在云計算環(huán)境中執(zhí)行的應用將鎖與磁盤卷 相關(guān)聯(lián),那么所述云計算環(huán)境可能不知道或不需要知道運種關(guān)聯(lián)退出。而是,可W是由應用 知道關(guān)聯(lián)是什么W及鎖是如何與資源相關(guān)聯(lián)。在一些實施方案中,鎖與對應資源之間的關(guān) 聯(lián)可能甚至是云計算環(huán)境中的其它實體(例如,云計算環(huán)境的管控組件)不可見的。如前 所述,也可W是由客戶端應用(或應用的設(shè)計者)決定如何使用鎖W及它們的值表示什么 (例如,可W是由客戶端應用限定鎖與它們保護和/或控制對其的存取的共享資源之間的 關(guān)系)。例如,在文件四處傳遞的群集應用中,與文件相關(guān)聯(lián)的鎖可W指示哪個應用組件或 進程在任何給定時間點擁有所述文件。
[0040] 在一些實施方案中,如上所述,值可W是單調(diào)遞增的版本號。在一些實施方案中, 本文所描述的技術(shù)可W通過軟件庫來實現(xiàn)和/或通過命令行工具來激活,所述命令行工具 是針對各種操作系統(tǒng)來開發(fā)的,包括開源或?qū)伲ǚ忾])操作系統(tǒng)和/或用于智能電話或 其它移動裝置的操作系統(tǒng)。
[0041] 用于在分布式計算系統(tǒng)中提供分布式鎖管理器的方法的一個實施方案通過圖1 中的流程圖示出,其中所述分布式計算系統(tǒng)向客戶端提供虛擬計算系統(tǒng)。如110處所示,在 此實例中,所述方法可W包括向客戶端提供虛擬計算服務(例如,使用虛擬化計算資源實 現(xiàn)的服務)的分布式系統(tǒng)實現(xiàn)向客戶端呈現(xiàn)API的分布式鎖管理器值LM)。如在120中, 所述方法還可W包括DLM的組件從在相同節(jié)點上執(zhí)行的資源實例接收對共享資源的鎖執(zhí) 行鎖管理操作的請求,其中所述資源實例實現(xiàn)分布式應用的一部分(例如,進程或其它組 件)。
[0042] 如此實例中所示,如在130中,所述方法可W包括所述DLM組件執(zhí)行所請求的操作 并且通過控制平面網(wǎng)絡(luò)與另一DLM組件通信W共享鎖的狀態(tài)信息(例如,由執(zhí)行所述操作 產(chǎn)生的經(jīng)修改的鎖值或其它狀態(tài)信息),所述控制平面網(wǎng)絡(luò)與數(shù)據(jù)平面網(wǎng)絡(luò)(其一部分被 分配給所述應用)在物理上或邏輯上不同。如在140中,所述方法還可W包括DLM(例如, 接收請求和/或執(zhí)行所請求的操作的DLM組件)將狀態(tài)信息高速緩存在本地(例如,在此 DLM組件在上面執(zhí)行的節(jié)點上),并且將所述狀態(tài)信息寫入至持久存儲區(qū)(例如,通過接收 請求和/或執(zhí)行所請求的操作的DLM組件或通過DLM的另一組件)。
[0043] 示例提供商網(wǎng)絡(luò)環(huán)培
[0044] 本部分描述了在其中可W實現(xiàn)本文所描述的方法的實施方案的示例提供商網(wǎng)絡(luò) 環(huán)境。然而,運些示例提供商網(wǎng)絡(luò)環(huán)境不希望是限制性的。
[0045] 圖2示出了根據(jù)至少一些實施方案的示例提供商網(wǎng)絡(luò)環(huán)境。提供商網(wǎng)絡(luò)200可W 經(jīng)由一個或多個虛擬化服務210向客戶端提供資源虛擬化,所述虛擬化服務允許客戶端購 買、租賃或W其它方式獲得在一個或多個數(shù)據(jù)中屯、中的提供商網(wǎng)絡(luò)內(nèi)的裝置上實現(xiàn)的虛擬 化資源的實例212,所述虛擬化資源包括但不限于計算和存儲資源。專用IP地址216可W 與資源實例212相關(guān)聯(lián);專用IP地址是提供商網(wǎng)絡(luò)200上的資源實例212的內(nèi)部網(wǎng)絡(luò)地 址。在一些實施方案中,提供商網(wǎng)絡(luò)200還可W提供客戶端可W從提供商200獲得的公用 IP地址214和/或公用IP地址范圍(例如,因特網(wǎng)協(xié)議版本4(IPv4)或因特網(wǎng)協(xié)議版本 6 (IPv6)地址)。
[0046] 常規(guī)上,提供商網(wǎng)絡(luò)200經(jīng)由虛擬化服務210可W允許服務提供商的客戶端(例 如,操作客戶端網(wǎng)絡(luò)250A的客戶端)動態(tài)地將指派或分配給客戶端的至少一些公用IP地 址214與指派給客戶端的特定資源實例212相關(guān)聯(lián)。提供商網(wǎng)絡(luò)200還可W允許客戶端將 之前映射至分配給客戶端的一個虛擬化計算資源實例212的公用IP地址214重新映射至 也分配給客戶端的另一虛擬化計算資源實例212。使用由服務提供商提供的虛擬化計算資 源實例212和公用IP地址214,服務提供商(例如,客戶端網(wǎng)絡(luò)250A的運營商)的客戶端 可W(例如)實現(xiàn)客戶端特定的應用W及在中間網(wǎng)絡(luò)240(例如因特網(wǎng))上呈現(xiàn)客戶端的 應用。中間網(wǎng)絡(luò)240上的其它網(wǎng)絡(luò)實體220可W接著產(chǎn)生去往由客戶端網(wǎng)絡(luò)250A發(fā)布的 目標公用IP地址214的流量;所述流量被路由至服務提供商數(shù)據(jù)中屯、,并且在所述數(shù)據(jù)中 屯、處經(jīng)由網(wǎng)絡(luò)底層路由至目前映射至目標公用IP地址214的虛擬化計算資源實例212的 專用IP地址216。類似地,來自虛擬化計算資源實例212的響應流量可W經(jīng)由網(wǎng)絡(luò)底層往 回路由至中間網(wǎng)絡(luò)240上W返回源實體220。
[0047] 如本文所使用,專用IP地址是指提供商網(wǎng)絡(luò)中的資源實例的內(nèi)部網(wǎng)絡(luò)地址。專用 IP地址僅在提供商網(wǎng)絡(luò)內(nèi)是可路由的。源自提供商網(wǎng)絡(luò)外部的網(wǎng)絡(luò)流量不直接路由至專用 IP地址;而是,所述流量使用映射至資源實例的公用IP地址。提供商網(wǎng)絡(luò)可W包括提供網(wǎng) 絡(luò)地址轉(zhuǎn)換(NAT)或類似功能性W進行從公用IP地址至專用IP地址和從專用IP地址至 公用IP地址的映射的網(wǎng)絡(luò)裝置或器具。 W48] 如本文所使用,公用IP地址是由服務提供商或由客戶端指派給資源實例的因特 網(wǎng)可路由網(wǎng)絡(luò)地址。路由至公用IP地址的流量(例如)經(jīng)由1:1網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)進 行轉(zhuǎn)換并轉(zhuǎn)發(fā)至資源實例的相應專用IP地址。
[0049] 一些公用IP地址可W由提供商網(wǎng)絡(luò)基礎(chǔ)設(shè)施指派給特定資源實例;運些公用IP 地址可W被稱為標準的公用IP地址或簡稱為標準IP地址。在至少