專利名稱:控制集群計(jì)算環(huán)境的系統(tǒng)通信量的方法、系統(tǒng)和程序產(chǎn)品的制作方法
技術(shù)領(lǐng)域:
一般地說,本發(fā)明涉及分布式計(jì)算環(huán)境,特別是涉及對分布式計(jì)算環(huán)境的節(jié)點(diǎn)的一個或多個集群的管理。
背景技術(shù):
分布式系統(tǒng)是高可用性和可伸縮的系統(tǒng),它們應(yīng)用于各種場合,包括那些需要高工作吞吐量或系統(tǒng)連續(xù)或近似連續(xù)可用的場合。
具有共享資源能力的分布式系統(tǒng)稱作集群。一個集群包括若干個操作系統(tǒng)實(shí)例,它們共享資源并彼此協(xié)調(diào)以完成系統(tǒng)任務(wù)。盡管今天存在各種集群系統(tǒng)(如國際商用機(jī)器公司提供的RS/6000 SP系統(tǒng)),但仍然希望使現(xiàn)有的集群系統(tǒng)進(jìn)一步增強(qiáng)。例如,希望增強(qiáng)以利于對集群系統(tǒng)的管理。
根據(jù)本發(fā)明的一個方面,提供了一種控制集群計(jì)算環(huán)境的系統(tǒng)通信量的方法,該方法包括對于一種要提供的服務(wù),把一個或多個節(jié)點(diǎn)地址映射到為該服務(wù)定義的一個或多個網(wǎng)絡(luò)對象;從一個或多個網(wǎng)絡(luò)對象得到該服務(wù)的一個或多個優(yōu)選權(quán),以及根據(jù)這一個或多個優(yōu)選權(quán)接觸該服務(wù)。
這里還描述和申明了與上文概括的方法相對應(yīng)的系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。
通過本發(fā)明的技術(shù),還實(shí)現(xiàn)了其他特點(diǎn)和優(yōu)點(diǎn)。這里詳細(xì)描述了本發(fā)明的其他實(shí)施例和方面,這些被認(rèn)為是所申明的發(fā)明的一部分。
在本說明書結(jié)尾的權(quán)利要求中特別指出和清楚地申明了認(rèn)為是作為本發(fā)明的要點(diǎn)。
為了更好地理解本發(fā)明,現(xiàn)在將通過舉例參考附圖,其中圖1描繪含有和使用本發(fā)明各方面的計(jì)算環(huán)境的一個實(shí)例;圖2描繪根據(jù)本發(fā)明一個方面的具有多個集群的計(jì)算環(huán)境的一個實(shí)施例;圖3描繪根據(jù)本發(fā)明一個方面的集群節(jié)點(diǎn)的狀態(tài)的一個實(shí)施例;圖4描繪根據(jù)本發(fā)明的一個方面所使用的一個集群體系結(jié)構(gòu)的部件的一個實(shí)施例;圖5描繪根據(jù)本發(fā)明一個方面的一個集群環(huán)境的一個實(shí)施例,在該集群環(huán)境中圖4的系統(tǒng)注冊部件只位于該環(huán)境的一部分節(jié)點(diǎn)上;圖6描繪根據(jù)本發(fā)明一個方面的集群體系結(jié)構(gòu)各部件數(shù)據(jù)從屬性的一個實(shí)例;圖7描繪根據(jù)本發(fā)明一個方面的集群體系結(jié)構(gòu)各部件功能依賴性的一個實(shí)例;圖8描繪根據(jù)本發(fā)明一個方面的自舉過程的事件和消息流序列的一個實(shí)施例;圖9a描繪根據(jù)本發(fā)明一個方面的集群定義數(shù)據(jù)結(jié)構(gòu)的一個實(shí)施例;圖9b描繪根據(jù)本發(fā)明一個方面的節(jié)點(diǎn)定義數(shù)據(jù)結(jié)構(gòu)的一個實(shí)施例;圖9c描繪根據(jù)本發(fā)明一個方面的注冊服務(wù)器節(jié)點(diǎn)清單的一個實(shí)施例;圖10描繪根據(jù)本發(fā)明一個方面的本機(jī)存儲數(shù)據(jù)字段的一個實(shí)例;圖11描繪根據(jù)本發(fā)明一個方面的集群系統(tǒng)的唯一節(jié)點(diǎn)標(biāo)識符的一個實(shí)施例;圖12描繪參加到本發(fā)明的節(jié)點(diǎn)定義過程中的那些過程的一個實(shí)施例;圖13描繪根據(jù)本發(fā)明一個方面的節(jié)點(diǎn)定義過程的事件和消息流序列的一個實(shí)施例;圖14描繪由本發(fā)明的自動集群配置技術(shù)所使用的各種過程的一個實(shí)例;圖15描繪為提供本發(fā)明的自動集群配置在圖14的各過程之間消息流的一個實(shí)例;
圖16描繪根據(jù)本發(fā)明一個方面被定義于多個集群的節(jié)點(diǎn)的一個實(shí)例;圖17描繪根據(jù)本發(fā)明一個方面從一個集群移動到另一個集群的一個節(jié)點(diǎn)的一個實(shí)例;圖18描繪根據(jù)本發(fā)明一個方面從一個集群移動到另一個集群中的過程所用事件和消息流序列的一個實(shí)施例;圖19描繪根據(jù)本發(fā)明一個方面的節(jié)點(diǎn)地址定義數(shù)據(jù)結(jié)構(gòu)的一個實(shí)例;圖20描繪根據(jù)本發(fā)明一個方面的子網(wǎng)定義數(shù)據(jù)結(jié)構(gòu)的一個實(shí)例;圖21描繪根據(jù)本發(fā)明一個方面的網(wǎng)絡(luò)定義數(shù)據(jù)結(jié)構(gòu)的一個實(shí)例;圖22描繪根據(jù)本發(fā)明一個方面由集群環(huán)境的客戶機(jī)用來選擇特定地址以定位一個服務(wù)的邏輯的一個實(shí)施例;圖23描繪根據(jù)本發(fā)明一個方面把一節(jié)點(diǎn)地址定義映射到子網(wǎng)和網(wǎng)絡(luò)定義中的一個實(shí)施;以及圖24描述根據(jù)本發(fā)明一個方面的一個邏輯的另一個實(shí)施例,該邏輯用于產(chǎn)生一個有序的地址清單,供一集群中的一個特定節(jié)點(diǎn)使用,以達(dá)到一特定的服務(wù)。
具體實(shí)施例方式
根據(jù)本發(fā)明的一個或多個方面,一個利用一操作系統(tǒng)的一個或多個拷貝的分布式計(jì)算環(huán)境得到管理。該操作系統(tǒng)的每個拷貝被配置成使它能訪問一組資源(例如處理器、網(wǎng)絡(luò)接口、文件、文件系統(tǒng)、存儲裝置、外圍設(shè)備等)。這種訪問可以是排它的或者是與該操作系統(tǒng)的其他拷貝共享的。如果這些資源要被共享,那么該操作系統(tǒng)的各單個拷貝協(xié)作和共享它們所控制的系統(tǒng)資源。為了共享資源,這些操作系統(tǒng)拷貝協(xié)商該訪問,以保持資源的完整性。例如,需要向一存儲裝置的某一段寫入多塊數(shù)據(jù)的一個操作系統(tǒng)的兩個拷貝協(xié)商對該段的訪問,否則,寫操作的順序可能會損害被寫數(shù)據(jù)的完整性。
圖1描繪含有和使用本發(fā)明各方面的分布式計(jì)算環(huán)境的一個實(shí)例,這里將描述這一實(shí)例。一個分布式計(jì)算環(huán)境100包括例如經(jīng)由多個局域網(wǎng)絡(luò)網(wǎng)關(guān)104彼些連接的多個框架(frame)102。下文中將詳細(xì)描述框架102和局域網(wǎng)絡(luò)網(wǎng)關(guān)104。
在一個實(shí)例中,分布式計(jì)算環(huán)境100包括8個框架,每個框架包括多個處理節(jié)點(diǎn)106。在一個例子中,每個框架包括16個處理節(jié)點(diǎn)(每個節(jié)點(diǎn)有一個或多個處理器)。每個處理節(jié)點(diǎn)是例如一個RISC/6000計(jì)算機(jī),運(yùn)行AIX(這是一個基于UNIX的操作系統(tǒng))。在一個框架內(nèi)的每個處理節(jié)點(diǎn)經(jīng)由例如內(nèi)部局域網(wǎng)連接實(shí)現(xiàn)與該框架內(nèi)的其他處理節(jié)點(diǎn)的耦合。此外,每個框架經(jīng)由局域網(wǎng)絡(luò)網(wǎng)關(guān)104與其他框架耦合。
作為舉例,每個局域網(wǎng)絡(luò)網(wǎng)關(guān)104包括或者是一個RISC/6000計(jì)算機(jī)和到該局域網(wǎng)的任何計(jì)算機(jī)網(wǎng)絡(luò)連接,或者是一個網(wǎng)絡(luò)路由器。然而,這些只是舉例。對于相關(guān)領(lǐng)域技術(shù)人員而言,顯然存在其他類型局域網(wǎng)絡(luò)網(wǎng)關(guān),而且還能使用其他機(jī)制使各框架彼此耦合。
圖1的分布式計(jì)算環(huán)境只是一個例子。多于或少于8個框架,或每個框架有多于或少于16個節(jié)點(diǎn)都是可能的。再有,處理節(jié)點(diǎn)不一定是運(yùn)行AIX的RISC/6000計(jì)算機(jī)。部分或全部處理節(jié)點(diǎn)可以包括不同類型的計(jì)算機(jī)和/或不同的操作系統(tǒng)。再有,異構(gòu)環(huán)境能包括和利用本發(fā)明的多方面,在異構(gòu)環(huán)境中該環(huán)境的一個或多個節(jié)點(diǎn)和/或操作系統(tǒng)與該環(huán)境的其他節(jié)點(diǎn)或操作系統(tǒng)不同。這種異構(gòu)環(huán)境的節(jié)點(diǎn)在它們彼此協(xié)調(diào)和共享資源方面如這里所描述的那樣相互操作。再有,本發(fā)明的各方面可用在單個計(jì)算機(jī)系統(tǒng)內(nèi)。所有這些變體被認(rèn)為是所申明的發(fā)明的一部分。
具有共享資源能力的一個分布式計(jì)算環(huán)境稱作集群。特別是,一個計(jì)算環(huán)境能包括一個或多個集群。例如,如圖2中所示,一個計(jì)算機(jī)環(huán)境200包括兩個集群集群A202和集群B204。每個集群包括一個或多個節(jié)點(diǎn)206,它們在完成系統(tǒng)任務(wù)過程中共享資源和彼此協(xié)調(diào)。每個節(jié)點(diǎn)包括該操作系統(tǒng)的一個單獨(dú)拷貝。
在考慮一個節(jié)點(diǎn)在一特定集群中的成員資格時有兩個方面。一個方面涉及該集群的靜態(tài)配置。這一方面稱作節(jié)點(diǎn)定義(見圖3)。如果一個節(jié)點(diǎn)被定義于該集群,該集群中的其他節(jié)點(diǎn)便認(rèn)識這一節(jié)點(diǎn)。在一個成功的節(jié)點(diǎn)定義操作(下文中進(jìn)一步描述)之后,該節(jié)點(diǎn)被定義于該集群。反之,在節(jié)點(diǎn)刪除操作之后,該節(jié)點(diǎn)便不再定義于該集群。
該節(jié)點(diǎn)的靜態(tài)方面不同于它的動態(tài)(或運(yùn)行時)屬性,后者稱作集群成員資格。集群成員資格是指這樣的事實(shí),即當(dāng)一個節(jié)點(diǎn)被定義和處于運(yùn)行狀態(tài)(即在線)時,該節(jié)點(diǎn)被認(rèn)為是該集群的成員。這里術(shù)語“處于運(yùn)行狀態(tài)”是指這樣的事實(shí),即該節(jié)點(diǎn)被該集群的其他成員理解為一個功能節(jié)點(diǎn),即該節(jié)點(diǎn)能完成稱作“生存任務(wù)”的基本功能。作為一個舉例,一個節(jié)點(diǎn)連續(xù)完成一組生存任務(wù),并通過以規(guī)則間隔向該集群的其他成員發(fā)送“心跳”消息來向其他節(jié)點(diǎn)報告它完成這個任務(wù)的能力。
集群成員資格可以看作是節(jié)點(diǎn)清單,這些節(jié)點(diǎn)在任何時間點(diǎn)在功能上是作為該集群的一個整體部分。這一清單對所有節(jié)點(diǎn)都是可用的,而且在本發(fā)明的一個方面中,該集群體系結(jié)構(gòu)保證全部節(jié)點(diǎn)在任何時間點(diǎn)都能訪問這同一個成員資格清單,甚至在無共享的分布式系統(tǒng)中也是如此。(無共享的分布式系統(tǒng)是這樣一個系統(tǒng),在其中各節(jié)點(diǎn)沒有任何共享的物理資源,如盤或存儲器)。為了保持對這種系統(tǒng)中特定數(shù)據(jù)的同一視圖,使用了復(fù)雜的同步協(xié)議,因?yàn)樵摂?shù)據(jù)得要在原子事務(wù)處理中分布到所有節(jié)點(diǎn)。
使用特定的協(xié)議添加或刪除成員資格清單中的節(jié)點(diǎn)。例如,用于向成員資格清單添加節(jié)點(diǎn)的過程稱作節(jié)點(diǎn)加入過程。反之,用節(jié)點(diǎn)退出過程從成員資格清單中刪除節(jié)點(diǎn)。如果一個節(jié)點(diǎn)未在該集群成員資格清單中,則該節(jié)點(diǎn)已經(jīng)離開了該集群。
每個集群由一個集群體系結(jié)構(gòu)管理,它包括多個部件。如這里要更詳細(xì)描述的那樣,每個部件在該集群的一個或多個節(jié)點(diǎn)上執(zhí)行一個或多個相應(yīng)的過程。如果該部件在多個節(jié)點(diǎn)上執(zhí)行多個過程,則該體系結(jié)構(gòu)是在那些節(jié)點(diǎn)上分布的。然而,分布式體系結(jié)構(gòu)只是一個舉例。本發(fā)明的一個或多個方面能用在單一的或非分布式的系統(tǒng)中。
在一個例子中,集群體系結(jié)構(gòu)的部件包括一個分布式配置管理器(DCM)400(圖4),用于配置集群系統(tǒng)和協(xié)調(diào)集群配置數(shù)據(jù)庫(下文描述)的同步,這是當(dāng)節(jié)點(diǎn)加入或退出集群時發(fā)生的;一個系統(tǒng)注冊服務(wù)器子系統(tǒng)402,它包括一個或多個過程,這些過程服務(wù)于存儲在集群配置數(shù)據(jù)庫中的數(shù)據(jù);一個生存子系統(tǒng)404維持集群成員資格清單,該清單提供關(guān)于該集群各成員之間通信路徑可用性的信息;一個組服務(wù)子系統(tǒng)406,它提供了一種工具,使用它能使其他集群過程形成邏輯組并保持一致的組狀態(tài)和過程成員資格;以及一個資源管理器子系統(tǒng)408,它是一個工具,管理集群資源的訪問和控制,還提供一個工具使集群客戶機(jī)能監(jiān)視集群資源的狀態(tài)和配置。
在一個實(shí)施例中,如圖4中所示,每個部件被分布在多個節(jié)點(diǎn)410上。就是說,每個部件在多個節(jié)點(diǎn)上執(zhí)行一個過程。例如,DCM400是在所描繪的三個節(jié)點(diǎn)上執(zhí)行DCM過程412。對于其他部件也是如此,對每個部件將在下文中更詳細(xì)地描述。
分布式配置管理器(DCM)子系統(tǒng)400在要被配置為該集群一部分的每個節(jié)點(diǎn)上提供一個計(jì)算機(jī)程序的拷貝,稱作分布式配置管理器守護(hù)程序(DCMD)412。DCMD是該集群的自舉代理。這樣,DCMD過程負(fù)責(zé)以適當(dāng)?shù)募号渲脝悠渌翰考?。DCMD也是在適當(dāng)?shù)臅r候停止其他集群部件的過程,例如在一個節(jié)點(diǎn)從一個集群轉(zhuǎn)移到另一個集群時的情況中。DCMD本身由該節(jié)點(diǎn)的基本操作系統(tǒng)自舉,而且在這個例子中是要由操作系統(tǒng)直接自舉的唯一集群部件。
DCMD維持每個節(jié)點(diǎn)本機(jī)存儲器中文件的集合,這些文件與一個或多個集群配置相關(guān)聯(lián)。除了本地配置數(shù)據(jù)外,DCMD還在服務(wù)器倉庫中存儲全局配置數(shù)據(jù)。下文將進(jìn)一步描述集群配置數(shù)據(jù)。
系統(tǒng)注冊部件402提供全局?jǐn)?shù)據(jù)存儲功能。它是高可用性的,在一個例子中在多個節(jié)點(diǎn)當(dāng)中被復(fù)制作為系統(tǒng)注冊過程414(圖4)。然而,在一個實(shí)施例中,復(fù)制系統(tǒng)注冊部件的節(jié)點(diǎn)數(shù)少于集群全部節(jié)點(diǎn)數(shù),如圖5中描繪的那樣。如圖5中所示,節(jié)點(diǎn)(即操作系統(tǒng)實(shí)例)1、2、3包括系統(tǒng)注冊過程500,而節(jié)點(diǎn)4-8不包括。然而,在這一特定實(shí)例中,所有節(jié)點(diǎn)都包括其他核心集群過程(例如DCM過程、生存過程、組服務(wù)過程以及資源管理器過程)。節(jié)點(diǎn)4-8被認(rèn)為是注冊客戶機(jī)節(jié)點(diǎn),而節(jié)點(diǎn)1-3被認(rèn)為是注冊服務(wù)器節(jié)點(diǎn),因?yàn)樽怨δ苁悄切┕?jié)點(diǎn)上執(zhí)行的。
生存部件404(圖4)提供集群中通信適配器的狀態(tài)和節(jié)點(diǎn)間通信路徑的可用性。每個節(jié)點(diǎn)經(jīng)由一個或多個通信適配器與通信網(wǎng)絡(luò)502相連(如圖5中所示)。任何這種適配器都可能失效,影響網(wǎng)絡(luò)中使集群節(jié)點(diǎn)互連的一個或多個通信路徑。生存部件在集群的一個或多個節(jié)點(diǎn)中運(yùn)行一個過程,它從每個節(jié)點(diǎn)中的每個通信適配器發(fā)出周期性的認(rèn)證消息,稱作心跳。在各節(jié)點(diǎn)中生存過程的集合交換關(guān)于每個適配器可用性的部分知識的消息,通過這些消息使生存系統(tǒng)能邏輯上推導(dǎo)出集群系統(tǒng)中每個通信適配器的狀態(tài)以及任何兩個適配器之間通信路徑的可用性。
組服務(wù)部件406向其他部件提供通用成員資格服務(wù)。這些服務(wù)包括進(jìn)行兩階段提交協(xié)議的工具程序,也稱作原子廣播。它還包括用于使一組的成員能控制該組的成員資格和維持組狀態(tài)的工具。(組服務(wù)的一個實(shí)例在美國專利5,748,958中詳細(xì)描述,題為“利用批請求向過程組呈現(xiàn)成員資格變化的系統(tǒng)”,1998年5月5日授權(quán),這里全文納入作為參考。)資源管理部件408向不屬于核心集群服務(wù)(如DCM、系統(tǒng)注冊、生存、組服務(wù)以及資源管理器)一部分的其他集群服務(wù)提供基本通信層。如下文所述,這些服務(wù)落入附加的資源控制器類別。在一個例子中,這一通信協(xié)議是面向?qū)ο蟮?。這樣,要由資源管理部件控制的任何資源控制器向資源管理部件提供一個資源描述文件,該文件定義由它控制的資源對象。這一定義是利用一組屬性或數(shù)據(jù)字段以及由每個資源控制器支持的功能完成的。
集群體系結(jié)構(gòu)的每個部件在該體系結(jié)構(gòu)的一個或多個其他部件上有一個或多個數(shù)據(jù)和/或功能依賴性,它定義各部件之間的關(guān)系(即部件間關(guān)系)。這些關(guān)系是根據(jù)本發(fā)明的一個方面設(shè)計(jì)的,使得該數(shù)據(jù)和功能依賴性形成一個非循環(huán)性圖(即避免依賴關(guān)系循環(huán))。
每個部件的數(shù)據(jù)依賴性的一個實(shí)例如圖6中的圖形所示,下文中將進(jìn)一步描述(A)系統(tǒng)注冊系統(tǒng)注冊對集群的任何其他部件沒有任何數(shù)據(jù)依賴性600,這是系統(tǒng)注冊的一個獨(dú)特的特性。它本身能存儲它的全部配置數(shù)據(jù)。系統(tǒng)注冊部件的設(shè)計(jì)使它能被用作相關(guān)圖中的一個葉子,從而避免任何循環(huán)關(guān)系。系統(tǒng)注冊有能力以高可用性的方式存儲它自己的配置數(shù)據(jù)。系統(tǒng)注冊被設(shè)計(jì)成被復(fù)制的數(shù)據(jù)倉庫,在其中使用事務(wù)邏輯傳播請求。
(B)分布式配置管理器(DCM)DCM部件有能力在每個節(jié)點(diǎn)上局部存儲核心集群配置數(shù)據(jù)的本機(jī)版本,還有能力在系統(tǒng)注冊中存儲全局?jǐn)?shù)據(jù)。在一個例子中,至少一部分本機(jī)配置數(shù)據(jù)要與全局?jǐn)?shù)據(jù)一致。然而,在某些情況中,有可能由DCM子系統(tǒng)存儲的本機(jī)配置數(shù)據(jù)會與全局存儲在系統(tǒng)注冊子系統(tǒng)中的數(shù)據(jù)相脫離。例如,如果由于維護(hù)的原因,在一節(jié)點(diǎn)與集群斷開時該節(jié)點(diǎn)錯過了一次更新,就將發(fā)生這種情況,這是一個例子。
例如,一個節(jié)點(diǎn)可能失效并被送去修理。與此同時、該集群系統(tǒng)的系統(tǒng)管理員可能決定解除對該受損節(jié)點(diǎn)的定義,于是通過“解除節(jié)點(diǎn)定義”操作從全局注冊中刪除該節(jié)點(diǎn)的定義。當(dāng)受損節(jié)點(diǎn)被修復(fù)并與該集群再連接時,它應(yīng)該不再被允許共享該集群的資源,因?yàn)樗驯唤獬嗽谠摷褐械亩x。然而,在新近修復(fù)的節(jié)點(diǎn)中的本機(jī)集群配置已經(jīng)過時,而且仍然表現(xiàn)出該節(jié)點(diǎn)被定義于該集群。為了檢測這種情況,作為所有其他集群部件自舉代理的DCMD守護(hù)程序在開始該節(jié)點(diǎn)加入過程之前檢驗(yàn)本機(jī)集群定義的有效性。這造成了DCMD守護(hù)程序?qū)ο到y(tǒng)注冊部件的數(shù)據(jù)依賴性602。
(C)其余的核心集群部件(生存、組服務(wù)和資源管理)對分布式配置管理器部件有共同的數(shù)據(jù)依賴性604,因?yàn)樗鼈兝糜蒁CM存儲的本機(jī)集群配置。例如,本機(jī)集群配置包含自舉信息,如節(jié)點(diǎn)名和節(jié)點(diǎn)號,以及運(yùn)行注冊服務(wù)器過程的節(jié)點(diǎn)的清單,在這一體系結(jié)構(gòu)中該節(jié)點(diǎn)清單由各集群部件使用。除了系統(tǒng)注冊部件本身之外,其它部件都使用那個節(jié)點(diǎn)清單,以便能夠連接到注冊服務(wù)器并檢索全局集群配置,見下文的描述。
(D)全部部件,除了系統(tǒng)注冊本身之外,都對全局集群配置有數(shù)據(jù)依賴性。
每個部件的功能依賴性的一個實(shí)例如圖7中的圖形所示,下文中將進(jìn)一步描述(A)分布式配置管理器(DCM)DCM依賴于由系統(tǒng)注冊部件提供的全局存儲功能的可用性(見參考數(shù)字700)。
(B)系統(tǒng)注冊系統(tǒng)注冊對組服務(wù)部件有功能依賴性702。這一依賴性產(chǎn)生于這樣的事實(shí),即系統(tǒng)注冊利用組服務(wù)部件的成員資格服務(wù)以傳播寫操作。因?yàn)樵诰哂凶苑?wù)器節(jié)點(diǎn)功能的每個節(jié)點(diǎn)中要復(fù)制全局集群配置數(shù)據(jù),所以對它的任何修改都涉及被復(fù)制的寫操作。在這種寫操作期間,存在著復(fù)制品之一可能無效的危險,使得希望實(shí)現(xiàn)一個邏輯用于分布式恢復(fù)被復(fù)制操作。由組服務(wù)部件提供的成員資格服務(wù)包括這種分布式恢復(fù)邏輯的一個實(shí)例。
然而,對組服務(wù)部件的功能依賴性只對寫操作有效。對于讀類型操作,系統(tǒng)注冊部件對組服務(wù)部件沒有依賴性。所以,系統(tǒng)注冊部件能在被DCMD部件自舉之后完成它的初始化的第一階段(下文將進(jìn)一步描述)。在完成這一階段之后,系統(tǒng)注冊已檢索了集群配置數(shù)據(jù)庫的最近更新的拷貝,因而能允許其他部件讀該集群配置數(shù)據(jù)。這反過來又允許組服務(wù)部件完成它自己的初始化,這使得系統(tǒng)注冊部件可能進(jìn)入它的初始化的第二階段,如下文描述的那樣。
(C)生存部件生存部件由DCMD自舉(見參考數(shù)字704),并把生存子系統(tǒng)的配置存儲在該注冊中(見參考數(shù)字705)。它對任何其他部件沒有任何其他功能依賴性。
(D)組服務(wù)部件組服務(wù)部件由DCMD自舉(706)。它還對生存部件有功能依賴性(708),因?yàn)樗枰涝谠摷褐懈鞴?jié)點(diǎn)之間的通信路徑可用性。
(E)資源管理器部件資源管理器部件由DCMD自舉(710)。它還對組服務(wù)部件輸出的組成員資格功能有依賴性(712)。它使用該成員資格功能以確定它的配置數(shù)據(jù)庫的版本號。
附加的資源管理器也對DCM有功能依賴性(714),還對資源管理器部件有功能依賴性(716)。
在集群技術(shù)的自舉過程期間,部件的數(shù)據(jù)和/或功能依賴性得到滿足。在一個例子中,在集群自舉過程中利用了特定的事件和消息序列以滿足其依賴性。這一序列的一個例子示于圖8并在這里描述。
在步驟0,自舉序列開始。該集群體系結(jié)構(gòu)被設(shè)計(jì)成例如一個軟件層,它由操作系統(tǒng)啟動。在基本操作系統(tǒng)自舉過程之后,該操作系統(tǒng)通過啟動分布式配置管理器過程來自舉該集群軟件。然后,DCMD守護(hù)程序被啟動并在該操作系統(tǒng)實(shí)例的整個生存期間被執(zhí)行。
如前文提到的那樣,DCM保持一組存儲在每個節(jié)點(diǎn)的本機(jī)存儲器中的數(shù)據(jù)結(jié)構(gòu)(作為一個例子)。該數(shù)據(jù)結(jié)構(gòu)包括例如集群數(shù)據(jù)結(jié)構(gòu)900(圖9a),節(jié)點(diǎn)定義數(shù)據(jù)結(jié)構(gòu)902(圖9b)以及注冊服務(wù)器節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)904(圖9c),下文將描述它們中的每一個。
集群數(shù)據(jù)結(jié)構(gòu)900包括例如集群名906和唯一集群標(biāo)識符908。在一個例子中。唯一標(biāo)識符用作關(guān)鍵字段(唯一字段)。在集群數(shù)據(jù)結(jié)構(gòu)中的關(guān)鍵字段保護(hù)操作系統(tǒng)的單個實(shí)例免予被重新標(biāo)簽為相同集群名。這些集群往往由管理人員創(chuàng)建,而且在大量處理器的配置過程期間會容易地以相同的名字加標(biāo)簽。再有,這里描述的集群配置基礎(chǔ)措施是極其動態(tài)的,這樣便有可能創(chuàng)建和刪除集群。集群能根據(jù)分布式系統(tǒng)的需要動態(tài)地被創(chuàng)建和被毀掉。在集群被創(chuàng)建的時候以定義集群操作產(chǎn)生唯一標(biāo)識符。這一特性使有可能檢測出集群名的重使用。例如,如果標(biāo)簽為A的集群被創(chuàng)建、刪除和再創(chuàng)建,A的這兩個定義的數(shù)據(jù)結(jié)構(gòu)會是不同的,因?yàn)槲ㄒ粯?biāo)識符字段會是獨(dú)特的。
再有,集群定義數(shù)據(jù)結(jié)構(gòu)中的唯一標(biāo)識符是在其他集群資源的映射的根中。在這一系統(tǒng)中,該集群數(shù)據(jù)結(jié)構(gòu)的唯一標(biāo)識符是在集群資源中的標(biāo)簽的前綴處。使用唯一標(biāo)識符映射和這里描述的體系結(jié)構(gòu)能防止集群資源免予被錯誤的集群配置假設(shè)下的客戶機(jī)訪問。
節(jié)點(diǎn)定義數(shù)據(jù)結(jié)構(gòu)902包括例如節(jié)點(diǎn)號910;節(jié)點(diǎn)名912,它作為一種方便措施用于使節(jié)點(diǎn)識別對管理人員更容易些,但它不被任何集群資源管理器用作訪問節(jié)點(diǎn)配置的裝置;以及唯一節(jié)點(diǎn)標(biāo)識符914,它標(biāo)識一個節(jié)點(diǎn)的定義。唯一標(biāo)識符與特定的操作系統(tǒng)實(shí)例相關(guān)聯(lián)。在每次把一個節(jié)點(diǎn)定義于一個集群時,便產(chǎn)生這一標(biāo)識符。這一唯一標(biāo)識符使有可能區(qū)分有相同名字的兩個節(jié)點(diǎn),還可能區(qū)分已經(jīng)被定義于該集群、被解除定義、然后又以同一名字再次定義(重定義)的節(jié)點(diǎn)。
注冊服務(wù)器節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)904包括定義于該集群的注冊服務(wù)器節(jié)點(diǎn)清單。在一個例子中,這一數(shù)據(jù)結(jié)構(gòu)包括注冊服務(wù)器916的有序清單和主注冊服務(wù)器918的一個指示。這一清單由其他集群部件檢索,這些部件希望訪問一個系統(tǒng)注冊過程以讀取該系統(tǒng)的全局配置數(shù)據(jù),如下文描述的那樣。
除了上述本機(jī)數(shù)據(jù)結(jié)構(gòu)外,每個集群部件維持一個本機(jī)存儲數(shù)據(jù)結(jié)構(gòu),那里每個部件保留空間用于存儲與本機(jī)節(jié)點(diǎn)有關(guān)的信息。在圖10中顯示了本機(jī)數(shù)據(jù)配置的一個例子,在下文中將對其進(jìn)行描述。
應(yīng)該指出,圖10描繪的數(shù)據(jù)結(jié)構(gòu)是從UNIX操作系統(tǒng)中本發(fā)明的一個特定實(shí)現(xiàn)導(dǎo)出的,但在其他操作系統(tǒng)中的類似實(shí)現(xiàn)是可能的,而且不偏離本發(fā)明的精神。
下面描述本機(jī)存儲數(shù)據(jù)字段的一個例子1.‘/’(1000)表示該操作系統(tǒng)中的根文件系統(tǒng)。
2.‘/var’(1002)是一個文件系統(tǒng),那里存儲與操作系統(tǒng)擴(kuò)展有關(guān)的數(shù)據(jù)。
3.集群邏輯把本機(jī)配置信息存儲在‘/var/ct’(1004)中。
4.‘/var/ct/dcm’目錄(1006)為分布式配置管理器部件所有。在這個例子中,DCM部件是有較高級目錄存儲它自己的數(shù)據(jù)的唯一部件,這與其他集群部件相反,那些部件把自己的數(shù)據(jù)存儲在集群ID之下的一個目錄中。這是因?yàn)樵谶@一特定實(shí)例中DCM是知道一個節(jié)點(diǎn)能被定義在多于一個集群中的唯一集群部件。
5.在‘/var/ct/dcm/configuration’目錄(1008)中,DCM存儲該節(jié)點(diǎn)被定義的那些集群的清單。在這個目錄中它還存儲該節(jié)點(diǎn)當(dāng)前所屬的集群的ID。這個ID由其他集群部件使用,以確定從哪里讀取本機(jī)配置數(shù)據(jù)。
6.在‘/var/ct/dcm/logs’目錄(1010)中,DCM部件存儲它的運(yùn)行日志,該日志用作檢查跟蹤工具。
7.對于定義了節(jié)點(diǎn)的每個集群,DCM在‘/var/ct’下定義一個目錄,標(biāo)為‘/var/ct/cluster_ID’(1012),這里文字“cluster_ID”用唯一集群標(biāo)識符替換,如下文中解釋的那樣。在這一目錄下,DCM還創(chuàng)建其他四個目錄,其他集群部件能在那里存儲它們的運(yùn)行時鎖1014、運(yùn)行時日志1016、運(yùn)行時核心信息1018以及配置數(shù)據(jù)1020.
除了本機(jī)配置數(shù)據(jù)外,DCM還存儲全局配置數(shù)據(jù)。在服務(wù)器倉庫中存儲的全局配置數(shù)據(jù)包括例如集群定義數(shù)據(jù)結(jié)構(gòu)的拷貝以及節(jié)點(diǎn)定義數(shù)據(jù)結(jié)構(gòu)的一個拷貝。集群數(shù)據(jù)結(jié)構(gòu)和節(jié)點(diǎn)定義數(shù)據(jù)結(jié)構(gòu)的字段值是在一節(jié)點(diǎn)被定義于該集群時設(shè)定的,并應(yīng)該保持一致。在處理過程中,本地?cái)?shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)字段與全局?jǐn)?shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)字段進(jìn)行比較。如果比較產(chǎn)生任何差異,這可能指出該節(jié)點(diǎn)定義在該集群中不再有效。
返回圖8,在啟動DCMD過程之后,DCMD過程啟動系統(tǒng)注冊過程和被作為注冊服務(wù)器節(jié)點(diǎn)配置的那些節(jié)點(diǎn)(步驟1)。這一步驟滿足系統(tǒng)注冊部件的自舉要求。
在步驟2-4中,DCMD守護(hù)程序在例如該集群的全部節(jié)點(diǎn)中啟動生存部件、組服務(wù)部件和資源管理器部件。
然后,在步驟5,系統(tǒng)注冊子系統(tǒng)完成它的初始化第一階段。特別是,它完成提取全局配置數(shù)據(jù)庫的最新近可用拷貝的過程。在這一階段,由DCMD自舉的系統(tǒng)注冊過程交換消息,這些消息含有全局配置數(shù)據(jù)庫的實(shí)體(incarnation)號。然后,系統(tǒng)注冊部件選擇配置數(shù)據(jù)庫的有最高實(shí)體號的拷貝。這些拷貝被允許進(jìn)入部件初始化的第二階段,如下文所述。
在初始化第一階段完成之后,系統(tǒng)注冊部件允許其他部件發(fā)出讀類型操作,這使其他核心集群部件能完成它們的初始化。就是說,在完成第一初始化階段之后,系統(tǒng)注冊子系統(tǒng)現(xiàn)在能向其他集群部件提供全局集群配置數(shù)據(jù)服務(wù)。系統(tǒng)注冊部件允許其它部件讀全局配置數(shù)據(jù),但不允許對全局配置做任何修改。這是因?yàn)閷θ峙渲脭?shù)據(jù)的任何修改都是通過寫操作完成的,而系統(tǒng)注冊部件為完成寫操作對組成員資格功能有依賴性。由于這一原因,修改全局集群配置數(shù)據(jù)的任何操作需要等待系統(tǒng)注冊初始化第二階段完成之后進(jìn)行,見下文的描述。
在步驟6,現(xiàn)在DCMD能從系統(tǒng)注冊讀取全局集群配置數(shù)據(jù)。這樣,在步驟7,能證實(shí)每個節(jié)點(diǎn)中存儲的本機(jī)配置是否與系統(tǒng)注冊中存儲的全局集群配置一致。在這一點(diǎn)DCMD部件尚不能對全局集群配置做任何修改,因?yàn)橄到y(tǒng)注冊尚不能進(jìn)行寫操作。然而,它能確定本機(jī)配置是否與全局集群配置一致,然后繼續(xù)集群自舉過程和啟動其它部件,這將最終滿足其他依賴性,從而使系統(tǒng)注冊本身將能夠完成它的初始化第二階段并成為能寫的。
在步驟8,生存部件讀全局配置數(shù)據(jù)。但首先它需要知道系統(tǒng)注冊服務(wù)器的位置,而那個信息是在本機(jī)集群配置中。這樣,生存部件調(diào)用DCMD以提取這一信息。
在步驟9,在與前一步驟相似的過程中,組服務(wù)部件也從DCMD部件提取本機(jī)集群配置數(shù)據(jù)。
在步驟10,生存子系統(tǒng)通過從系統(tǒng)注冊服務(wù)器讀取全局配置數(shù)據(jù),從而滿足它對全局配置數(shù)據(jù)的依賴性。再有,在步驟11,生存部件現(xiàn)在已經(jīng)滿足了它的全部依賴性并能結(jié)束它的初始化,并使生存功能能被其他集群部件使用。
在步驟12,組服務(wù)部件也能從系統(tǒng)注冊讀取全局配置數(shù)據(jù)?,F(xiàn)在組服務(wù)部件能利用生存部件的生存功能,如步驟13中指出的那樣。
在步驟14,組服務(wù)部件完成它的初始化,并能使組成員資格功能能被其他集群部件使用。
在步驟15,系統(tǒng)注冊部件滿足它對成員資格服務(wù)的要求,這允許系統(tǒng)注冊完成初始化過程的第二階段。在這一階段,使用組服務(wù)部件提供的成員資格服務(wù),那些由第一階段確定為較低實(shí)體號的全局配置數(shù)據(jù)庫拷貝被更新。這允許系統(tǒng)注冊部件結(jié)束它的初始化第二階段,并允許針對全局集群配置發(fā)出寫操作。
在步驟16,現(xiàn)在系統(tǒng)注冊部件結(jié)束它的初始化第二階段。在這一階段完成之后,系統(tǒng)注冊部件能使用成員資格服務(wù)以完成復(fù)制的寫操作,所以允許其他集群部件對它們的全局集群配置數(shù)據(jù)庫進(jìn)行修改。
在步驟17,資源管理器部件從DCMD部件提取本機(jī)配置數(shù)據(jù)。資源管理器部件從系統(tǒng)注冊讀取全局配置數(shù)據(jù)并對其進(jìn)行所希望的任何修改(步驟18)。
再有,在步驟19,資源管理器部件利用組服務(wù)部件的成員服務(wù)以確定它的配置數(shù)據(jù)庫的版本號。現(xiàn)在資源管理器部件已經(jīng)使它的全部數(shù)據(jù)需求和功能需求得到滿足,并且已完成了它的初始化(步驟20)。這樣,資源管理器部件能自舉任何其他配置過的資源控制器(步驟21)。
附加的那些資源控制器從DCMD部件讀取本機(jī)集群配置,從系統(tǒng)注冊讀取全局集群配置(步驟23)。再有,它們完成任何希望的修改。在步驟24,附加資源控制器結(jié)束它們的初始化。
在完成上述自舉過程之后,所有集群部件成為完全可用的部件,而且這些部件的全部數(shù)據(jù)需求和功能需求得到了滿足。
根據(jù)本發(fā)明的至少一個方面,為了管理一個集群,利用了各種定義操作。這些操作包括例如(A)定義集群操作,它創(chuàng)建一個新的集群定義。特別是,創(chuàng)建新的集群標(biāo)識符和新的本機(jī)存儲區(qū)用于在發(fā)出這一操作的節(jié)點(diǎn)中存儲本機(jī)集群配置。這一新的本機(jī)存儲區(qū)位于一個目錄中,該目錄在該目錄路徑中有一個新的集群標(biāo)識符。這一操作還創(chuàng)建一個新的全局存儲區(qū)。DCM部件把發(fā)出這一操作的節(jié)點(diǎn)標(biāo)記為注冊服務(wù)器節(jié)點(diǎn)。還有,在這一過程中,DCM部件自舉該系統(tǒng)注冊過程并創(chuàng)建這里定義過的全局集群數(shù)據(jù)結(jié)構(gòu)(如前文描述的那樣)。
(B)解除集群定義操作用于抹去一個集群定義。它抹去被定義為該集群一部分的所有節(jié)點(diǎn)中的本機(jī)集群定義。它還抹去由系統(tǒng)注冊部件管理的全局集群存儲器的全部拷貝。
(C)修改集群操作用于修改集群定義的屬性。能被修改的一個屬性是集群名。這一屬性能被修改,這是因?yàn)樗槐患翰考趦?nèi)部使用。而正是集群ID被內(nèi)部用于集群的識別。
(D)定義節(jié)點(diǎn)操作用于把一個節(jié)點(diǎn)定義于一個集群。該集群是先前已由定義集群操作建立的。在新定義的節(jié)點(diǎn)中創(chuàng)建一個新的本機(jī)存儲器。還有,由這新的節(jié)點(diǎn)定義去更新存儲在全局存儲區(qū)中的集群定義。
(E)解除節(jié)點(diǎn)定義操作用于從全局集群定義和全局存儲中抹去該節(jié)點(diǎn)定義。它還抹去該節(jié)點(diǎn)中與該特定集群的節(jié)點(diǎn)定義相關(guān)聯(lián)的本機(jī)存儲器。
(F)定義注冊服務(wù)器節(jié)點(diǎn)操作在該集群中把一個特定節(jié)點(diǎn)定義為注冊服務(wù)器節(jié)點(diǎn)。在這一操作之后,DCM部件識別該節(jié)點(diǎn)做為注冊服務(wù)器節(jié)點(diǎn),并在必須和/或希望時自舉該節(jié)點(diǎn)中的注冊服務(wù)器過程。
(G)解除注冊服務(wù)器節(jié)點(diǎn)定義是這樣一個操作,它去掉作為注冊服務(wù)器節(jié)點(diǎn)的節(jié)點(diǎn)定義。在這一操作之后,在那個節(jié)點(diǎn)上不再自舉系統(tǒng)注冊過程。
(H)修改節(jié)點(diǎn)操作在全局集群配置以及本地存儲器中改變一節(jié)點(diǎn)定義的屬性。節(jié)點(diǎn)配置的一個能被改變的屬性是節(jié)點(diǎn)的名稱。
除了各種定義操作外,各種控制操作用于管理集群、節(jié)點(diǎn)以及注冊服務(wù)器。這些操作包括例如(A)在線集群操作,它在節(jié)點(diǎn)中啟動一個過程以便接觸已知被定義于該集群的所有其他節(jié)點(diǎn),并請求它們進(jìn)入在線狀態(tài)。
(B)離線集群操作,它接觸已知被定義于該集群的所有節(jié)點(diǎn),并請求它們進(jìn)入離線狀態(tài)。
(C)節(jié)點(diǎn)在線(加入)操作,它請求DCM過程把該節(jié)點(diǎn)在線移到一特定集群。這一請求使DCM部件啟動一系列行動,這些行動已在前文中的集群自舉過程中描述過。
(D)節(jié)點(diǎn)離線操作,請求一特定節(jié)點(diǎn)離線。這操作請求DCM部件停止該節(jié)點(diǎn)運(yùn)行的所有其他集群部件。
(E)注冊服務(wù)器在線操作,請求DCM部件自舉一特定節(jié)點(diǎn)中的系統(tǒng)注冊過程。
(F)注冊服務(wù)器離線操作,請求DCM部件停止一特定節(jié)點(diǎn)中的系統(tǒng)注冊過程。
為管理一個節(jié)點(diǎn),可以利用上述每個定義操作和控制操作。下文中將更詳細(xì)地描述這些操作中的一個或多個。
如這里描述的那樣,在本發(fā)明的一個方面中,集群體系結(jié)構(gòu)利用唯一標(biāo)識符,它是在一個操作系統(tǒng)實(shí)例(例如一個節(jié)點(diǎn))被定義于該集群時產(chǎn)生的。唯一標(biāo)識符的產(chǎn)生方式使它對于該集群系統(tǒng)的實(shí)現(xiàn)(見圖11)是有意義的。例如,對于單操作系統(tǒng)計(jì)算機(jī)1100,在一實(shí)例中該唯一標(biāo)識符是從系統(tǒng)主板中的只讀存儲器(ROM)存儲的一個號碼導(dǎo)出的。
對于多操作系統(tǒng)計(jì)算機(jī)1102,該操作系統(tǒng)實(shí)例可以恰在該節(jié)點(diǎn)被定義時使用已知的唯一標(biāo)識符產(chǎn)生技術(shù)產(chǎn)生一個唯一標(biāo)識符。
再有,對于具有一塊獨(dú)特硬件的計(jì)算裝置1104,操作系統(tǒng)標(biāo)識是從這單一一塊硬件中導(dǎo)出的。這種實(shí)現(xiàn)在多種應(yīng)用中是有意義的,例如在利用智能卡識別被授權(quán)用戶的裝置的應(yīng)用中。
該標(biāo)識符被存儲在本機(jī)配置存儲器和全局配置數(shù)據(jù)庫二者之中。由于使用了兩類存儲,所以根據(jù)本發(fā)明的一個方面提供了一組規(guī)則,以便在由于任何原因(例如維護(hù)過程)使數(shù)據(jù)脫離序列時協(xié)調(diào)這些數(shù)據(jù)。例如,如果脫離序列的數(shù)據(jù)是該節(jié)點(diǎn)標(biāo)識符,則提供一組規(guī)則去協(xié)調(diào)該標(biāo)識符。下文中將更詳細(xì)地描述這一特定例子。然而,應(yīng)該理解,類似的規(guī)則用于協(xié)調(diào)其他不一致的數(shù)據(jù)。
由于分布式集群系統(tǒng)是一組機(jī)器,每個機(jī)器可能在不同時候與通信網(wǎng)絡(luò)斷開,一個操作系統(tǒng)實(shí)例是在它被定義為個給定集群的節(jié)點(diǎn)時被標(biāo)識的。然而,由于斷電或維護(hù)操作,該操作系統(tǒng)實(shí)例可能停止,而且它應(yīng)該能認(rèn)識它自己作為一個給定集群的成員,如果確曾被這樣定義過的話。這樣,每次一節(jié)點(diǎn)加入該集群時,它檢驗(yàn)?zāi)莻€節(jié)點(diǎn)本機(jī)存儲器中的唯一標(biāo)識符是否與全局標(biāo)識符匹配。
特別是,在一個實(shí)施例中,在基本操作系統(tǒng)的基本自舉過程中由該操作系統(tǒng)讀取該唯一標(biāo)識符。然后,在集群自舉序列開始處該基本操作系統(tǒng)把這唯一標(biāo)識符傳送給分布式配置管理器。該分布式配置管理器又在這唯一標(biāo)識符被定義于該集群時把這唯一標(biāo)識符存儲在全局存儲器1106和本機(jī)存儲器1108中。每當(dāng)分布式配置管理器進(jìn)行把一節(jié)點(diǎn)加入一集群的操作時,它檢驗(yàn)該唯一標(biāo)識符三種不同實(shí)例的有效性(即在自舉序列中由操作系統(tǒng)傳送的標(biāo)識符,這里稱作原始拷貝(UID)1110、本機(jī)存儲(高速緩存)拷貝1108以及全局存儲拷貝1106。
在節(jié)點(diǎn)加入集群的過程中,這三個標(biāo)識符的比較如下1)原始標(biāo)識符與本機(jī)標(biāo)識符比較;以及2)本機(jī)標(biāo)識符與全局標(biāo)識符比較。
這些比較可能產(chǎn)生四種不同的結(jié)果,顯示如下
然后,分布式配置管理器根據(jù)每種情況采取例如下述行動情況1在這種情況,全部三個標(biāo)識符相同,于是節(jié)點(diǎn)定義是正確的。這是正常情況。其他三種情況只是作為操作結(jié)果存在,例如影響節(jié)點(diǎn)定義的維護(hù)操作。
情況2在這種情況中,原始標(biāo)識符等于本機(jī)標(biāo)識符,但本機(jī)標(biāo)識符不同于全局標(biāo)識符。這是在一節(jié)點(diǎn)被刪除而該節(jié)點(diǎn)并未與該集群連接時發(fā)生的,因?yàn)樵摴?jié)點(diǎn)沒有與該集群連接,所以它不能參與節(jié)點(diǎn)刪除過程。所以,本機(jī)數(shù)據(jù)結(jié)構(gòu)不能被更新到該節(jié)點(diǎn)已被刪除時的效果。當(dāng)對節(jié)點(diǎn)上的維護(hù)結(jié)束,該節(jié)點(diǎn)試圖重新加入時,它注意到它自己的刪除,這樣,它能清除本機(jī)數(shù)據(jù)定義以達(dá)到該節(jié)點(diǎn)已從特定集群刪除的效果。
情況3在這種情況中,原始標(biāo)識符不同于本機(jī)標(biāo)識符,但本機(jī)標(biāo)識符與全局標(biāo)識符一致。這樣,例如在維護(hù)操作中該原始標(biāo)識符已被替換。這是在原始標(biāo)識符是從一個硬件資源中得到,而該硬件資源得要被替換時發(fā)生的。這類資源的例子是它們的唯一標(biāo)識符存儲在只讀存儲器(ROM)中的智能卡和母板。如果必須或希望替換存儲原始標(biāo)識符的硬件,那么集群邏輯要把這一情況與情況2和4中的不正確定義區(qū)分開。在這種情況中,本機(jī)的和全局的標(biāo)識符一致,這表明該集群中該節(jié)點(diǎn)的定義仍然有效。所以,所采取的行動是把節(jié)點(diǎn)定義糾正為原始標(biāo)識符已被替換的效果。這樣,分布式配置管理器把本機(jī)的和全局的標(biāo)識符都改變成與新的原始標(biāo)識符一致。
情況4在這種情況下,原始節(jié)點(diǎn)標(biāo)識符不同于本機(jī)標(biāo)識符,而本機(jī)標(biāo)識符不同于全局標(biāo)識符。這樣,該節(jié)點(diǎn)已經(jīng)受到兩個維護(hù)操作。它在該節(jié)點(diǎn)與該集群斷開的情況下被從全局配置中刪除,而且原始標(biāo)識符已被替換。這一情況類似于上述情況2,因?yàn)闆Q定因素是全局配置與本機(jī)存儲器中最后一次高速緩存的值不一致。所以,要采取的行動是清除本機(jī)數(shù)據(jù)定義以達(dá)到該節(jié)點(diǎn)已從該集群刪除的效果。
在一個實(shí)施例中,在某一情況下,例如情況3,分布式集群管理器能進(jìn)行原始標(biāo)識符的自動改正,這是在維護(hù)操作中標(biāo)識該集群的唯一硬件被替換的情況中所希望達(dá)到的效果。這一特性允許例如先前的智能卡丟失時使用新的智能卡。分布式配置管理器還能通過詢問全局?jǐn)?shù)據(jù)庫中的值來識別先前已被定義于該集群的機(jī)器。然而,如情況4中所示,它將不允許把一個新卡用于從未定義于該集群的機(jī)器。這一特性也是希望有的,這是由于集群定義操作是一個顯示操作,要被定義于該集群的任何機(jī)器都可以執(zhí)行。
下面將描述關(guān)于維持?jǐn)?shù)據(jù)一致性的進(jìn)一步細(xì)節(jié),這種一致性用于可靠地把一個節(jié)點(diǎn)定義為一個集群系統(tǒng)的成員和加入一個集群。
由于對本機(jī)配置和全局集群配置數(shù)據(jù)庫二者進(jìn)行改變,還由于在這兩個倉庫中的數(shù)據(jù)要保持一致,所以諸如節(jié)點(diǎn)定義操作等操作是以原子方式進(jìn)行的(即該操作或者是進(jìn)行完畢或者是被放棄)。如果該操作被放棄,則在這兩個倉庫中的數(shù)據(jù)回復(fù)到與該集群結(jié)構(gòu)一致的狀態(tài)。這考慮到一個節(jié)點(diǎn)可能被定義和解除定義若干次,而且當(dāng)發(fā)生解除定義操作時該節(jié)點(diǎn)可能從該集群斷開。
為了迫使對一集群的節(jié)點(diǎn)定義具有一致性,節(jié)點(diǎn)定義操作讓節(jié)點(diǎn)本身參與到節(jié)點(diǎn)定義協(xié)議中。在這一操作過程中,節(jié)點(diǎn)的唯一標(biāo)識符與節(jié)點(diǎn)號相關(guān)聯(lián),該節(jié)點(diǎn)號對于要定義該節(jié)點(diǎn)的特定集群也是唯一的,然而在全部若干個集群上該節(jié)點(diǎn)號不是唯一的。這樣,當(dāng)把節(jié)點(diǎn)池用于多集群布署(下文描述)時,一個節(jié)點(diǎn)可能以相同或不同的節(jié)點(diǎn)號定義于每個集群中。然而,在這一實(shí)施例中,在任何特定時刻一個節(jié)點(diǎn)只能在一個集群中是在線(有效)的。
節(jié)點(diǎn)號標(biāo)識符是一個內(nèi)部標(biāo)識符,集群利用它認(rèn)識該節(jié)點(diǎn)。在一個例子中,節(jié)點(diǎn)定義過程確保給定的節(jié)點(diǎn)號與原來以特定唯一標(biāo)識符定義的操作系統(tǒng)的一個實(shí)例相關(guān)聯(lián)。將參考圖12和13中描繪的例子描述節(jié)點(diǎn)定義過程的進(jìn)一步細(xì)節(jié)。
參考圖12,有三個過程(例如計(jì)算機(jī)程序)參與節(jié)點(diǎn)定義過程系統(tǒng)注冊服務(wù)器過程1200(圖12),它位于一個集群1204的被定義為注冊服務(wù)器的一個或多個節(jié)點(diǎn)1202中;分布式配置管理器1206,它在發(fā)出節(jié)點(diǎn)定義請求1208的節(jié)點(diǎn)上運(yùn)行,或者在該操作路由指向的節(jié)點(diǎn)上運(yùn)行(即成員DCM過程);以及分布式配置管理器1210,它在正被添加到該集群的節(jié)點(diǎn)上運(yùn)行(即非成員DCM)。這三個過程參與到定義協(xié)議中,如下文中參考圖13描述的那樣。
在步驟1,一個定義節(jié)點(diǎn)請求被傳送到成員DCM過程。在一個例子中,與該請求一起被傳送的是要被定義的節(jié)點(diǎn)的節(jié)點(diǎn)(例如IP)的地址。唯一節(jié)點(diǎn)標(biāo)識符、節(jié)點(diǎn)號和節(jié)點(diǎn)名也可作為任選參數(shù)被傳送。如果沒有顯示設(shè)置,則由成員DCM過程產(chǎn)生唯一標(biāo)識符、節(jié)點(diǎn)號以及節(jié)點(diǎn)名之值。
在步驟1中得到的節(jié)點(diǎn)地址被成員DCM用于接觸非成員DCM過程(步驟2)。在這一消息中,成員DCM過程把集群標(biāo)識符傳送給非成員DCM過程。
在步驟3,非成員DCM過程接收要被定義為該集群成員的請求,它由被接收到的集群標(biāo)識符來識別。非成員DCM核實(shí)它尚沒有由唯一集群標(biāo)識符標(biāo)識的本機(jī)配置。(在上文討論的某些情況中,該節(jié)點(diǎn)有一個舊的定義是可能的。)非成員DCM以它自己的唯一標(biāo)識符應(yīng)答這一請求,該唯一標(biāo)識符是由主機(jī)操作系統(tǒng)傳送的。在這一應(yīng)答中還包括一個狀態(tài)代碼,它指明在本機(jī)存儲器中是否發(fā)現(xiàn)了那個集群ID的先前定義。
成員DCM接收來自非成員DCM的應(yīng)答(步驟4),它含有該非成員DCM節(jié)點(diǎn)的唯一標(biāo)識符。成員DCM存儲這個值,并核實(shí)該節(jié)點(diǎn)標(biāo)識符是否被報告存在全局存儲器中(步驟5)。例如,成員DCM對系統(tǒng)注冊過程提出查詢請求,以發(fā)現(xiàn)該集群以該特定唯一村標(biāo)識符定義的任何節(jié)點(diǎn)。系統(tǒng)注冊以一個消息應(yīng)答,該消息包含與步驟4中傳送的唯一節(jié)點(diǎn)標(biāo)識符相對應(yīng)的可能節(jié)點(diǎn)定義,或者以一個返回代碼應(yīng)答,該返回代碼表明不存在這種定義(步驟6)。
在步驟7,成員DCM接收上述消息。如果發(fā)現(xiàn)了這樣的定義,則成員DCM核實(shí)這一定義是否與非成員DCM報告的定義相同。如果這些定義相同,則向該節(jié)點(diǎn)定義請求者回送一個消息,告知該非成員節(jié)點(diǎn)已被定義于該集群(該定義節(jié)點(diǎn)請求被錯誤發(fā)出,而且在這一情況中“非成員”標(biāo)簽是不適當(dāng)?shù)?。如果這兩個定義不同,則刪除本機(jī)的和全局的定義二者,于是繼續(xù)定義節(jié)點(diǎn)過程。剩下的可能性是非成員節(jié)點(diǎn)報告一個在全局集群配置中不能找到的本機(jī)定義。在這種情況中,如同兩個定義不匹配的情況那樣,非成員DCM被請求抹掉先前的定義。
在步驟8,成員DCM請求系統(tǒng)注冊為該新節(jié)點(diǎn)建立一個條目,向該條目傳送當(dāng)初在步驟1中給出的唯一節(jié)點(diǎn)標(biāo)識符、節(jié)點(diǎn)號和節(jié)點(diǎn)地址。系統(tǒng)注冊把上述條目提交給全局集群配置并向成員DCM回送一個消息,告知操作成功(步驟9)。
在步驟10,成員DCM接收上述消息。如果該操作是不成功的,則節(jié)點(diǎn)定義過程被放棄,并向節(jié)點(diǎn)定義請求者回送一個消息告知過程失敗。否則,該過程繼續(xù)?,F(xiàn)在成員DCM請求非成員DCM向本機(jī)存儲器提交新的節(jié)點(diǎn)定義,并抹掉任何先前的定義(如果這樣做適當(dāng)?shù)脑?(步驟11)。
在步驟12,非成員DCM完成上述請求,并向成員DCM回送一個消息告知所請求的操作成功。成員DCM接收這一消息(步驟13)。如果非成員DCM報告的結(jié)果是一個失敗,則成員DCM放棄該定義操作,并向節(jié)點(diǎn)定義操作請求者報告失敗。該成員DCM還試圖抹掉在步驟8中造成的全局存儲器中的定義。否則,過程繼續(xù)。
成員DCM過程已經(jīng)成功地完成了節(jié)點(diǎn)定義操作,現(xiàn)在向請求者回送一個消息,指出該操作成功(步驟14)。
在把一個節(jié)點(diǎn)定義于一個集群之后,通過利用例如本發(fā)明的自動集群配置技術(shù),該節(jié)點(diǎn)能被插入(加入)該集群,無需系統(tǒng)管理員方面采取任何附加行動。這一技術(shù)可以在例如節(jié)點(diǎn)定義之后立即啟動,或者在發(fā)出節(jié)點(diǎn)在線請求時啟動。
參考圖14和15來描述自動集群配置技術(shù)的一個實(shí)施例。具體地說,圖14描繪該技術(shù)所用各種過程的一個例子,圖15描繪各過程之間消息流的一個實(shí)例。
參考圖14,按照例如節(jié)點(diǎn)在線請求1400的需求把該新節(jié)點(diǎn)配置到該集群的行動是由新節(jié)點(diǎn)1404上的DCM過程1402協(xié)調(diào)的。這是因?yàn)樵谠摴?jié)點(diǎn)第一次加入該集群之前該集群中的其他過程沒有關(guān)于該節(jié)點(diǎn)配置的任何知識。
在節(jié)點(diǎn)定義的時候,在新節(jié)點(diǎn)和集群之間只交換最少量數(shù)據(jù)(圖15的步驟1)。所交換的數(shù)據(jù)涉及保證新節(jié)點(diǎn)有唯一標(biāo)識符以及引入注冊服務(wù)器清單1406。本機(jī)標(biāo)識符/節(jié)點(diǎn)號碼對與全局倉庫的標(biāo)識符/節(jié)點(diǎn)對進(jìn)行比較。當(dāng)這一比較成功時,能著手進(jìn)行加入。
當(dāng)該新節(jié)點(diǎn)被請求加入該集群(圖15的步驟2)時,在新節(jié)點(diǎn)上的DCM過程請求該新節(jié)點(diǎn)中的資源管理器1408(圖15的步驟3)向資源控制器1410發(fā)送一個消息(圖15的步驟4)以把它們的配置寫入系統(tǒng)注冊1412中。每次節(jié)點(diǎn)加入集群時都重復(fù)這一過程,還允許進(jìn)行節(jié)點(diǎn)配置的自動更新。
然后,資源控制器以它們控制的資源(例如硬件)的配置去更新系統(tǒng)注冊(圖15的步驟5),并通知新節(jié)點(diǎn)上的資源管理器(圖15的步驟6)更新完成。然后,當(dāng)資源管理器收到注冊于它的資源控制器的這一操作完成狀態(tài)時,資源管理器過程通知DCM(圖15的步驟8)。
在新節(jié)點(diǎn)上的DCM過程接收(圖15的步驟9)來自資源管理器的更新完成通告,并繼續(xù)進(jìn)行加入過程。
在一個并行的行動中,在集群1416上的系統(tǒng)注冊過程1414發(fā)送一個能由事件訂戶接收的一個事件(圖15的步驟7),其效果是告知該配置已被更新。在第一次向該集群添加一節(jié)點(diǎn)的情況中,這一事件使其他集群部件有可能認(rèn)識該新節(jié)點(diǎn)作為集群成員。
上述過程允許一節(jié)點(diǎn)自己配置成該集群的成員,無需來自系統(tǒng)管理員的任何信息。在一個例子中,管理員只向該節(jié)點(diǎn)定義過程提供一個節(jié)點(diǎn)地址。在節(jié)點(diǎn)定義過程中,注冊服務(wù)器清單被送入到新節(jié)點(diǎn)中。當(dāng)新節(jié)點(diǎn)被請求加入該集群時,它使用這個注冊服務(wù)器清單尋找正在工作的系統(tǒng)注冊過程。然后,在新節(jié)點(diǎn)上的那些資源控制器被請求發(fā)現(xiàn)它們控制的資源的配置,并把這一信息寫入全局集群配置數(shù)據(jù)庫。(資源控制器是一些過程,是為特定資源寫的,它們知道如何發(fā)現(xiàn)它們的配置)。有利的是,這一操作由新節(jié)點(diǎn)啟動,無需系統(tǒng)管理員人工提供這一信息。
在一例子中,每次一個節(jié)點(diǎn)加入集群時都要重復(fù)上述過程,以保證節(jié)點(diǎn)的配置與全局倉庫的一致。例如,這一過程允許系統(tǒng)管理員把一節(jié)點(diǎn)與集群斷開,增加某些硬件(例如新的通信適配器),改變節(jié)點(diǎn)的配置,然后再把它連到該集群,當(dāng)節(jié)點(diǎn)從集群離線時,無需將所做的任何變化通知集群。
根據(jù)本發(fā)明的至少一個方面,一個計(jì)算環(huán)境允許在其中定義一個或多個集群。例如,一個計(jì)算環(huán)境1600(圖16)包括集群A1602和集群B1604。每個集群有一個或多個被定義于它的節(jié)點(diǎn)1606。再有,一個或多個節(jié)點(diǎn)可以定義于這兩個集群,如圖16中所示。
每個集群有一個或多個注冊服務(wù)器與其關(guān)聯(lián)。例如,集群A有若干注冊服務(wù)器1608并且集群B有若干注冊服務(wù)器1610。注冊服務(wù)器1608包括一個或多個服務(wù)器節(jié)點(diǎn)1612。類似地,注冊服務(wù)器1610包括一個或多個服務(wù)器節(jié)點(diǎn)1614。一組注冊服務(wù)器的一個或多個服務(wù)器節(jié)點(diǎn)能覆蓋另一組注冊服務(wù)器的一個或多個節(jié)點(diǎn)。
在本發(fā)明的又一方面中,一個節(jié)點(diǎn)能被迅速地從一個集群移到另一個集群。這種能力使得有可能在任何給定的時刻在一集群經(jīng)受的工作負(fù)荷當(dāng)中移動節(jié)點(diǎn)。例如,考慮一個企業(yè),它有一組節(jié)點(diǎn)要用于兩個不同的應(yīng)用,例如萬維網(wǎng)服務(wù)和數(shù)據(jù)庫服務(wù)。使用本發(fā)明的集群技術(shù),該企業(yè)便能定義兩個集群,集群A和集群B,每個專用于一個應(yīng)用?,F(xiàn)在,假定這些應(yīng)用中的工作負(fù)荷隨每日的時間而變化,其中在白天萬維網(wǎng)服務(wù)器更活躍,而在夜間數(shù)據(jù)庫服務(wù)更活躍。該企業(yè)在集群B的負(fù)荷較大時會希望把少數(shù)節(jié)點(diǎn)從集群A移到集群B中,反之亦然。
在傳統(tǒng)的集群系統(tǒng)中,系統(tǒng)管理員首先得要使集群A中的節(jié)點(diǎn)離線,然后解除集群A中該節(jié)點(diǎn)的定義,然后把它定義于集群B(通常需要大量的人工配置),然后移動集群B中的這個節(jié)點(diǎn)在線。傳統(tǒng)的系統(tǒng)涉及人工干預(yù)而且很費(fèi)時間。當(dāng)考慮工作負(fù)荷平衡的應(yīng)用時,在移動節(jié)點(diǎn)的過程中花費(fèi)的時間是很重要的,因?yàn)橥ǔ9ぷ髫?fù)荷是一個很動態(tài)性的度量,它不僅如本例中那樣在夜晚和白天之間改變,而且以分鐘改變。這樣,把一個節(jié)點(diǎn)從一個集群移到另一個集群的操作要非常快,以在工作負(fù)荷平衡的應(yīng)用中有價值。
所以,根據(jù)本發(fā)明的一個方面,通過允許重疊集群定義,一個節(jié)點(diǎn)能迅速地從一個集群移動到另一個集群。就是說,允許一個節(jié)點(diǎn)被定義在多于一個集群,盡管在一個實(shí)施例中在任何特定時刻它只在單個集群中活動。
當(dāng)一個節(jié)點(diǎn)被定義于一個集群時,DCM造成一個特殊存儲區(qū),在那里保持該節(jié)點(diǎn)剛被定義于的集群的本機(jī)配置。DCM部件把本機(jī)集群配置存儲在這一本機(jī)存儲區(qū)。在存儲于這一本機(jī)集群配置中的值當(dāng)中有例如集群名、集群ID、節(jié)點(diǎn)名、節(jié)點(diǎn)ID以及用于該特定集群的注冊服務(wù)器清單。作為又一個例子,DCM還在本機(jī)存儲器中保持下述兩個字段,當(dāng)前集群指針,它包含一個節(jié)點(diǎn)當(dāng)前在線的那個集群的標(biāo)識符(ID);以及一個目標(biāo)集群指針,它包括該節(jié)點(diǎn)要移動去的集群的ID。
這些指針的值只是在把節(jié)點(diǎn)從一個集群移動到另個集群的過程中是不同的。為了能把一個節(jié)點(diǎn)移動到某一集群,那個集群至少有一個注冊服務(wù)器是在線的。為了移動一個節(jié)點(diǎn),該DCM把目標(biāo)集群指針指向該節(jié)點(diǎn)要加入的那個集群,然后把一個刷新信號發(fā)送到在正要移動的節(jié)點(diǎn)中運(yùn)行的其他集群部件。當(dāng)一部件收到該刷新信號時,該部件刷新它的配置,即再次從全局集群倉庫中讀取它的配置。為了到達(dá)該倉庫,這些部件提取定義于該特定集群的注冊服務(wù)器的清單。提取要移動的節(jié)點(diǎn)中的注冊服務(wù)器清單的過程利用目標(biāo)集群指針,以確定要使用哪個清單,如下文所述。
下面參考圖17和18描述與一節(jié)點(diǎn)從一個集群移動到另一個集群相關(guān)聯(lián)的邏輯的一個實(shí)施例。圖17中的點(diǎn)線箭頭指出系統(tǒng)部件與集群A的配置(本機(jī)的和全局的)之間先前的連接。在移動過程中,這些箭頭由指向集群B配置的實(shí)箭頭取代。
在步驟1(圖18),把一節(jié)點(diǎn)移動到一個不同集群的請求1700(圖17)被發(fā)送到要移動的節(jié)點(diǎn)上的DCM過程1702。該DCM過程接收這一要移動節(jié)點(diǎn)的請求(圖18中的步驟2),并改變目標(biāo)集群指針的值,以使它含有該節(jié)點(diǎn)到移動去的那個集群的集群ID。在要移動的節(jié)點(diǎn)上的DCM過程向在該節(jié)點(diǎn)上運(yùn)行的其他集群部件1706發(fā)送刷新消息(圖18的步驟3)。
其他集群部件提取注冊服務(wù)器清單1708(圖18的步驟4),以使它們能讀取全局集群配置1710。這一清單是用映射提取的,該映射把存儲在目標(biāo)集群指針中的集群ID與那個特定集群的注冊服務(wù)器清單關(guān)聯(lián)起來。然后,其他集群部件使用前一步驟中接收的注冊服務(wù)器清單中列出的一個注冊服務(wù)器,請求存儲在全局注冊中的它們的特定配置(圖18中的步驟5)。
注冊服務(wù)器向要移動的節(jié)點(diǎn)中的其他集群部件提供它們的適當(dāng)配置以在目標(biāo)集群中發(fā)揮它們的作用(圖18中的步驟6)。在要移動的節(jié)點(diǎn)上的其他集群部件通知DCM過程(圖18中的步驟7)它們已完成了移動操作,而且它們現(xiàn)在是在線于目標(biāo)集群中。
DCM現(xiàn)在改變(圖18中的步驟8)當(dāng)前集群的值,以反映該節(jié)點(diǎn)已被成功地移動到另一集群這一事實(shí)。否則,如果任何集群部件沒能完成刷新操作,那么DCM把該節(jié)點(diǎn)移回到當(dāng)前集群指針的先前值,還回復(fù)目標(biāo)集群指針的值,并重發(fā)刷新消息,其效果是取消該移動的影響。接下來,DCM過程通知(圖18中的步驟9)移動操作的請求者該操作的結(jié)局。
當(dāng)所有部件向DCM回報它們結(jié)束了刷新操作并成功地在集群B中在線時,當(dāng)前集群指針被移到指向集群B。如果由于任何原因該節(jié)點(diǎn)不能加入集群B,則它返回到當(dāng)前集群指針中給出名字的集群。
上述過程使得有可能很快地把一個節(jié)點(diǎn)從一個集群移動到另一個集群。這種快速移動成為可能是由于這一體系結(jié)構(gòu)允許一個節(jié)點(diǎn)被定義在多個集群中。
集群體系結(jié)構(gòu)的各部件發(fā)送和接收消息,并總體上引起系統(tǒng)通信量。這里使用術(shù)語“系統(tǒng)通信”用于指由集群邏輯本身產(chǎn)生的網(wǎng)絡(luò)通信量,而不是服務(wù)通信量,服務(wù)通信量是由集群系統(tǒng)中運(yùn)行的應(yīng)用產(chǎn)生的通信量。例如,系統(tǒng)通信量包括由生存子系統(tǒng)產(chǎn)生的網(wǎng)絡(luò)通信量,它周期性地向每個節(jié)點(diǎn)上它的同類發(fā)送確認(rèn)消息。又一個例子包括由系統(tǒng)注冊部件產(chǎn)生的網(wǎng)絡(luò)通信量,它向其他部件發(fā)送該集群的全局配置。在集群系統(tǒng)的典型部署中,利用多于一個互連的網(wǎng)絡(luò),造成節(jié)點(diǎn)間的多個通信路徑。這樣,便希望向系統(tǒng)管理員提供一個工具,用于把系統(tǒng)通信量限定于特定通信路徑,以使它不干擾該系統(tǒng)中運(yùn)行的其他應(yīng)用。
根據(jù)本發(fā)明的一個方面,為了控制由集群邏輯產(chǎn)生的網(wǎng)絡(luò)通信量,該集群體系結(jié)構(gòu)定義多個網(wǎng)絡(luò)對象。每個產(chǎn)生網(wǎng)絡(luò)通信量的集群部件指定對這種通信量所用網(wǎng)絡(luò)對象的偏好。例如,一個集群可能包括一個或多個網(wǎng)絡(luò),其中每個網(wǎng)絡(luò)包括一個或多個子網(wǎng),而每個子網(wǎng)包括一個或多個節(jié)點(diǎn)。
如前所述,由定義節(jié)點(diǎn)操作把一節(jié)點(diǎn)定義于一個集群。類似地,由定義子網(wǎng)操作定義一個子網(wǎng)對象。一個子網(wǎng)可由DCM過程穩(wěn)式定義,如果它收到在該集群中已發(fā)現(xiàn)一個新的適配器而該適配器的節(jié)點(diǎn)地址尚未被映射到任何現(xiàn)存的子網(wǎng)對象的話。再有,解除子網(wǎng)定義操作從全局集群配置中刪除子網(wǎng)定義;而修改子網(wǎng)操作修改子網(wǎng)定義的屬性。能被修改的屬性包括例如子網(wǎng)名以及子網(wǎng)被映射到的網(wǎng)絡(luò)的定義。
類似地,定義網(wǎng)絡(luò)操作建立網(wǎng)絡(luò)定義,該網(wǎng)絡(luò)定義被映射到一個或多個子網(wǎng)定義;而解除網(wǎng)絡(luò)定義操作從全局集群數(shù)據(jù)庫中抹去網(wǎng)絡(luò)定義。再有,修改網(wǎng)絡(luò)操作用于修改一個網(wǎng)絡(luò)定義的屬性。能被改變的屬性之一是例如網(wǎng)絡(luò)名。
如下文所述,每個節(jié)點(diǎn)、子網(wǎng)和網(wǎng)絡(luò)由至少一個相應(yīng)的數(shù)據(jù)結(jié)構(gòu)定義。這些數(shù)據(jù)結(jié)構(gòu)被存儲在例如全局倉庫中。
在一個實(shí)施例中,每個節(jié)點(diǎn)由一個或多個節(jié)點(diǎn)地址定義數(shù)據(jù)結(jié)構(gòu)來代表。在一個例子中,節(jié)點(diǎn)地址定義數(shù)據(jù)結(jié)構(gòu)1900(圖19)包括一個唯一標(biāo)識符1902,它用作節(jié)點(diǎn)地址數(shù)據(jù)定義的主鍵字段,如這里描述的那樣,它是在創(chuàng)建節(jié)點(diǎn)地址對象時產(chǎn)生的;節(jié)點(diǎn)地址1904(下文將進(jìn)一步描述),它包括一個用于達(dá)到該節(jié)點(diǎn)的節(jié)點(diǎn)接口的節(jié)點(diǎn)地址;一個子網(wǎng)掩碼1906,它用于把節(jié)點(diǎn)地址映射到該集群系統(tǒng)的一個特定子網(wǎng);以及一個節(jié)點(diǎn)號1908,它包括與字段1904中的節(jié)點(diǎn)地址相關(guān)聯(lián)的節(jié)點(diǎn)號。
節(jié)點(diǎn)地址是次級鍵字段,它也是唯一的。節(jié)點(diǎn)地址是唯一的,因?yàn)榉植际脚渲霉芾砥?DCM)部件不允許定義有相同節(jié)點(diǎn)地址的兩個節(jié)點(diǎn)地址。在這里描述的例子中,這些地址是因特網(wǎng)協(xié)議(IP)地址,因?yàn)樵诒景l(fā)明各方面的一個特定實(shí)現(xiàn)中,因特網(wǎng)協(xié)議被用作節(jié)點(diǎn)間通信的手段。然而,本領(lǐng)域技術(shù)人員會理解,能利用任何其他通信協(xié)議。在任何情況中,對每個節(jié)點(diǎn)必須標(biāo)識出至少一個地址,以便能使用選定的協(xié)議達(dá)到該節(jié)點(diǎn)。如果利用了多于一個通信協(xié)議,則協(xié)議類型可以是節(jié)點(diǎn)地址定義的附加字段。
根據(jù)本發(fā)明的一個方面,每個節(jié)點(diǎn)地址定義被映射到子網(wǎng)定義,下面參考圖20描述子網(wǎng)定義數(shù)據(jù)結(jié)構(gòu)的一個例子。
作為一個例子,子網(wǎng)定義數(shù)據(jù)結(jié)構(gòu)2000包括例如唯一標(biāo)識符2002,它提供子網(wǎng)定義的唯一性;子網(wǎng)前綴2004,在這一具體實(shí)現(xiàn)中它包括標(biāo)識子網(wǎng)前綴的節(jié)點(diǎn)地址;子網(wǎng)掩碼2006,它是一個二進(jìn)制位掩碼,表明子網(wǎng)前綴中有多少二進(jìn)制位是相關(guān)聯(lián)的;以及網(wǎng)絡(luò)名2008,它把子網(wǎng)定義映射到一個現(xiàn)存的網(wǎng)絡(luò)定義。
在這里描述的例子中,子網(wǎng)對象是從IP協(xié)議要求它們計(jì)算機(jī)互連的方式中導(dǎo)出的。例如,在一個IP網(wǎng)絡(luò)中,節(jié)點(diǎn)以IP地址和子網(wǎng)掩碼來配置的。連到同一子網(wǎng)的所有節(jié)點(diǎn)應(yīng)有帶相同前綴的地址,該前綴的長度由子網(wǎng)掩碼確定。這里顯示的實(shí)現(xiàn)使用IP網(wǎng)絡(luò)的這一方面把節(jié)點(diǎn)地址分組;在這種情況中,每組包括的節(jié)點(diǎn)處在同一子網(wǎng)中。這些子網(wǎng)已被映射到網(wǎng)絡(luò)定義中,于是通過修改網(wǎng)絡(luò)對象的參數(shù)來控制集群通信量的路由,如下文描述的那樣。
圖21中描繪了網(wǎng)絡(luò)定義數(shù)據(jù)結(jié)構(gòu)的一個例子。網(wǎng)絡(luò)定義數(shù)據(jù)結(jié)構(gòu)2100包括例如唯一標(biāo)識符2102,它提供網(wǎng)絡(luò)定義的唯一性;網(wǎng)絡(luò)名2104,它用于把子網(wǎng)對象映射到網(wǎng)絡(luò)對象;以及服務(wù)路由表2106,它是一個值表,用于確定使用哪個網(wǎng)絡(luò)傳送各種集群服務(wù)請求。該服務(wù)路由表包括例如產(chǎn)生系統(tǒng)通信量的那些集群部件的名字,以及把那個網(wǎng)用于這種服務(wù)的優(yōu)先級。
例如,一個集群可能以三個網(wǎng)絡(luò)對象來定義,名為A、B、C。假定一個集群部件想要從系統(tǒng)注冊讀取全局配置。它首先檢索那個特定集群的注冊服務(wù)器清單。在這一例子中,該清單包括三個地址,它們有標(biāo)簽1、2和3。然后,它根據(jù)系統(tǒng)管理員設(shè)定的優(yōu)先級選擇使用哪個地址。然后這一部件遵循下述映射,該映射把一服務(wù)節(jié)點(diǎn)地址(它被列入注冊服務(wù)器清單中)映射到一個網(wǎng)絡(luò)對象。
在這一例子中,地址1映射到網(wǎng)絡(luò)A,地址2映射到網(wǎng)絡(luò)B,而地址3映射到網(wǎng)絡(luò)C?,F(xiàn)在,該部件讀取存儲在每個網(wǎng)絡(luò)對象的服務(wù)路由表中的優(yōu)先級值,該值是針對它要使用的服務(wù)(例如系統(tǒng)注冊)。這些值是由系統(tǒng)管理員根據(jù)他或她對那個系統(tǒng)的偏好來設(shè)定的。在這個例子中,假定系統(tǒng)注冊優(yōu)先級的值在網(wǎng)絡(luò)A中是3,在網(wǎng)絡(luò)B中是2,而在網(wǎng)絡(luò)C中是1。在網(wǎng)絡(luò)A中發(fā)現(xiàn)了最高優(yōu)先級號,所以,該部件試圖首先使用映射到網(wǎng)絡(luò)A的地址(標(biāo)簽為1,見上述)來達(dá)到系統(tǒng)注冊部件。然后,如果這失敗了,則該部件試圖使用映射到網(wǎng)絡(luò)B的地址,最后是映射到網(wǎng)絡(luò)C的地址。
下面參考圖22中描繪的例子,進(jìn)一步詳細(xì)描述集群服務(wù)的一個客戶機(jī)選擇一個服務(wù)的特定地址所采取的方式。
在一個實(shí)施例中,最初,客戶機(jī)提取存在服務(wù)的可能地址的一個清單(圖22中的步驟2200)。對每種服務(wù),提取地址清單的方式是不同的。在系統(tǒng)注冊的情況中,注冊服務(wù)器節(jié)點(diǎn)的清單是從本機(jī)配置文件中提取出來的。其他服務(wù)可以在例如全局集群配置中公布節(jié)點(diǎn)地址清單。
在得到節(jié)點(diǎn)地址清單之后,該客戶機(jī)查找存儲在全局集群配置中的節(jié)點(diǎn)地址定義數(shù)據(jù)結(jié)構(gòu)中的每個節(jié)點(diǎn)地址。對于每個地址,該客戶機(jī)進(jìn)行節(jié)點(diǎn)地址和子網(wǎng)掩碼的邏輯“與”(AND)操作(見圖23),以得到每個地址的子網(wǎng)ID(圖22中的步驟2202)。
其后,該客戶機(jī)提取每個地址的子網(wǎng)對象(步驟2204),對每個子網(wǎng)對象,該客戶機(jī)提取與該子網(wǎng)關(guān)聯(lián)的網(wǎng)絡(luò)名(步驟2206)。
接下來,該客戶機(jī)提取這些服務(wù)地址映射到的每個網(wǎng)絡(luò)(步驟2208)。然后從服務(wù)路由表(它存儲在每個網(wǎng)絡(luò)對象中)中讀取服務(wù)優(yōu)先級號(步驟2210)。然后,該客戶根據(jù)系統(tǒng)管理員在網(wǎng)絡(luò)對象中設(shè)置的優(yōu)先級對節(jié)點(diǎn)地址清單排序(步驟2212)。
其后,該客戶機(jī)試圖按優(yōu)先級順序接觸服務(wù)(步驟2214)。
上述技術(shù)向集群管理員提供了一種機(jī)制,該機(jī)制包含與服務(wù)特定網(wǎng)絡(luò)的特定服務(wù)類型相關(guān)聯(lián)的通信量。該技術(shù)提供了以對管理員有意義的方式進(jìn)行的網(wǎng)絡(luò)通信量控制。應(yīng)該指出,客戶機(jī)提取這一服務(wù)的節(jié)點(diǎn)地址清單。最初,這一清單是無序的,因?yàn)檫@一清單是由該服務(wù)本身公布的。在上述例子中,正是系統(tǒng)注冊利用DCM部件公布它的節(jié)點(diǎn)地址清單。然而,系統(tǒng)注冊尚不知網(wǎng)絡(luò)結(jié)構(gòu)或系統(tǒng)管理員的偏好,所以不能提供有序的清單。這樣,如上述映射指出的那樣,系統(tǒng)管理員能把子網(wǎng)對象賦予網(wǎng)絡(luò)對象。
系統(tǒng)管理器做出的改變影響映射到已被去掉的子網(wǎng)的全部地址的服務(wù)優(yōu)先級賦值。這一操作被局部化到能被其他部件理解的子網(wǎng)表中的改變。這一工具提供了一個控制中心點(diǎn),系統(tǒng)管理員能以它控制該集群系統(tǒng)所有部件的系統(tǒng)通信量。
上文是根據(jù)系統(tǒng)管理員設(shè)定的優(yōu)先級對服務(wù)地址清單排序的一種技術(shù)。然而,在某些情況中,系統(tǒng)管理員可能利用沒有優(yōu)先級偏好的等價網(wǎng)絡(luò)。在這種情況中,希望例如按照到客戶機(jī)的接近程度(根據(jù)路由步數(shù)或跳接次數(shù))來對服務(wù)地址清單排序。在標(biāo)準(zhǔn)的IP協(xié)議中,從一特定子網(wǎng)發(fā)送的數(shù)據(jù)報將只達(dá)到那個特定子網(wǎng)中的節(jié)點(diǎn),如果它未被確定路線的話。為了使該數(shù)據(jù)報達(dá)到其他節(jié)點(diǎn),它要被確定路線(即,它通過一個路由器或分組交換節(jié)點(diǎn),它與發(fā)出數(shù)據(jù)報的子網(wǎng)相連,還與目標(biāo)網(wǎng)絡(luò)或另一個路由器或路由器序列相連,它們當(dāng)中的一個能訪問目標(biāo)網(wǎng)絡(luò)。)通過分組交換節(jié)點(diǎn)引導(dǎo)分組路由的步驟稱作跳接(hop)。與跳接關(guān)聯(lián)的是性能的損耗,因?yàn)榉纸M交換操作使目標(biāo)子網(wǎng)中接收分組減慢。
所以,當(dāng)系統(tǒng)管理員對利用集群網(wǎng)絡(luò)提供特定服務(wù)不設(shè)定任何優(yōu)先級偏好時,根據(jù)一個數(shù)據(jù)報在從服務(wù)器到客戶機(jī)的路由中將要遭遇的跳接最少次數(shù)對清單排序是有利的。再有,如果有多于一個服務(wù)器與客戶機(jī)等距離(即,如果能使用完全相同的跳接數(shù)達(dá)到多于一個服務(wù)器的話),那么,對每個客戶機(jī)有不同的排序清單,從而使服務(wù)負(fù)荷均等地分布于等距離服務(wù)器當(dāng)中,這是有利的。
下述技術(shù)提供一種工具,利用它可根據(jù)減小距離和平衡負(fù)載判據(jù)對服務(wù)地址清單排序。當(dāng)DCM在每個節(jié)點(diǎn)中存儲注冊服務(wù)器清單時(在系統(tǒng)管理員尚未為集群網(wǎng)絡(luò)的利用設(shè)置任何優(yōu)先級的情況中),DCM利用這一技術(shù)。如下所述,這一技術(shù)利用客戶機(jī)到服務(wù)器的距離,以及把工作負(fù)荷在服務(wù)器之間均等分布的映射。工作負(fù)荷分布是基于一個公式,該公式是從每個子網(wǎng)中節(jié)點(diǎn)總數(shù)、從每個節(jié)點(diǎn)的單個節(jié)點(diǎn)號以及從等距離服務(wù)器數(shù)導(dǎo)出的。
參考圖24描述一個邏輯的實(shí)施例,該邏輯用于產(chǎn)生集群中的特定節(jié)點(diǎn)為達(dá)到特定的服務(wù)所使用的有序地址清單。在一個例子中,這一技術(shù)的輸入?yún)?shù)包括用于特定服務(wù)的地址清單;它將是該特定服務(wù)客戶機(jī)的節(jié)點(diǎn)的節(jié)點(diǎn)號;在那個節(jié)點(diǎn)上存在的任何通信接口的地址(節(jié)點(diǎn)地址);以及該節(jié)點(diǎn)到每個其他服務(wù)器的距離,該距離用跳接數(shù)表示。應(yīng)該指出,能用標(biāo)準(zhǔn)IP追蹤例行程序來估計(jì)這一參數(shù)。
輸出是有序的服務(wù)地址清單,它是為用唯一節(jié)點(diǎn)號標(biāo)識的特定節(jié)點(diǎn)定制的。這一清單根據(jù)最小耗費(fèi)排序,并對等距離服務(wù)器使用負(fù)荷平衡。
參考圖24,首先,如果輸入清單中的任何地址對應(yīng)于該節(jié)點(diǎn)本身中存在的一個節(jié)點(diǎn)接口,那么這些地址便首先放在產(chǎn)生的有序清單上(規(guī)則1)(步驟2400)。其結(jié)果是本機(jī)客戶機(jī)優(yōu)先使用該同一節(jié)點(diǎn)上共同存在的服務(wù)器,從而造成最好的可能性能。接下來,列出具有最小距離(利用跳接數(shù))的服務(wù)器的地址(規(guī)則2)(步驟2402)。
在有等距離服務(wù)器(即使用相同數(shù)量跳接可達(dá)到的服務(wù)器)的情況中,進(jìn)一步優(yōu)化排序是可能的(規(guī)則3)。如果有兩個等距離服務(wù)器,那么在一半客戶機(jī)中首先列出它們當(dāng)中的一個,而在另一半客戶機(jī)中首先列出另一個,則是有利的。這使得一半客戶機(jī)優(yōu)先使用一個服務(wù)器,而另一半優(yōu)先使用另一個服務(wù)器,從而實(shí)現(xiàn)一種理想的負(fù)荷平衡方案。如果有三個服務(wù)器,則可以有三種方式分出第一個位置。
這里描述了一種技術(shù),用于決定哪個服務(wù)器要首先列出(規(guī)則3)(步驟2404)。具體地說,首先根據(jù)一組等距離服務(wù)器(即有相同跳接數(shù)的一組服務(wù)器)的節(jié)點(diǎn)地址對這些服務(wù)器編號0、1、2等,從最低向最高編號(規(guī)則4)(步驟2406)。因?yàn)楣?jié)點(diǎn)地址是唯一的,這一映射也是唯一的。
接下來,使用一個預(yù)先確定的公式計(jì)算等距離服務(wù)器之一的映射索引(步驟2408)(規(guī)則5)。特別是,對于k=0的等距離服務(wù)器個數(shù),映射標(biāo)號等于[(節(jié)點(diǎn)號)mod(等距離服務(wù)器數(shù))+k]mod(等距離服務(wù)器數(shù))],這里mod是指取模操作,定義為一個除操作的整余數(shù)。
計(jì)算映射索引之后,便把映射索引的相應(yīng)地址填加到清單中(規(guī)則6)(步驟2401)。
接下來,確定該組中是否有多于一個等距離服務(wù)器(詢問2412)。如果該組中有多于一個等距離服務(wù)器,則以步驟2408繼續(xù)進(jìn)行處理。否則,以詢問2414繼續(xù)處理,其中確定在輸入清單中是否還有要處理的服務(wù)。如果還有服務(wù)器,則以步驟2402繼續(xù)該過程(規(guī)則7)。如果沒有,則提供最終的有序服務(wù)地址清單,于是過程結(jié)束(步驟2416)。
下面描述演示上述過程的一個例子。假定有以下輸入節(jié)點(diǎn)號=5,服務(wù)清單(使用符號節(jié)點(diǎn)地址,括號內(nèi)是距離)包括{1(0),3(1),7(1),9(1),12(2),2(2)}。
為得到排序,遵循上述規(guī)則1)該技術(shù)在為節(jié)點(diǎn)5定義的任何節(jié)點(diǎn)地址定義表中進(jìn)行查詢,以確定是否有任何輸入地址在那些表的節(jié)點(diǎn)地址字段中。它發(fā)現(xiàn)有距離0的地址1對這一節(jié)點(diǎn)是本機(jī)地址,因而根據(jù)上述規(guī)則1首先把該地址列出。
2)利用映射0→3;1→7,2→9按節(jié)點(diǎn)地址對三個等距離服務(wù)器排序。使用規(guī)則3至7對這些節(jié)點(diǎn)再排序。在這一情況中等距離服務(wù)器個數(shù)是3,節(jié)點(diǎn)號是5,其結(jié)果是a)選擇第一服務(wù)器,應(yīng)用規(guī)則5,以k=0,其結(jié)果是[(5mod 3+0)mod 3]=2;其結(jié)果是對上一步驟中得到的清單的映射索引。在這一情況中,映射索引2映射于服務(wù)器地址9.
b)對于第二個服務(wù)器,迭代使用規(guī)則5,現(xiàn)在是k為1,其結(jié)果是[(5mod 3+1)mod 3],它是[(2+1)mod 3]=0,它映射到服務(wù)器3。
c)類似地,規(guī)則5的下一次迭代是以k=2進(jìn)行,其結(jié)果是[(5mod 3+2)mod 3],它是[(2+2)mod 3]=1,它映射到服務(wù)器7。
3)現(xiàn)在對第二組等距離服務(wù)器使用同樣過程(規(guī)則2至5),首先賦予映射索引0→12;1→2?,F(xiàn)在等距離服務(wù)器個數(shù)是2a)規(guī)則5的第一次迭代產(chǎn)生[(5mod 2+0)mod 2]=1,它映射到服務(wù)器2。
b)第二次迭代,以k=1,產(chǎn)生[(5mod 2+1)mod 2]=0,它映射到服務(wù)器12。
4)最后產(chǎn)生的是如下清單{1,9,3,7,2,12}。
可以看到,對每個客戶機(jī)節(jié)點(diǎn)號,其輸出清單會是不同的,造成對每個客戶機(jī)平衡過的清單。
除了上述,DCM維持這些有序列表。在一個例子中,每當(dāng)它收到已添加一新的服務(wù)節(jié)點(diǎn)或刪除服務(wù)節(jié)點(diǎn)的通知時,它便刷新本機(jī)清單。
上文描述的是管理一個集群環(huán)境的各個方面。提供了集群體系結(jié)構(gòu)以及管理各集群的技術(shù)。本發(fā)明的各種技術(shù)可應(yīng)用于單個系統(tǒng)、同構(gòu)系統(tǒng)以及異構(gòu)系統(tǒng)。作為一個例子,提供了有助于提高一異構(gòu)環(huán)境系統(tǒng)的可解釋性的能力。
在這里描述的實(shí)施例中,全局?jǐn)?shù)據(jù)被存儲在遠(yuǎn)離這些節(jié)點(diǎn)的一個或多個倉庫中(全局存儲器)。然而,在其他例子中,每個倉庫可以是相對于一個或多個節(jié)點(diǎn)是本機(jī)的。再有,每個倉庫對于該倉庫的用戶可以是遠(yuǎn)程的或本機(jī)的。
本發(fā)明能被包括在具有例如計(jì)算機(jī)可用媒體的制品(例如一個或多個計(jì)算機(jī)程序產(chǎn)品)中。這里該媒體已實(shí)現(xiàn)了例如計(jì)算機(jī)可讀程序代碼手段用于提供和有助于本發(fā)明的能力。該制品能被包括做為計(jì)算機(jī)系統(tǒng)的一部分或被單獨(dú)出售。
此外,還能提供至少一個可由機(jī)器讀出的程序存儲裝置,有形地實(shí)現(xiàn)可由機(jī)器執(zhí)行的至少一個指令程序,以實(shí)現(xiàn)本發(fā)明的能力。
這里描繪的流程圖只是例子。對這里描述的這些程序或步驟(或操作)可以有許多改變而不離開本發(fā)明的精神。例如,可以以不同的順序進(jìn)行這些步驟,或者可以添加、刪除或修改步驟。所有這些改變被認(rèn)為是所申明的發(fā)明的一部分。
盡管這里已詳細(xì)地描繪和描述了最佳實(shí)施例,但對于相關(guān)領(lǐng)域的技術(shù)人員而言,顯然可以做出各種修改、添加和替換等而不離開本發(fā)明,所以這些被認(rèn)為是在下述權(quán)利要求中定義的本發(fā)明的范圍之內(nèi)。
權(quán)利要求
1.一種用于控制集群計(jì)算環(huán)境的系統(tǒng)通信量的方法,所述方法包括對于要提供的一個服務(wù),把一個或多個節(jié)點(diǎn)地址映射到為所述服務(wù)定義的一個或多個網(wǎng)絡(luò)對象;從所述一個或多個網(wǎng)絡(luò)對象得到所述服務(wù)的一個或多個優(yōu)先級,以及根據(jù)所述一個或多個優(yōu)先級接觸所述服務(wù)。
2.一種用于控制集群計(jì)算環(huán)境的系統(tǒng)通信量的系統(tǒng),該系統(tǒng)包括對于要提供的一個服務(wù),把一個或多個節(jié)點(diǎn)地址映射到為所述服務(wù)定義的一個或多個網(wǎng)絡(luò)對象的裝置;從所述一個或多個網(wǎng)絡(luò)對象得到所述服務(wù)的一個或多個優(yōu)先級的裝置,以及根據(jù)所述一個或多個優(yōu)先級接觸所述服務(wù)的裝置。
3.至少一個可由機(jī)器讀出的程序存儲裝置,有形地實(shí)現(xiàn)可由機(jī)器執(zhí)行的至少一個指令程序,以實(shí)現(xiàn)控制集群計(jì)算環(huán)境的系統(tǒng)通信量的方法,所述方法包括對于要提供的一個服務(wù),把一個或多個節(jié)點(diǎn)地址映射到為所述服務(wù)定義的一個或多個網(wǎng)絡(luò)對象;從所述一個或多個網(wǎng)絡(luò)對象得到所述服務(wù)的一個或多個優(yōu)先級;以及根據(jù)所述一個或多個優(yōu)先級接觸所述服務(wù)。
全文摘要
提供了各種部件以管理一個集群環(huán)境。這些部件包括提供全局?jǐn)?shù)據(jù)存儲的系統(tǒng)注冊;把數(shù)據(jù)本機(jī)存儲在集群環(huán)境的節(jié)點(diǎn)上和全局存儲在系統(tǒng)注冊內(nèi)的配置管理器;提供集群通信路徑狀態(tài)的生存部件;向集群環(huán)境中一個或多個其他部件提供服務(wù)的組服務(wù)部件;以及與集群環(huán)境一個或多個資源控制器進(jìn)行通信的資源管理部件。該集群環(huán)境的每個部件對該環(huán)境的一個或多個其他部件有一個或多個數(shù)據(jù)依賴性和/或功能依賴性。然而,在各部件之間建立的關(guān)系使得數(shù)據(jù)依賴性和功能依賴形成一個非循環(huán)圖(即避免了循環(huán)依賴關(guān)系)。
文檔編號G06F9/46GK1443323SQ0181035
公開日2003年9月17日 申請日期2001年5月25日 優(yōu)先權(quán)日2000年5月31日
發(fā)明者M·N·諾瓦伊斯, G·D·萊布, R·戈林, G·索霍斯, F·克諾普 申請人:國際商業(yè)機(jī)器公司