專利名稱:主從式網(wǎng)絡(luò)計(jì)算機(jī)服務(wù)器群自組織方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種在網(wǎng)絡(luò)計(jì)算機(jī)系統(tǒng)中,多個網(wǎng)絡(luò)計(jì)算機(jī)服務(wù)器的組織方法,尤其是能自動組織成多個以一服務(wù)器為主和多個服務(wù)器為輔的主從式服務(wù)器群,并為位于同一網(wǎng)絡(luò)上的多個具有本地計(jì)算能力的客戶端提供啟動、以及按需定制、下載應(yīng)用程序服務(wù)的方法。
二、技術(shù)背景網(wǎng)絡(luò)計(jì)算機(jī)(Network Computer或NC)最早由Oracle公司在1995年提出,是網(wǎng)絡(luò)計(jì)算階段具代表性的一種計(jì)算機(jī)形態(tài)。1996年5月Oracle公司聯(lián)合其它四家公司共同制定了網(wǎng)絡(luò)計(jì)算機(jī)標(biāo)準(zhǔn)1(Network Computer Reference Profile 1)。作為客戶端的NC采取了簡化計(jì)算機(jī)硬件的做法,本地?zé)o硬盤,采用低功耗CPU,主板設(shè)置有大容量的非易失性存儲裝置,通常是只讀存儲器ROM或快閃存儲器(Flash ROM)。在軟件上,傳統(tǒng)NC在本地的非易失性存儲裝置中,存儲了嵌入式的操作系統(tǒng)或終端協(xié)議代碼。其工作原理是通過WWW/Applet技術(shù),X-terminal或其他終端技術(shù)(如RDP,ICA等)訪問遠(yuǎn)程服務(wù)器上的應(yīng)用程序和數(shù)據(jù),本地不進(jìn)行計(jì)算,只負(fù)責(zé)接收用戶輸入和進(jìn)行圖形界面顯示工作。傳統(tǒng)NC的計(jì)算主要發(fā)生在服務(wù)器上,因此對服務(wù)器的依賴性很大,尤其在應(yīng)用于多媒體應(yīng)用場景的時候,對服務(wù)器的要求很高,因此普通服務(wù)器能同時支持的NC數(shù)目非常有限。并且,由于操作系統(tǒng)固化在NC的ROM或Flash ROM中,因此升級困難,可擴(kuò)展性差。
為了解決傳統(tǒng)NC對服務(wù)器依賴過重,對多媒體應(yīng)用支持不足,軟件升級困難,可擴(kuò)展性差的問題。清華大學(xué)網(wǎng)絡(luò)互連實(shí)驗(yàn)室研制了一種本地?zé)o操作系統(tǒng)的NC-可管理多媒體網(wǎng)絡(luò)計(jì)算機(jī)MMNC(參見本申請人的相關(guān)專利ZL03122022.3,ZL01142033.2),它是一種具有本地計(jì)算能力的NC,如圖1,服務(wù)器端101上存儲并管理客戶端所需要的操作系統(tǒng)和應(yīng)用程序,并不負(fù)責(zé)應(yīng)用的計(jì)算,具有成本低、負(fù)載輕的特點(diǎn)。服務(wù)器和客戶端102通過硬化的驅(qū)動程序和通信協(xié)議進(jìn)行通信,應(yīng)用的計(jì)算在NC客戶端發(fā)生,能極大減輕以往NC的計(jì)算對服務(wù)器依賴過重的問題,且客戶端本地?zé)o操作系統(tǒng)、無硬盤、成本低。MMNC能大大增強(qiáng)NC應(yīng)用的靈活性并具有很強(qiáng)的擴(kuò)展能力,能支持豐富的桌面應(yīng)用,這種NC在服務(wù)器上放置了NC操作系統(tǒng)內(nèi)核鏡像以及應(yīng)用程序,并配置了動態(tài)主機(jī)配置協(xié)議(Dynamic Host ConfigurationProtocol,DHCP)服務(wù),簡單文件傳輸協(xié)議(Trivial File Transfer Protocol,TFTP)服務(wù)以及遠(yuǎn)程執(zhí)行環(huán)境(Preboot Execution Enviroment,PXE)服務(wù)。如圖2,NC客戶端203(簡稱NC或客戶端)和NC服務(wù)器202(簡稱服務(wù)器)位于一個計(jì)算機(jī)網(wǎng)絡(luò)201上,服務(wù)器同時為多個客戶端提供操作系統(tǒng)和應(yīng)用程序資源,服務(wù)器和客戶端之間形成星形的邏輯關(guān)系。MMNC的啟動過程如圖3所示,客戶端203被加電301后開始NC的啟動過程,之后執(zhí)行非易失存儲器中的引導(dǎo)代碼302,通過DHCP消息廣播同服務(wù)器進(jìn)行聯(lián)系,服務(wù)器收到DHCP客戶端廣播消息后,向客戶端應(yīng)答并為客戶端分配一網(wǎng)絡(luò)地址,即一IP地址303。獲得網(wǎng)絡(luò)地址之后,客戶端向服務(wù)器發(fā)出下載操作系統(tǒng)內(nèi)核鏡像和包括初始應(yīng)用程序的根文件系統(tǒng)鏡像的文件下載請求,服務(wù)器接收到文件下載請求后向客戶端傳輸操作系統(tǒng)內(nèi)核鏡像以及根文件系統(tǒng)鏡像,客戶端接收服務(wù)器的傳輸304,NC客戶端接收完畢后加載服務(wù)器端傳輸?shù)牟僮飨到y(tǒng)內(nèi)核鏡像和根文件系統(tǒng)鏡像305,就完成了NC的啟動過程306。
為了提高M(jìn)MNC的啟動性能,尤其是減緩客戶端在啟動時對于服務(wù)器的依賴,我們進(jìn)一步提出了一種網(wǎng)絡(luò)計(jì)算機(jī)的協(xié)作式啟動方法(參見本申請人的專利申請200410009789.3),如圖4,其中服務(wù)器402和所有NC403和位于一計(jì)算機(jī)網(wǎng)絡(luò)401上,服務(wù)器上存儲了所有NC啟動所需的操作系統(tǒng)和應(yīng)用程序,但在啟動時,服務(wù)器和客戶端之間的請求/服務(wù)關(guān)系不是星形的邏輯關(guān)系,即可以不僅由服務(wù)器對NC的啟動請求提供服務(wù),在NC間也可以協(xié)作式地提供服務(wù)、互助完成啟動一臺客戶端啟動時的初始應(yīng)用程序可以由服務(wù)器獨(dú)立提供,或由若干臺其他客戶端共同提供,或由服務(wù)器和若干臺客戶端共同提供。采用這種啟動方法不僅保留了原MMNC易管理、應(yīng)用擴(kuò)展性好、對多媒體應(yīng)用支持豐富的特點(diǎn),并且能降低啟動時服務(wù)器的負(fù)載,提高NC的平均啟動速度和網(wǎng)絡(luò)利用率,整個系統(tǒng)具有較好的魯棒性。
上述NC能提供很好的多媒體支持,具有高的可管理性,但目前的系統(tǒng)基本上基于一單服務(wù)器的系統(tǒng)結(jié)構(gòu),即由一個服務(wù)器為同網(wǎng)絡(luò)上的多個NC客戶端同時服務(wù),不僅系統(tǒng)的魯棒性受制于該系統(tǒng)結(jié)構(gòu),更重要的是系統(tǒng)的擴(kuò)展性成為一個瓶頸。雖然一方面,服務(wù)器可以采用類似鏡像的技術(shù)提高整個系統(tǒng)的魯棒性和容錯性,避免由服務(wù)器故障造成整個系統(tǒng)無法使用的情況;另一方面,也可以通過提高服務(wù)器硬件性能或改進(jìn)服務(wù)器的運(yùn)行算法來提高服務(wù)器整體性能和負(fù)載能力,但是卻無法從根本上突破系統(tǒng)的負(fù)載數(shù)量受單服務(wù)器結(jié)構(gòu)限制的這個不足。事實(shí)上,我們發(fā)現(xiàn)在實(shí)際的應(yīng)用中,一臺普通配置的PC服務(wù)器所能支持的客戶端極難超過百臺的限制,但在對NC可能的應(yīng)用場合進(jìn)行需求分析后發(fā)現(xiàn),許多NC的大中型應(yīng)用對于客戶端的需求數(shù)量都要遠(yuǎn)高于這個限制。盡管我們可以采用靜態(tài)劃分客戶端所屬關(guān)系的方法,使用多個服務(wù)器來分別為各自所屬部分客戶端提供服務(wù),但由于這種方法缺乏一個完整統(tǒng)一的架構(gòu),如何合理地進(jìn)行這種靜態(tài)劃分,在需求發(fā)生變化時如何調(diào)整劃分等由靜態(tài)劃分所帶來的一系列問題都將成為棘手、卻不得不解決的問題。另一方法是,采用高配置的高級專用服務(wù)器來滿足大負(fù)載數(shù)需求,這種方法將使得整個系統(tǒng)的造價將大幅提高,性價比大大降低。因此若能采用一個完整、統(tǒng)一的多服務(wù)器的NC體系結(jié)構(gòu),使得多個普通PC服務(wù)器以群的方式動態(tài)、透明地為客戶端提供服務(wù),則能在保留現(xiàn)有MMNC成本低、易管理、支持應(yīng)用豐富等特點(diǎn)的情況下,提供與服務(wù)器節(jié)點(diǎn)成正比的負(fù)載能力,同時具有高的可用性和更好的系統(tǒng)擴(kuò)展性及魯棒性。
發(fā)明內(nèi)容
針對現(xiàn)有的基于單服務(wù)器的NC系統(tǒng)結(jié)構(gòu)擴(kuò)展性、魯棒性不佳,負(fù)載能力有限的問題,本發(fā)明提出了一種多個NC服務(wù)器的自組織方法,其中NC和服務(wù)器任意分布于計(jì)算機(jī)網(wǎng)絡(luò)上,服務(wù)器上存儲了NC啟動和運(yùn)行所需的操作系統(tǒng)和應(yīng)用程序,位于同一廣播可達(dá)網(wǎng)絡(luò)上的所有服務(wù)器屬于同一個服務(wù)器群,一個服務(wù)器群包括一個主NC服務(wù)器MNCS和若干個SNCS服務(wù)器,NC只能由屬于群中的服務(wù)器為其提供服務(wù),尚未加入群的服務(wù)器按照以下步驟自組織成服務(wù)器群啟動一進(jìn)程,該進(jìn)程負(fù)責(zé)偵聽其他服務(wù)器發(fā)送的信息;如果在Td的時間內(nèi)沒有收到心跳信息,則服務(wù)器認(rèn)定自己是群中MNCS,開始以固定的心跳時長向網(wǎng)絡(luò)廣播心跳信息,其中Td是數(shù)倍于心跳時長的時間段,并開始偵聽NC的服務(wù)請求;否則認(rèn)定自己是SNCS,開始偵聽NC的服務(wù)請求。一SNCS在收到MNCS的心跳信號時向MNCS回復(fù)一個反射信號;MNCS在收到一SNCS的首次反射信號時將其加入群;MNCS根據(jù)各SNCS反射信號中的狀態(tài)信息,動態(tài)維護(hù)服務(wù)器群的狀態(tài)信息。若所述的MNCS在所述Td的時間內(nèi)沒有收到一SNCS的反射信號,則嘗試向該SNCS通信,若一定次數(shù)的嘗試通信后依然無回應(yīng),則將該SNCS從群中去除。
若一SNCS在Td時間內(nèi)沒有收到心跳信號,則執(zhí)行如下處理步驟1發(fā)出一個競職信號;步驟2假如在等待的Td時間內(nèi)收到一MNCS發(fā)來的心跳信號,則結(jié)束處理;步驟3否則,假如沒有收到其他SNCS發(fā)來的競職信號,則自己升級為MNCS,用自身保持的綁定NC狀態(tài)信息初始化群狀態(tài)信息,并開始廣播心跳信息,結(jié)束處理;步驟4否則,假如收到其他SNCS發(fā)來的競職信號,則延遲一段時間,若延遲期間收到心跳信息,則認(rèn)定自己為SNCS,結(jié)束處理;否則轉(zhuǎn)到步驟1處理;若所述MNCS收到其他MNCS發(fā)出的心跳信號,則向該MNCS發(fā)送一沖突指示信號,其中包括了其所屬群的狀態(tài)信息。若一MNCS A收到另一MNCS B發(fā)出的沖突指示信號,則比較雙方群中所屬的服務(wù)器數(shù)量,若前者大于后者,則A將B所屬群的狀態(tài)信息合并至自己所屬群的狀態(tài)信息中,其中將B作為一SNCS插入到A所屬群的狀態(tài)中,并向B發(fā)送一沖突回復(fù)信號。若一MNCS收到一沖突回復(fù)信號,則認(rèn)定自己為SNCS,停止發(fā)送心跳信號,并更新相關(guān)狀態(tài)信息。
采用本發(fā)明的網(wǎng)絡(luò)計(jì)算機(jī)的服務(wù)器群自組織方法,使得在保留現(xiàn)有的MMNC體系結(jié)構(gòu)成本低、易管理、支持應(yīng)用豐富等特點(diǎn)的同時,提供了更好的負(fù)載能力、動態(tài)擴(kuò)展性和魯棒性,并可兼容現(xiàn)有的NC客戶端。
四
圖1是MMNC系統(tǒng)結(jié)構(gòu)示意2是現(xiàn)有NC的啟動關(guān)系示意3現(xiàn)有NC的啟動流程4是使用協(xié)作式啟動方法的NC啟動關(guān)系示意5是未經(jīng)組織的NC網(wǎng)絡(luò)拓?fù)?是未經(jīng)組織的NC網(wǎng)絡(luò)實(shí)體示意7是自組織后的的NC網(wǎng)絡(luò)實(shí)體示意8是自組織后的的NC網(wǎng)絡(luò)拓?fù)?是MNCS及SNCS中使用到的數(shù)據(jù)結(jié)構(gòu)五具體實(shí)施方式
下面參照圖示對本發(fā)明進(jìn)行詳細(xì)說明。
如圖5,是未經(jīng)組織時的NC系統(tǒng)網(wǎng)絡(luò)拓?fù)涫疽鈭D。多個NC客戶端503和NC服務(wù)器504、505、506、507物理上分散地分布地在計(jì)算機(jī)網(wǎng)絡(luò)501、502的各處,網(wǎng)絡(luò)501和網(wǎng)絡(luò)502支持內(nèi)部廣播(如以太網(wǎng)),但不支持相互間的廣播通信,因此被認(rèn)為是不同的連通網(wǎng)絡(luò)。群是指同一個連通網(wǎng)絡(luò)上所有NC服務(wù)器,NC客戶端以及他們之間的相互關(guān)系。服務(wù)器群指屬于一個群的所有NC服務(wù)器的集合。初始時服務(wù)器均處于關(guān)閉狀態(tài),服務(wù)器不可用,并且沒有加入任何群,NC客戶端也因?yàn)樵谙嗤B通網(wǎng)絡(luò)上不存在可用的服務(wù)器而無法使用,服務(wù)器和服務(wù)器、服務(wù)器和客戶端之間都不存在任何關(guān)系。
自組織是指NC服務(wù)器和NC客戶端能自發(fā)地形成群的關(guān)系,并能對群關(guān)系進(jìn)行動態(tài)的調(diào)整,經(jīng)過自組織的NC服務(wù)器群可以透明地向NC客戶端提供如啟動服務(wù)(包括IP分配、操作系統(tǒng)內(nèi)核鏡像下載等),應(yīng)用程序的按需定制、下載服務(wù)、共享數(shù)據(jù)的下載等和現(xiàn)有技術(shù)MMNC中單服務(wù)器所能提供的相同服務(wù),而從客戶端的角度,感覺不到群模式的服務(wù)器和現(xiàn)有的單服務(wù)器模式的區(qū)別。
如圖6和圖7,本發(fā)明的自組織方法??梢钥醋魇菍⒊跏紩r處于同一層次601的、語義上無差別的、互不相干的只是物理上相互連通的多個網(wǎng)絡(luò)實(shí)體602(包括NC客戶端、NC服務(wù)器),按照客戶端和服務(wù)器間的隸屬關(guān)系,和服務(wù)器間的主從關(guān)系,自行組成三層次的、多群的實(shí)體間關(guān)系。
如圖8,是上述網(wǎng)絡(luò)結(jié)構(gòu)在使用本發(fā)明的自組織方法后形成的多服務(wù)器NC系統(tǒng)網(wǎng)絡(luò)拓?fù)鋱D。在同一連通網(wǎng)絡(luò)501/502中所有的服務(wù)器被組織進(jìn)一個群(群1/群2),一個群中至少包括一個主NC服務(wù)器(Master NC Server,MNCS)504/505,如果有兩個以上服務(wù)器,則還包括若干個從服務(wù)器(Slave NC Server,SNCS)506、507,因此在多個不同連通網(wǎng)絡(luò)上,會形成多個群,屬于該網(wǎng)絡(luò)上所有的NC客戶端503都由相應(yīng)的服務(wù)器群提供服務(wù)。在一個群中,客戶端在發(fā)起啟動請求后,將被指定由某一個服務(wù)器(MNCS或SNCS)固定提供啟動服務(wù)和啟動后的應(yīng)用程序等服務(wù),這種從客戶端到服務(wù)器的單射關(guān)系,被稱為綁定。
如圖9,在MNCS中維護(hù)了一個綁定映射關(guān)系表BMRT 910來記錄群中客戶端-服務(wù)器,服務(wù)器-服務(wù)器的映射關(guān)系,即記錄了一個群中MNCS到SNCS的主從關(guān)系,NC到服務(wù)器的隸屬關(guān)系。其中一維表911主要起到索引的作用,每個節(jié)點(diǎn)931對應(yīng)MNCS及從屬于它的SNCS,二維表912的每個節(jié)點(diǎn)932對應(yīng)隸屬于一個服務(wù)器的客戶端。MNCS中還維護(hù)了一個SNCS列表932,記錄了群中SNCS的狀態(tài)信息,其中每個節(jié)點(diǎn)933記錄的信息中包括了收到該SNCS報文的時間戳信息。在服務(wù)器中還維護(hù)了一Subscriber表920,記錄了被綁定至該服務(wù)器的所屬客戶端信息921,如標(biāo)識、優(yōu)先級、狀態(tài)、IP地址等信息。
NC服務(wù)器的心跳信號是一種基于IP/UDP的報文。心跳信號是一種主動信號,MNCS服務(wù)器在運(yùn)行中會按固定時間長t在網(wǎng)絡(luò)上廣播發(fā)出周期性的心跳信號。其中心跳間隔t可根據(jù)應(yīng)用需求設(shè)置為5-300s范圍內(nèi)的一數(shù)值,或按t=2*網(wǎng)絡(luò)最大直徑*測量得到的單跳間平均延遲(包括傳輸延遲和節(jié)點(diǎn)處理延遲)計(jì)算結(jié)果的倍數(shù)值。
反射信號也是一種基于IP/UDP的報文,反射信號是一種被動信號,SNCS在收到MNCS發(fā)出的心跳信號之后向MNCS發(fā)送反射信號。心跳信號和反射信號中都包括了發(fā)出信號的NC服務(wù)器在當(dāng)時的性能參數(shù)值,如當(dāng)時的NC客戶端負(fù)載數(shù)Wλ,CPU利用率Pλ,內(nèi)存利用率Mλ,虛存的使用率Gλ,輸出帶寬/理論帶寬P/T,等參數(shù)值或關(guān)于這些參數(shù)的函數(shù)值,通過這些參數(shù)可以及時了解到群中服務(wù)器的載荷情況。
競職信號是一種基于IP/UDP的報文,用于SNCS嘗試升級為MNCS時。
服務(wù)器按照下列處理步驟進(jìn)行自組織形成一服務(wù)器群Step1服務(wù)器在啟動后自動啟動一進(jìn)程,偵聽其他服務(wù)器發(fā)來的包括心跳、反射信號、競職信號、沖突指示/回復(fù)信號等信息,主要用于服務(wù)器之間的交互;Step2If如果在2t-5t的時間內(nèi)沒有接收到其他服務(wù)器的心跳信息,則認(rèn)定自己為群中的MNCS,執(zhí)行將SNCS列表置空,Subscriber表置空,BMRT表中只加入自己一個節(jié)點(diǎn);開始每t時間向網(wǎng)絡(luò)廣播周期性心跳信息;并啟動一進(jìn)程,開始偵聽NC的啟動和應(yīng)用程序請求,跳至step4;Step3Else認(rèn)定自己為SNCS,執(zhí)行初始化所屬的Subscriber表;啟動一進(jìn)程開始偵聽NC的啟動和應(yīng)用程序請求,跳至step4;Step 4end對于服務(wù)器群的動態(tài)調(diào)整按照下列步驟進(jìn)行一方面對于MNCS
MNCS在首次收到某SNCS反射信號時將其加入群將SNCS插入BMRT表和SNCS列表;通過SNCS列表節(jié)點(diǎn)中的時間戳參數(shù),若MNCS在T0=2t-5t時間內(nèi)收不到某SNCS的反射信號,則以Tn=Tn-1*1/Nn的時間間隔以端對端方式向該SNCS重發(fā)心跳信號,其中N0=2,Nn=Nn-1+1,Nn<=Nmax,Nmax表示最大嘗試次數(shù),可自定義。若Nmax后還無收到SNCS的反射信號,則認(rèn)定該SNCS在群中不可用,則要更新群關(guān)系,具體地,將綁定至該服務(wù)器上的所有客戶端去綁定,即從BMRT表中刪除該SNCS及相關(guān)的客戶端,并在SNCS列表中將該服務(wù)器的狀態(tài)置為不可用N/A。
另一方面,對于SNCS一旦SNCS收到MNCS廣播發(fā)出的心跳信號后,將向MNCS回復(fù)一發(fā)射信號,若SNCS在2t-5t時間內(nèi),沒有收到MNCS發(fā)出的心跳信息,則認(rèn)定群中無MNCS,跳至P1執(zhí)行P1發(fā)出一個競職信號;If 2t-5t時間內(nèi)收到MNCS發(fā)來的心跳信號,則跳至P2;Else If沒有收到其他SNCS發(fā)來的競職信號,則自己升級為MNCS將SNCS列表置空,BMRT表中只加入自己一個節(jié)點(diǎn),并以當(dāng)前的Subscriber表來初始化BMRT表,即在BMRT表中加入這些客戶端;開始每t時間向網(wǎng)絡(luò)廣播周期性心跳信息;跳至P2。
Else If收到其他SNCS發(fā)來的競職信號,則使用二進(jìn)制指數(shù)回退算法(Binaryexponential backoff algorithm)延遲R*T*2powerN時間,其中R是隨機(jī)數(shù),T是上次延遲等待的時間(首次延遲為2t-5t),N是算法被調(diào)用次數(shù),若延遲期間收到心跳信息,則認(rèn)定自己為SNCS,goto P2;否則goto P1;P2end此外,若任意時刻一個MNCS收到其他MNCS的心跳信號(可能是由于網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)發(fā)生改變,導(dǎo)致同一連通網(wǎng)絡(luò)上出現(xiàn)若干MNCS),這時也需要動態(tài)調(diào)整群關(guān)系收到心跳信號的MNCS采用端對端方式向發(fā)出心跳信號的另一MNCS發(fā)送沖突指示信號,其中包括了自己的BMRT表和SNCS列表內(nèi)容;若一MNCS A收到另一MNCS B發(fā)來的沖突指示信號,則A比較B的SNCS數(shù),若A的SNCS數(shù)大于等于B的SNCS數(shù),則A將B插入自己的SNCS表,并將B的BMRT表和SNCS列表內(nèi)容無冗余地插入自身的BMRT表和SNCS,其中將B變?yōu)橐籗NCS,并向B發(fā)送沖突回復(fù)信號。否則A向B發(fā)送一沖突指示信號,并在收到B發(fā)送的沖突回復(fù)信號之后,認(rèn)定自己為SNCS,停止發(fā)送心跳信息,初始化BMRT表和SNCS列表。
客戶端可以透明地使用群提供的服務(wù),群對客戶端的服務(wù)請求處理則與單服務(wù)器對客戶端的服務(wù)請求處理的有所不同??蛻舳思与妴雍髮l(fā)起啟動請求時,群將按下列執(zhí)行步驟提供服務(wù)客戶端在網(wǎng)上發(fā)送DHCP廣播消息;SNCS收到消息后,如果在Subscriber列表中找不到該客戶端,則不做處理,忽略收到的請求,否則由該服務(wù)器向該客戶端提供服務(wù);MNCS收到客戶端請求后,如果在BMRT表中找不到該客戶端,根據(jù)不同的策略(如基于服務(wù)器性能參數(shù)找載荷最輕的,或基于Round Robin的等),將該客戶端綁定到一服務(wù)器,并將客戶端插入相應(yīng)的服務(wù)器(MNCS或SNCS)的鏈表。若綁定的服務(wù)器是SNCS,則MNCS通知它這次綁定。綁定服務(wù)器會將客戶端加入到Subscriber表中,并向該客戶端提供服務(wù);客戶端加載從綁定服務(wù)器上下載的操作系統(tǒng)核心鏡像和初始應(yīng)用程序之后,再次在網(wǎng)絡(luò)上廣播,由其綁定服務(wù)器進(jìn)行應(yīng)答,客戶端因此可以獲知其綁定的服務(wù)器,客戶端就完成了啟動。
此后的按需定制、下載應(yīng)用程序等服務(wù),客戶端都可向其綁定的服務(wù)器發(fā)出請求獲得。
作為另一種實(shí)施方式,客戶端可以不必知道其綁定的服務(wù)器,而采用廣播的方式進(jìn)行服務(wù)請求,服務(wù)器判斷若收到的服務(wù)請求隸屬自己,則向其提供服務(wù),否則忽略。
如果因?yàn)榫W(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)發(fā)生了變化,或綁定服務(wù)器發(fā)生了故障,導(dǎo)致客戶端無法從綁定服務(wù)器上獲得服務(wù),客戶端可以手工地或在檢測到該情況后自動地重新啟動,由于MNCS將在檢測到相應(yīng)SNCS不可用后可自動更新群關(guān)系,因此客戶端重啟后將由群將其重新綁定至另一服務(wù)器。
作為另一種實(shí)施方式,服務(wù)器可在啟動后的運(yùn)行過程中,手工或自動地執(zhí)行加入群的過程,而不必在啟動時執(zhí)行,這種方式更有利于對服務(wù)器的定制和動態(tài)擴(kuò)展群的總負(fù)載能力。
以上描述的具體實(shí)施方式
只是對本發(fā)明進(jìn)行示例,本領(lǐng)域技術(shù)人員在不脫離本發(fā)明實(shí)質(zhì)性思想的基礎(chǔ)上進(jìn)行各種修改和改進(jìn)后得到的技術(shù)方案,均視為在本發(fā)明的范圍之內(nèi)。本發(fā)明適當(dāng)?shù)姆秶詸?quán)利要求書為準(zhǔn)進(jìn)行確定。
權(quán)利要求
1.一種網(wǎng)絡(luò)計(jì)算機(jī)NC的服務(wù)器群自組織方法,NC和服務(wù)器任意分布于計(jì)算機(jī)網(wǎng)絡(luò)上,服務(wù)器上存儲了NC啟動和運(yùn)行所需的操作系統(tǒng)和應(yīng)用程序,其中位于同一廣播可達(dá)網(wǎng)絡(luò)上的所有服務(wù)器屬于同一個服務(wù)器群,一個服務(wù)器群包括一個主NC服務(wù)器MNCS和若干個從NC服務(wù)器SNCS,NC只能由屬于群中的服務(wù)器為其提供服務(wù),尚未加入群的服務(wù)器按照以下步驟自組織成服務(wù)器群步驟一啟動一進(jìn)程,該進(jìn)程負(fù)責(zé)偵聽其他服務(wù)器發(fā)送的信息;步驟二如果在Td的時間內(nèi)沒有收到心跳信息,則服務(wù)器認(rèn)定自己是群中MNCS,開始以固定的心跳時長向網(wǎng)絡(luò)廣播心跳信息,其中Td是數(shù)倍于心跳時長的時間段,并開始偵聽NC的服務(wù)請求;否則認(rèn)定自己是SNCS,開始偵聽NC的服務(wù)請求;一SNCS在收到MNCS的心跳信號時向MNCS回復(fù)一個反射信號;步驟三MNCS在收到一SNCS的首次反射信號時將其加入群;MNCS根據(jù)各SNCS反射信號中的狀態(tài)信息,動態(tài)維護(hù)服務(wù)器群的狀態(tài)信息。
2.如權(quán)利要求1所述的網(wǎng)絡(luò)計(jì)算機(jī)的服務(wù)器群自組織方法,其特征在于若所述的MNCS在所述Td的時間內(nèi)沒有收到一SNCS的反射信號,則嘗試向該SNCS通信,若一定次數(shù)的嘗試通信后依然無回應(yīng),則將該SNCS從群中去除;若一SNCS在Td時間內(nèi)沒有收到心跳信號,則執(zhí)行如下處理步驟1發(fā)出一個競職信號;步驟2假如在等待的Td時間內(nèi)收到一MNCS發(fā)來的心跳信號,則結(jié)束處理;步驟3否則,假如沒有收到其他SNCS發(fā)來的競職信號,則自己升級為MNCS,用自身保持的綁定NC狀態(tài)信息初始化群狀態(tài)信息,并開始廣播心跳信息,結(jié)束處理;步驟4否則,假如收到其他SNCS發(fā)來的競職信號,則延遲一段時間,若延遲期間收到心跳信息,則認(rèn)定自己為SNCS,結(jié)束處理;否則轉(zhuǎn)到步驟1處理;
3.如權(quán)利要求2所述的網(wǎng)絡(luò)計(jì)算機(jī)的服務(wù)器群自組織方法,其特征在于若所述MNCS收到其他MNCS發(fā)出的心跳信號,則向該MNCS發(fā)送一沖突指示信號,其中包括了其所屬群的狀態(tài)信息;若一MNCS A收到另一MNCS B發(fā)出的沖突指示信號,則比較雙方群中所屬的服務(wù)器數(shù)量,若前者大于后者,則A將B所屬群的狀態(tài)信息合并至自己所屬群的狀態(tài)信息中,其中將B作為一SNCS插入到A所屬群的狀態(tài)中,并向B發(fā)送一沖突回復(fù)信號;若一MNCS收到一沖突回復(fù)信號,則認(rèn)定自己為SNCS,停止發(fā)送心跳信號,并更新相關(guān)狀態(tài)信息。
4.如權(quán)利要求1-3中任一個所述的網(wǎng)絡(luò)計(jì)算機(jī)的服務(wù)器群自組織方法,其特征在于按照如下步驟所述NC取得服務(wù)器群提供的服務(wù)步驟aNC加電后在網(wǎng)絡(luò)上廣播啟動請求;步驟b若一SNCS收到請求后,如果發(fā)現(xiàn)該NC隸屬于本服務(wù)器,則提供服務(wù);若所述MNCS收到請求后,如果在保持的群狀態(tài)信息中發(fā)現(xiàn)該NC不隸屬于任何服務(wù)器,則將該NC綁定至一服務(wù)器,并告知該服務(wù)器已將該NC綁定到該服務(wù)器,由綁定服務(wù)器向該NC提供服務(wù);步驟cNC從綁定服務(wù)器上下載并加載下載的操作系統(tǒng)核心鏡像和初始應(yīng)用程序后,再次在網(wǎng)絡(luò)上廣播,由其隸屬的綁定服務(wù)器進(jìn)行應(yīng)答后,該NC即完成了啟動;步驟dNC啟動后,如需獲得按需定制、下載應(yīng)用程序等服務(wù),都可向其綁定服務(wù)器發(fā)出請求獲得;若某一NC在啟動運(yùn)行后無法從其綁定服務(wù)器上獲得服務(wù),則可手工地或在自行檢測到此情況后自動重新啟動。
全文摘要
本發(fā)明涉及一種主從式網(wǎng)絡(luò)計(jì)算機(jī)NC服務(wù)器群自組織方法,其中NC和服務(wù)器任意分布于計(jì)算機(jī)網(wǎng)絡(luò)上,位于同一廣播可達(dá)網(wǎng)絡(luò)上的所有服務(wù)器屬于同一個服務(wù)器群,一個服務(wù)器群包括一個主NC服務(wù)器MNCS和若干個從NC服務(wù)器SNCS,服務(wù)器按照以下步驟自組織成服務(wù)器群啟動一進(jìn)程,該進(jìn)程負(fù)責(zé)偵聽其它服務(wù)器發(fā)送的信息;如果在數(shù)倍于心跳時長的時間段的時間內(nèi)沒有收到心跳信息,則服務(wù)器認(rèn)定是群中MNCS,開始以固定的心跳時長向網(wǎng)絡(luò)廣播心跳信息,并開始偵聽NC的服務(wù)請求;否則認(rèn)定自己是SNCS,開始偵聽NC的服務(wù)請求。SNCS在收到MNCS的心跳信號時向MNCS回復(fù)一個反射信號;MNCS在收到SNCS的首次反射信號時將其加入群;MNCS根據(jù)各SNCS反射信號中的狀態(tài)信息,動態(tài)維護(hù)服務(wù)器群的狀態(tài)信息。
文檔編號G06F15/16GK1641620SQ20051001112
公開日2005年7月20日 申請日期2005年1月7日 優(yōu)先權(quán)日2005年1月7日
發(fā)明者張堯?qū)W, 徐廣斌, 楊華杰, 匡文淵, 田鵬偉 申請人:清華大學(xué)