亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

數(shù)據(jù)復(fù)制協(xié)議的制作方法

文檔序號(hào):7741852閱讀:319來源:國知局
專利名稱:數(shù)據(jù)復(fù)制協(xié)議的制作方法
技術(shù)領(lǐng)域
一般地,本發(fā)明涉及用于傳遞數(shù)據(jù)的系統(tǒng)。更具體地講,本發(fā)明涉及用于通過網(wǎng)絡(luò)復(fù)制數(shù)據(jù)的系統(tǒng)與方法。
背景技術(shù)
存在幾種類型的分布式處理系統(tǒng)。一般地,分布式處理系統(tǒng)包括多個(gè)處理設(shè)備,諸如通過通信介質(zhì)連接的兩臺(tái)計(jì)算機(jī)。一種分布式處理系統(tǒng)為客戶端/服務(wù)器網(wǎng)絡(luò)。客戶端/服務(wù)器網(wǎng)絡(luò)包括至少兩個(gè)處理設(shè)備,一般為中央處理器與客戶端。其他客戶端可能連接至該中央服務(wù)器,可能有多個(gè)服務(wù)器,或者該網(wǎng)絡(luò)可能只包括通過通信介質(zhì)連接的多個(gè)服務(wù)器。
在這樣的網(wǎng)絡(luò)環(huán)境中,經(jīng)常希望從中央服務(wù)器向許多個(gè)工作站和/或其他服務(wù)器發(fā)送應(yīng)用程序或信息。這常??赡苌婕霸诟鱾€(gè)工作站上的獨(dú)立的安裝,或者可能涉及從該中央服務(wù)器向每個(gè)單個(gè)的工作站和/或服務(wù)器分別推送新的信息庫。這些方法可能很耗時(shí),并且資源的使用效率不高。在各個(gè)工作站或服務(wù)器上分別安裝應(yīng)用程序也引入了其他潛在的錯(cuò)誤來源。
理想狀況下,信息的發(fā)送既應(yīng)該對(duì)故障可靠,也應(yīng)該可擴(kuò)展,以便該處理有效使用網(wǎng)絡(luò)?,F(xiàn)有的解決方案一般不能達(dá)到這些目標(biāo)的一個(gè)或全部。一個(gè)簡(jiǎn)單的方法是讓主服務(wù)器分別聯(lián)系各個(gè)從屬,并且通過點(diǎn)到點(diǎn)鏈接(諸如TCP/IP連接)傳遞數(shù)據(jù)。如果一個(gè)或更多個(gè)從屬暫時(shí)不可達(dá)到,或者如果從屬在處理更新時(shí)出現(xiàn)錯(cuò)誤,則這種方法將導(dǎo)致數(shù)據(jù)的不一致的副本。復(fù)雜分布式協(xié)定協(xié)議是另一個(gè)極端,其要求在從屬之間進(jìn)行大量會(huì)話,以確保數(shù)據(jù)的所有副本一致。

發(fā)明內(nèi)容
本發(fā)明包括一種方法,用來從主服務(wù)器向至少一個(gè)從屬或被管理服務(wù)器復(fù)制數(shù)據(jù),例如這可以通過網(wǎng)絡(luò)完成。在該方法中,可能要確定該復(fù)制應(yīng)該用一階段還是兩階段方法完成。如果要用一階段方法完成該復(fù)制,則可以發(fā)送對(duì)應(yīng)主服務(wù)器上數(shù)據(jù)當(dāng)前狀態(tài)的版本號(hào)。該版本號(hào)可以被送往網(wǎng)絡(luò)上的每一個(gè)從屬服務(wù)器,或者只送往部分從屬服務(wù)器。然后,收到該版本號(hào)的從屬服務(wù)器可能請(qǐng)求從主服務(wù)器發(fā)送增量(delta)。該增量可以包含更新該從屬服務(wù)器上數(shù)據(jù)以對(duì)應(yīng)當(dāng)前版本號(hào)所需的數(shù)據(jù)。
如果要用兩階段方法完成該復(fù)制,則從主服務(wù)器向每一個(gè)從屬服務(wù)器或者從屬服務(wù)器的子集發(fā)送信息包。然后,這些從屬服務(wù)器可以對(duì)主服務(wù)器作出響應(yīng),表示它們是否能夠委托該信息包。如果至少有一些從屬服務(wù)器能夠委托該數(shù)據(jù),則主服務(wù)器可以向這些從屬服務(wù)器發(fā)送信號(hào),表示它們應(yīng)該處理該委托(commit)。在處理該委托之后,這些從屬服務(wù)器可以更新到當(dāng)前版本號(hào)。如果任一從屬服務(wù)器不能處理該委托,則可以中止該委托。


圖1為根據(jù)本發(fā)明的一個(gè)實(shí)施例的域結(jié)構(gòu)的圖;圖2為根據(jù)本發(fā)明的一個(gè)實(shí)施例的分層體系結(jié)構(gòu)的圖;圖3為根據(jù)本發(fā)明的一個(gè)實(shí)施例的群集域結(jié)構(gòu)的圖;圖4為根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于分層體系結(jié)構(gòu)的一階段處理的圖;圖5為根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于分層體系結(jié)構(gòu)的兩階段處理的圖;圖6為根據(jù)本發(fā)明的一個(gè)實(shí)施例的一階段處理的流程圖;圖7為根據(jù)本發(fā)明的一個(gè)實(shí)施例的兩階段處理的流程圖;具體實(shí)施方式
本發(fā)明支持將數(shù)據(jù)或諸如來自從主服務(wù)器或“管理員”服務(wù)器(“管理服務(wù)器”)之類的其他信息復(fù)制到例如一組從屬服務(wù)器或“被管理”服務(wù)器。這種復(fù)制可以通過任何適當(dāng)?shù)木W(wǎng)絡(luò)發(fā)生,例如常規(guī)的局域網(wǎng)或以太網(wǎng)。在一個(gè)實(shí)施例是,主服務(wù)器擁有網(wǎng)絡(luò)上所有數(shù)據(jù)的原始記錄,任何更新都應(yīng)用該原始記錄。該數(shù)據(jù)的副本與更新(在其發(fā)生時(shí))一起可以被發(fā)送到每個(gè)從屬服務(wù)器。一個(gè)示例應(yīng)用為從管理服務(wù)器向一組被管理服務(wù)器分發(fā)配置信息。
在根據(jù)本發(fā)明的一個(gè)系統(tǒng)中,可能需要一種諸如數(shù)據(jù)復(fù)制服務(wù)(DRS)之類的服務(wù)來從管理服務(wù)器向適當(dāng)域中的被管理服務(wù)器分發(fā)配置與部署信息。大數(shù)據(jù)項(xiàng)可以通過點(diǎn)到點(diǎn)連接(例如傳輸控制協(xié)議(“TCP”))分發(fā),這是因?yàn)槎嗖f(xié)議如用戶數(shù)據(jù)報(bào)協(xié)議(“UDP”)沒有流控制,并且可能使系統(tǒng)崩潰。遠(yuǎn)程方法調(diào)用(RMI)、超文本傳送協(xié)議(HTTP)或者類似協(xié)議可以用于點(diǎn)到點(diǎn)連接。
被管理服務(wù)器也可以在本地磁盤上持久緩存數(shù)據(jù)。如果沒有這種緩存,可能需要無法接受的時(shí)間量來傳送必須的數(shù)據(jù)。被管理服務(wù)器的緩存能力至觀重要,這是因?yàn)檫@種能力通過減少需傳送的啟動(dòng)數(shù)據(jù)量而提高了啟動(dòng)速度。如果管理服務(wù)器不可達(dá)到,還允許啟動(dòng)和/或重啟緩存。重啟可能是更吸引人的選擇,并且可能的情況是管理服務(wù)器指示服務(wù)器啟動(dòng)。然而,重啟可能提供在管理服務(wù)器不可用時(shí)啟動(dòng)域的能力。
如圖1的域結(jié)構(gòu)100所示,管理服務(wù)器102和至少一個(gè)被管理服務(wù)器104可以構(gòu)成域106。這個(gè)域106可以是啟動(dòng)與關(guān)閉的管理單位。在一個(gè)實(shí)施例中,瀏覽器108或者其他用戶應(yīng)用程序或設(shè)備命令管理服務(wù)器102啟動(dòng)。然后,管理服務(wù)器102命令域106中的所有被管理服務(wù)器104啟動(dòng),并且發(fā)送適當(dāng)?shù)呐渲眯畔ⅰH绻诒还芾矸?wù)器104已經(jīng)啟動(dòng)之后一臺(tái)服務(wù)器出了故障,則可能希望該服務(wù)器自動(dòng)重啟,而不管管理服務(wù)器102是否可用。緩存數(shù)據(jù)可以用于此目的。
對(duì)管理服務(wù)器上數(shù)據(jù)的更新可以作為版本之間的增量增量打包。該增量可能包含要改變的配置和/或其他信息??赡芟M谠撚蜻\(yùn)行時(shí)更新配置,這是因?yàn)榭赡懿幌M麑⑾到y(tǒng)脫機(jī)。在一個(gè)實(shí)施例中,配置更改動(dòng)態(tài)發(fā)生,因?yàn)檫@些修改由管理服務(wù)器推送。只有對(duì)配置的修改以增量傳送,這是因?yàn)榭赡懿恍枰看味及l(fā)送全部配置,并且可能造成不必要的麻煩。
根據(jù)本發(fā)明的協(xié)議集成了更新分發(fā)的兩種方法,盡管可以相應(yīng)地使用其他適當(dāng)方法。這些分發(fā)方法可以稱為一階段方法與兩階段方法,并且提供了一致性與可擴(kuò)展性之間的平衡。在一階段方法中,其可能對(duì)可擴(kuò)展性有利,每個(gè)從屬服務(wù)器可以按各自的節(jié)奏取得并處理更新。從屬服務(wù)器可能在不同的時(shí)間從主服務(wù)器取得更新,但可以在接到數(shù)據(jù)后馬上委托。從屬服務(wù)器在處理更新時(shí)可能遇到錯(cuò)誤,但在一階段方法中這不會(huì)阻止其他從屬服務(wù)器處理該更新。
在根據(jù)本發(fā)明的兩階段方法中,其可能對(duì)一致性有利,分發(fā)可能是“原子”的,即全部從屬服務(wù)器或者無任何從屬服務(wù)器成功處理該數(shù)據(jù)。可能有獨(dú)立的階段(例如準(zhǔn)備與委托階段),這考慮了中止的可能性。在準(zhǔn)備階段,主服務(wù)器可以確定是否每一從屬服務(wù)器都可能采用該更新。如果所有從屬服務(wù)器都表示能夠接受該更新,則可以將新數(shù)據(jù)送往從屬服務(wù)器,以在委托階段委托。如果從屬服務(wù)器中的至少一個(gè)不能采用該更新,則可以中止該更新,并且不會(huì)有委托。在這種情況下,可以通知被管理服務(wù)器應(yīng)該退回該準(zhǔn)備,并且不做任何改變。根據(jù)本發(fā)明的這種協(xié)議是可靠的,這是因?yàn)樵谌我环椒ㄖ?,在委托更新時(shí)不可達(dá)到的從屬服務(wù)器最終會(huì)得到該更新。
根據(jù)本發(fā)明的系統(tǒng)也可以確保暫時(shí)不可用的服務(wù)器最終會(huì)接收到所有更新。例如,服務(wù)器可能會(huì)暫時(shí)從網(wǎng)絡(luò)中隔離,然后返回網(wǎng)絡(luò)而不用重啟。因?yàn)榉?wù)器不重啟,所以該服務(wù)器一般將不檢查更新??梢酝ㄟ^以下方法處理重返網(wǎng)絡(luò)的服務(wù)器讓服務(wù)器定期檢查新更新,或者讓主服務(wù)器定期查看這些服務(wù)器是否已經(jīng)接收到了這些更新。
在一個(gè)實(shí)施例中,主服務(wù)器定期發(fā)送多播(multicast)的“脈動(dòng)(heartbeat)”給從屬服務(wù)器。因?yàn)槎嗖シ椒赡懿豢煽?,所以從屬服?wù)器可能會(huì)錯(cuò)過任意序列的脈動(dòng)。例如,由于網(wǎng)絡(luò)分區(qū),從屬服務(wù)器可能暫時(shí)從網(wǎng)絡(luò)中斷開,或者從屬服務(wù)器可能暫時(shí)對(duì)網(wǎng)絡(luò)不可用,從而錯(cuò)過脈動(dòng)。因此,脈動(dòng)可能包含有關(guān)最近更新的信息窗口。這樣的有關(guān)先前更新的信息可以用來降低網(wǎng)絡(luò)業(yè)務(wù)量,如下所述。
在每一主服務(wù)器與每一從屬服務(wù)器中可以有至少兩層用戶層與系統(tǒng)層(或者DRS層)。用戶層可以相應(yīng)于該數(shù)據(jù)復(fù)制系統(tǒng)的用戶。DRS層可以相應(yīng)于該數(shù)據(jù)復(fù)制系統(tǒng)自身的實(shí)現(xiàn)。有關(guān)各方與層的交互如圖2所示。
如圖2的啟動(dòng)圖200所示,本實(shí)施例中,主服務(wù)器用戶202與從屬服務(wù)器用戶204層分別向下調(diào)用主服務(wù)器DRS 206與從屬服務(wù)器DRS 208層。這些向下調(diào)用可以采用以下形式(例如)registerMaster(DID,verNum,listener)registerSlave(DID,verNum,listener)其中DID為得自公知DID知識(shí)的標(biāo)識(shí)符并且指向感興趣的對(duì)象;verNum得自本地持久的存儲(chǔ),作為該用戶的當(dāng)前版本號(hào);listener為將處理來自DRS層的向上調(diào)用(upcall)的對(duì)象。該向上調(diào)用可以調(diào)用該listener對(duì)象的方法。然后主服務(wù)器可以開始發(fā)送脈動(dòng)或者周期性增量以及當(dāng)前版本號(hào)。顯示了容器層210,其可以包含適合于從從屬服務(wù)器用戶204取得信息的容器。可能的容器例子包括企業(yè)版Java beans,萬維網(wǎng)界面以及J2EE(Java 2平臺(tái)企業(yè)版)應(yīng)用程序。其他應(yīng)用程序和/或組件可以插入容器層210(例如管理客戶端212)。在用戶與DRS層之間更新消息往來的例子在圖4的一階段方法以及圖5的兩階段方法中示出。
圖4顯示了一個(gè)基本過程400,其可用于根據(jù)本發(fā)明的分層體系結(jié)構(gòu)中的一階段分發(fā)方法。在這一過程中,主服務(wù)器用戶層402對(duì)主服務(wù)器DRS層406進(jìn)行向下調(diào)用(downcall)404,以開始一階段分發(fā)。該調(diào)用可以是針對(duì)該系統(tǒng)中所有從屬服務(wù)器的,也可以是只針對(duì)從屬服務(wù)器的一個(gè)子集。如果該調(diào)用針對(duì)子集,則主服務(wù)器用戶層402可以確定該更新的范圍,或者哪些從屬服務(wù)器應(yīng)該接收到該更新。
主服務(wù)器DRS層開始向從屬服務(wù)器DRS層410多播脈動(dòng)408,其包含了主服務(wù)器上數(shù)據(jù)的當(dāng)前版本號(hào)。從屬服務(wù)器DRS層410從從屬服務(wù)器用戶層414請(qǐng)求用于該從屬服務(wù)器的當(dāng)前版本號(hào)。然后,從屬服務(wù)器用戶層414以從屬服務(wù)器版本號(hào)響應(yīng)416從屬服務(wù)器DRS層416。如果該從屬服務(wù)器同步,或者已經(jīng)是當(dāng)前版本號(hào),則不再做進(jìn)一步的請(qǐng)求,直到下一次更新。如果該從屬服務(wù)器不同步,并且該從屬服務(wù)器在該更新范圍內(nèi),則從屬服務(wù)器DRS層410可以從主服務(wù)器DRS層406請(qǐng)求增量420,以將該從屬服務(wù)器更新到主服務(wù)器上數(shù)據(jù)的當(dāng)前版本號(hào)。主服務(wù)器DRS層406請(qǐng)求422主用戶層402創(chuàng)建增量以更新從屬服務(wù)器。然后主服務(wù)器用戶層402發(fā)送增量424到主服務(wù)器DRS層406,主服務(wù)器DRS層406將增量426與主服務(wù)器的當(dāng)前版本號(hào)轉(zhuǎn)發(fā)到從屬服務(wù)器DRS層410,從屬服務(wù)器DRS層410將增量426發(fā)送到從屬服務(wù)器用戶以備委托。當(dāng)前版本號(hào)與增量一起發(fā)送,以防止從屬服務(wù)器接到脈動(dòng)408后主服務(wù)器進(jìn)行了更新。
主服務(wù)器DRS層406可能繼續(xù)定期向(多個(gè))從屬服務(wù)器發(fā)送包含版本號(hào)408的多播脈動(dòng)。這就使不可用或者不能接受并處理增量的任何從屬服務(wù)器能夠確定其不在數(shù)據(jù)的當(dāng)前版本號(hào)上并且在以后請(qǐng)求增量420,例如當(dāng)該從屬服務(wù)器返回該系統(tǒng)時(shí)。
圖5顯示了一個(gè)基本過程500,其可用于根據(jù)本發(fā)明的分層體系結(jié)構(gòu)中的兩階段分發(fā)方法。在這一過程中,主服務(wù)器用戶層502向下調(diào)用504進(jìn)入主服務(wù)器DRS層506,以開始兩階段分發(fā)。主服務(wù)器用戶層502也可能需要確定該更新的范圍,并且可以為該更新過程設(shè)置“超時(shí)”值。
主服務(wù)器DRS層506向從屬服務(wù)器DRS層510發(fā)送新增量508。從屬服務(wù)器DRS層510為該新增量向從屬服務(wù)器用戶層514發(fā)送準(zhǔn)備請(qǐng)求512。然后,從屬服務(wù)器用戶層514向從屬服務(wù)器DRS層510響應(yīng)該從屬服務(wù)器是否能夠處理該新增量。從屬服務(wù)器DRS層將響應(yīng)518轉(zhuǎn)發(fā)給主服務(wù)器DRS層506。如果該從屬服務(wù)器因?yàn)槠洳煌讲荒芴幚碓撜?qǐng)求,則主服務(wù)器DRS層506對(duì)主服務(wù)器用戶層502進(jìn)行向上調(diào)用520,以生成將使該從屬服務(wù)器同步從而委托的增量。主服務(wù)器用戶層502向主服務(wù)器DRS層發(fā)送同步增量522,主服務(wù)器DRS層將同步增量524轉(zhuǎn)發(fā)給從屬服務(wù)器DRS層510。如果該從屬服務(wù)器能夠處理該同步增量,則從屬服務(wù)器DRS層510將向主服務(wù)器DRS層506發(fā)送同步響應(yīng)526,表示該從屬服務(wù)器現(xiàn)在可以處理該新增量。如果該從屬服務(wù)器不能處理該同步增量,則從屬服務(wù)器DRS層510將向主服務(wù)器DRS層506發(fā)送適當(dāng)?shù)耐巾憫?yīng)526。然后,根據(jù)從屬服務(wù)器是否響應(yīng)其能夠處理該新增量,主服務(wù)器DRS層506向從屬服務(wù)器DRS層510發(fā)送脈動(dòng)委托/中止消息528。如果所有從屬服務(wù)器都能夠準(zhǔn)備該增量,則例如主服務(wù)器可以發(fā)送脈動(dòng)委托信號(hào)。否則,主服務(wù)器可以發(fā)送脈動(dòng)中止信號(hào)。脈動(dòng)也可以包含更新的范圍,以使從屬服務(wù)器知曉其是否應(yīng)該處理包含在該脈動(dòng)中的信息。
從屬服務(wù)器DRS層將此命令530轉(zhuǎn)發(fā)給從屬服務(wù)器用戶層514,然后從屬服務(wù)器用戶層514為委托或中止對(duì)該新增量的更新。如果在由主服務(wù)器用戶層502所設(shè)置的超時(shí)(timeout)值之內(nèi)沒有完成準(zhǔn)備階段,則主服務(wù)器DRS層506可以自動(dòng)向所有從屬服務(wù)器發(fā)送脈動(dòng)中止528。例如,當(dāng)主服務(wù)器DRS層506不能聯(lián)系從屬服務(wù)器中的至少一個(gè)以確定該從屬服務(wù)器是否能夠處理委托時(shí),這就可能發(fā)生。可以這樣設(shè)置超時(shí)值,使主服務(wù)器DRS層506在中止更新前的一段特定時(shí)間嘗試聯(lián)系該從屬服務(wù)器。
對(duì)于一階段方法中的更新,這些脈動(dòng)可能引起每一從屬服務(wù)器請(qǐng)求從該從屬服務(wù)器的數(shù)據(jù)當(dāng)前版本開始的增量。這一過程在圖6的流程圖中顯示。在該基本過程600中,其可能使用或不使用根據(jù)本發(fā)明的分層體系結(jié)構(gòu),從主服務(wù)器向從屬服務(wù)器發(fā)送主服務(wù)器上當(dāng)前數(shù)據(jù)的版本號(hào)602。從屬服務(wù)器確定自己是否已經(jīng)被更新到該當(dāng)前版本號(hào)604。如果從屬服務(wù)器不在當(dāng)前版本上,則它將請(qǐng)求從主服務(wù)器發(fā)送增量以更新該從屬服務(wù)器606。當(dāng)增量被發(fā)送到從屬服務(wù)器時(shí),該從屬服務(wù)器將處理該增量以將從屬服務(wù)器數(shù)據(jù)更新到當(dāng)前版本608。然后,從屬服務(wù)器將自己的版本號(hào)更新到單前版本號(hào)610。
對(duì)于兩階段方法中的更新,主服務(wù)器可以開始于準(zhǔn)備階段,在該階段中主服務(wù)器主動(dòng)向每一從屬服務(wù)器發(fā)送從緊接上一版本的增量。這一過程在圖7的流程圖中顯示。在基本過程700中,其可能使用或不使用根據(jù)本發(fā)明的分層體系結(jié)構(gòu),從主服務(wù)器向(多個(gè))從屬服務(wù)器發(fā)送信息包702。每個(gè)收到該包的從屬服務(wù)器確定自己是否能夠處理該包并且更新到該當(dāng)前版本704。每個(gè)收到該包的從屬服務(wù)器向主服務(wù)器響應(yīng),指示該從屬服務(wù)器是否能夠處理該包。如果所有從屬服務(wù)器(向它們發(fā)送了增量)在某個(gè)超時(shí)時(shí)段內(nèi)確認(rèn)成功處理了增量,則主服務(wù)器可能決定委托該更新。否則,主服務(wù)器可能決定中止該更新。一旦作出了該決定,則主服務(wù)器向(多個(gè))從屬服務(wù)器發(fā)送消息,表示應(yīng)該委托或中止該更新708。如果該決定是委托,則每一服務(wù)器處理委托710??梢赃M(jìn)一步使用脈動(dòng)來表示委托或中止是否發(fā)生了,以防止從屬服務(wù)器之一錯(cuò)過該命令。
可以配置從屬服務(wù)器以使用緩存數(shù)據(jù)來立即啟動(dòng)和/或重啟,而不首先從主服務(wù)器獲得當(dāng)前版本號(hào)。如上所述,根據(jù)本發(fā)明的一種協(xié)議允許從屬服務(wù)器在本地磁盤上持久緩存數(shù)據(jù)。該緩存降低了系統(tǒng)啟動(dòng)所需的時(shí)間,并且通過降低需要傳送的數(shù)據(jù)量而增強(qiáng)了可擴(kuò)展性。通過允許從屬服務(wù)器在主服務(wù)器不可達(dá)到時(shí)能夠啟動(dòng)和/或重啟,該協(xié)議可以增強(qiáng)可靠性,并且可以進(jìn)一步允許將更新打包為版本之間的增量。如果不存在緩存的數(shù)據(jù),則從屬服務(wù)器可以等待主服務(wù)器或者可以自己下拉數(shù)據(jù)。如果從屬服務(wù)器有緩存,則其仍然可能不希望失去同步。如果從屬服務(wù)器知道等待,則可以降低啟動(dòng)時(shí)間。
該協(xié)議可以是雙邊的,即根據(jù)環(huán)境,主服務(wù)器或者從屬服務(wù)器可以開始傳輸數(shù)據(jù)。例如,在域啟動(dòng)期間,從屬服務(wù)器可以從主服務(wù)器下拉增量。當(dāng)從屬服務(wù)器確定自己與該增量所要更新的版本不同時(shí),該從屬服務(wù)器可以請(qǐng)求從其當(dāng)前版本到當(dāng)前系統(tǒng)版本的增量。在一階段分發(fā)期間,從屬服務(wù)器也可以下拉增量。此處,該系統(tǒng)可以讀取脈動(dòng),確定自己已經(jīng)錯(cuò)過了更新,并且請(qǐng)求適當(dāng)?shù)脑隽俊?br> 當(dāng)需要從例外情況恢復(fù)時(shí),從屬服務(wù)器也可以下拉增量。例如,當(dāng)該系統(tǒng)的組件失去同步時(shí),就可能存在以外情況。當(dāng)從屬服務(wù)器下拉增量時(shí),該增量可以是數(shù)據(jù)任意版本之間的。換而言之,該增量可以是該從屬服務(wù)器的當(dāng)前版本與該系統(tǒng)(或域)的當(dāng)前版本之間的,而不管這些版本之間可能有多少代。在此實(shí)施例中,脈動(dòng)的可用性以及接收增量的功能可以提供該系統(tǒng)的同步。
除了從屬服務(wù)器可以下拉增量,主服務(wù)器也可以在兩階段分發(fā)期間向從屬服務(wù)器推送增量。在一個(gè)實(shí)施例中,這些增量總是在數(shù)據(jù)的連續(xù)版本之間的。該兩階段分發(fā)方法可以最小化有關(guān)方面之間不一致的可能性。只要可能,從屬服務(wù)器用戶就可以處理準(zhǔn)備,而不會(huì)向客戶端公開該更新或者使該更新無法退回。這可以包括諸如檢查服務(wù)器已防沖突的任務(wù)。如果任何一個(gè)從屬服務(wù)器發(fā)出出錯(cuò)信號(hào),例如通過發(fā)送“磁盤滿”或者“不一致配置”信息,則可以將該更新統(tǒng)一退回。
然而,仍然有可能出現(xiàn)不一致。例如,在處理委托時(shí)可能出錯(cuò),原因是諸如不能打開套接字。服務(wù)器也可以在不同的時(shí)間委托并公開更新。因?yàn)閿?shù)據(jù)不能剛好在同一時(shí)間到達(dá)每一個(gè)被管理的服務(wù)器,所以會(huì)有一些波動(dòng)效應(yīng)。使用多播可以支持小的時(shí)間窗口,以最小化該波動(dòng)效應(yīng)。在一個(gè)實(shí)施例中,如果錯(cuò)過了委托,不管是錯(cuò)過了該信號(hào),還是主服務(wù)器崩潰等等,則已做準(zhǔn)備的從屬服務(wù)器會(huì)中止,多播的盡力型方法可以使從屬服務(wù)器錯(cuò)過委托信號(hào)。如果主服務(wù)器在委托階段中途崩潰,則可能會(huì)沒有日志,或者沒有恢復(fù)的方法。對(duì)于主服務(wù)器可能沒有方法命令剩余的從屬服務(wù)器它們需要委托。一旦中止,如果版本沒有被正確地退回,則一些從屬服務(wù)器可能會(huì)終止委托該數(shù)據(jù)。在一個(gè)實(shí)施例中,剩余從屬服務(wù)器可以使用一階段分發(fā)獲得更新。例如,這可以發(fā)生在被管理服務(wù)器響應(yīng)于接收自管理服務(wù)器的脈動(dòng)而下拉增量時(shí)。這種方法可以保持系統(tǒng)可擴(kuò)展性,而如果為了避免任何委托或者版本錯(cuò),系統(tǒng)限制(tie down)分發(fā),則可能失去可擴(kuò)展性。
系統(tǒng)所管理的每一數(shù)據(jù)項(xiàng)都可以被構(gòu)造成具有唯一的長(zhǎng)壽命的域標(biāo)識(shí)符(DID),該域標(biāo)識(shí)符在整個(gè)域上是公知的。數(shù)據(jù)項(xiàng)可以是大型復(fù)雜對(duì)象,包括許多組件,每一組件都與該域內(nèi)服務(wù)器的某一子集有關(guān)。因?yàn)檫@些對(duì)象可以是一致性的單位,所以希望有幾個(gè)大型對(duì)象,而不是多個(gè)小型對(duì)象,作為示例,單獨(dú)一個(gè)數(shù)據(jù)項(xiàng)或?qū)ο缶涂梢源硐到y(tǒng)的所有配置信息,包括諸如config.xml文件或應(yīng)用程序EAR(application-EAR)文件的代碼文件。數(shù)據(jù)項(xiàng)內(nèi)的給定組件,例如,可以有關(guān)于單個(gè)服務(wù)器的線程數(shù)目,有關(guān)于族的被部署服務(wù),或者有關(guān)于整個(gè)域的安全證書。兩個(gè)版本之間的增量可以包括所有或者一些這些組件的新值。例如,這些組件可以包括部署在域成員上的企業(yè)版Java Beans。增量可以只包括對(duì)這些Java Beans的子集的改動(dòng)。
增量的“范圍”可以指在該增量中具有相關(guān)組件的所有服務(wù)器的集合。根據(jù)本發(fā)明的管理服務(wù)器可能能夠截收配置改動(dòng),以確定該增量的范圍。主服務(wù)器上的DRS系統(tǒng)可能需要知道該范圍,以將數(shù)據(jù)發(fā)送給適當(dāng)?shù)膹膶俜?wù)器。當(dāng)主服務(wù)器可能在每次更新中只需要聯(lián)系服務(wù)器的一個(gè)子集時(shí),向每一服務(wù)器發(fā)送每一配置更新可能是對(duì)時(shí)間與資源的浪費(fèi)。
為了控制分發(fā),主服務(wù)器用戶可以與連續(xù)版本之間的增量一起提供每一更新的范圍。范圍可以表示為一組指向服務(wù)器和/或族的名稱,其可以取自域內(nèi)的同一命名空間。在一個(gè)實(shí)施例中,DRS用戶使用解析器模塊將名稱映射到地址。族名稱可以映射到在該族內(nèi)的所有服務(wù)器的地址的集合。這些地址可能是相對(duì)的,例如相對(duì)于虛擬機(jī)器。如本領(lǐng)域已知并且使用的,該解析器可以確定是否存在中間防火墻,并且根據(jù)該服務(wù)器是否“在防火墻里面”而返回“里面”或著“外面”的地址。管理服務(wù)器或者其他服務(wù)器可以用配置數(shù)據(jù)初始化相應(yīng)的解析器。
與每一被管理的數(shù)據(jù)項(xiàng)的唯一的長(zhǎng)壽命的標(biāo)識(shí)符(DID)一起,數(shù)據(jù)項(xiàng)的每一個(gè)版本也可以具有長(zhǎng)壽命的版本號(hào)。每一版本號(hào)對(duì)更新企圖可以是唯一的,以使服務(wù)器不會(huì)因?yàn)閷?duì)正確版本的混淆而錯(cuò)誤地更新或者不更新。類似地,被中止的兩階段分發(fā)的版本號(hào)也不能復(fù)用。只要給定了版本號(hào),主服務(wù)器就可以產(chǎn)生兩個(gè)任意版本之間的增量。如果主服務(wù)器不能產(chǎn)生這樣的增量,則可以提供數(shù)據(jù)或應(yīng)用程序的完整拷貝。
可能希望該數(shù)據(jù)復(fù)制服務(wù)盡可能地通用。因此可能對(duì)該系統(tǒng)的用戶有幾個(gè)假定。例如,該系統(tǒng)可能依賴于三個(gè)主要假定該系統(tǒng)可能包括增加版本號(hào)的方法。
該系統(tǒng)可能將版本號(hào)持久存貯在主服務(wù)器以及從屬服務(wù)器上。
該系統(tǒng)可能包括比較版本號(hào)并且確定相等的方法。
滿足這些假定可以通過用戶級(jí)的DRS接口實(shí)現(xiàn),例如“VersionNumber”接口。這樣的接口使用戶能夠提供版本號(hào)抽象的特定概念與實(shí)現(xiàn),同時(shí)保證該系統(tǒng)可以訪問版本號(hào)屬性。例如,在Java中VersionNumber接口可以以下實(shí)現(xiàn)package weblogic.drs;public interface VersionNumber extends Serializable{VersionNumber increment();void persist()throws Exception;boolean equals(VersionNumber anotherVN);boolean strictlyGreaterThan(VersionNumber anotherVN);}用戶可以向系統(tǒng)提供的這一抽象的簡(jiǎn)單化的實(shí)現(xiàn)可以是大的正整數(shù)。該實(shí)現(xiàn)也可以確保該系統(tǒng)可以將增量信息借助網(wǎng)絡(luò)從主服務(wù)器傳送到從屬服務(wù)器,這在本領(lǐng)域中被稱為“可序列化”。
如果使用上述的抽象,則在用戶級(jí)上從增量的詳細(xì)內(nèi)容的概念上進(jìn)行抽象可能是有用的。系統(tǒng)可能不需要知道增量信息結(jié)構(gòu),并且實(shí)際上系統(tǒng)根本就不能確定該結(jié)構(gòu)。增量的實(shí)現(xiàn)也可能是可序列化的,這就確保了系統(tǒng)能夠借助網(wǎng)絡(luò)將增量版本信息從主服務(wù)器傳送到從屬服務(wù)器。
可能希望主服務(wù)器與適當(dāng)?shù)腄ID和版本號(hào)一起持久存儲(chǔ)每一數(shù)據(jù)項(xiàng)的記錄的副本。在開始兩階段分發(fā)之前,主服務(wù)器可以持久存儲(chǔ)所提出的新版本號(hào),以確保萬一主服務(wù)器出故障時(shí),該版本號(hào)不會(huì)被復(fù)用。從屬服務(wù)器可以與適當(dāng)?shù)腄ID和版本號(hào)一起持久存儲(chǔ)每一相關(guān)數(shù)據(jù)項(xiàng)的最近副本。從屬服務(wù)器也可以被配置為進(jìn)行必須的緩存,以使該從屬服務(wù)器可能必須每一次都取得數(shù)據(jù)或協(xié)議。這可能不是對(duì)所有情況都希望的,但可以提供來處理可能發(fā)生的某些情況。
根據(jù)本發(fā)明的系統(tǒng)可以進(jìn)一步包括并發(fā)限制。例如,在更新的兩階段分發(fā)期間,對(duì)于給定域上的給定DID,可能不允許某些操作。這些操作可能包括一或兩階段更新,例如在同一DID上,將范圍成員身份修改到非空交集范圍上。
在至少一個(gè)實(shí)施例中,主服務(wù)器向域內(nèi)的每一服務(wù)器上的從屬服務(wù)器DRS定期多播脈動(dòng)或者信息包。對(duì)于每一DID,脈動(dòng)可以包括有關(guān)(多個(gè))最近更新的信息窗口,包括每一更新版本號(hào);相對(duì)于先前版本的增量的范圍,以及是否委托或者中止該更新。也可能包括有關(guān)當(dāng)前版本的信息。也可以使用有關(guān)較老版本的信息,以最小化返回主服務(wù)器的業(yè)務(wù)量,并且不是用于正確性或者鮮活性。
在增量中包括較老版本信息的情況下,從屬服務(wù)器可以委托自己在準(zhǔn)備時(shí)所期望的那一部分更新,并且請(qǐng)求新的增量以處理更近的更新。至少對(duì)于某些固定的可配置數(shù)目的脈動(dòng),可以包括有關(guān)給定版本的信息,盡管快速的更新可能使窗口增大到不可接受的尺寸。在另一實(shí)施例中,一旦主服務(wù)器確定所有從屬服務(wù)器都已經(jīng)接收了更新,則可以拋棄有關(guān)較老版本的信息。
多播的脈動(dòng)可以顧及到多個(gè)屬性。這些脈動(dòng)可以是異步的或“單向”的。結(jié)果,到從屬服務(wù)器響應(yīng)脈動(dòng)的時(shí)間,主服務(wù)器可能已經(jīng)升級(jí)到新的狀態(tài)。另外,并非所有的從屬服務(wù)器可以在剛好同一時(shí)間響應(yīng)。這樣一來,主服務(wù)器可以假定從屬服務(wù)器不知道它的狀態(tài),并且可以包括增量要更新的狀態(tài)。這些脈動(dòng)也可以是不可靠的,因?yàn)閺膶俜?wù)器可能錯(cuò)過任意序列的脈動(dòng)。這又可以導(dǎo)致在脈動(dòng)中包括較老版本信息。在一個(gè)實(shí)施例中,從屬服務(wù)器以脈動(dòng)發(fā)送的順序接收脈動(dòng)。例如,從屬服務(wù)器不能調(diào)節(jié)版本七,直到它委托了版本六。服務(wù)器可以等待直到它收到六,或者它可以簡(jiǎn)單地拋棄六而委托七。這種順序可以消除由于版本回退而產(chǎn)生混亂的可能性。
如上所述,域也可能使用族(cluster),如圖3所示(多播脈動(dòng)滑動(dòng)屬性)。此實(shí)施例的一般網(wǎng)絡(luò)拓?fù)錇槎嗖u集合,這些多播島連接到包含主服務(wù)器的集線器島。多播業(yè)務(wù)可以從集線器向外點(diǎn)到點(diǎn)地轉(zhuǎn)發(fā)??赡茉谝浑A段方法中分發(fā)的小增量可以直接通過多播發(fā)送。在其他情況下,可以在轂輻式多播結(jié)構(gòu)上加上點(diǎn)到點(diǎn)轉(zhuǎn)發(fā)方案,以減少主服務(wù)器處的瓶頸。
在圖3的域圖300中,可以將一個(gè)或更多個(gè)被管理服務(wù)器302組合到多播島內(nèi),也稱為族304。域308的管理服務(wù)器306作為集線器島312的主服務(wù)器,并且是到該域的入口點(diǎn),例如通過瀏覽器310。管理服務(wù)器306聯(lián)系族中的一個(gè)被管理服務(wù)器,也被稱為族主服務(wù)器。在此實(shí)施例中,管理服務(wù)器可以向每一族主服務(wù)器多播增量或者消息,然后每一族主服務(wù)器通過多播向該族內(nèi)的其他被管理服務(wù)器轉(zhuǎn)發(fā)該增量或者消息。族主服務(wù)器不能擁有任何配置信息,而是從管理服務(wù)器接收該信息。在族主服務(wù)器下線或者崩潰的情況下,該域中的另外一個(gè)被管理服務(wù)器可以頂替作為族主服務(wù)器。在這種情況下,可以設(shè)置一種機(jī)制來防止下線服務(wù)器返回該族作為第二族主服務(wù)器。這可以通過族或系統(tǒng)基礎(chǔ)結(jié)構(gòu)處理。
也可能有多于一個(gè)的域。在這種情況下,可以有嵌套域或者“合成域”。通過直接聯(lián)系每一個(gè)域主服務(wù)器,可以將信息發(fā)布給域主服務(wù)器,這是因?yàn)槊恳挥蛑鞣?wù)器可以具有將信息推到其他域主服務(wù)器的功能。然而,可能不希望向域主服務(wù)器進(jìn)行多播。
在一階段分發(fā)中,域主服務(wù)器可以進(jìn)行向下調(diào)用以觸發(fā)更新的分發(fā)。這樣的向下調(diào)用可以采用以下形式startOnePhase(DID,newVerNum,scope)其中DID為被更新的數(shù)據(jù)項(xiàng)或者對(duì)象的ID,newVerNum為該對(duì)象的新的版本號(hào),scope為應(yīng)用該更新的范圍。主服務(wù)器DRS可以通過以下方式響應(yīng)升級(jí)到新的版本號(hào),將新號(hào)寫入磁盤,并且在隨后的脈動(dòng)中包括該信息。
當(dāng)從屬服務(wù)器DRS接收脈動(dòng)時(shí),通過分析與最近更新有關(guān)的信息窗口,它可以確定自己是否需要下拉。如果從屬服務(wù)器的當(dāng)前版本號(hào)在該窗口之內(nèi),并且該從屬服務(wù)器不在任何隨后的被委托更新的范圍之內(nèi),則它可以簡(jiǎn)單地升級(jí)到最近的版本號(hào),而不下拉任何數(shù)據(jù)。該過程可以包括從屬服務(wù)器為最新的平凡情況。否則,從屬服務(wù)器DRS可以進(jìn)行點(diǎn)到點(diǎn)調(diào)用,要求從主服務(wù)器DRS的增量,或者另一類似請(qǐng)求,其形式可能為createDelta(DID,curVerNum)其中curVerNum為從屬服務(wù)器的當(dāng)前號(hào),這將被送回到域主服務(wù)器或者族主服務(wù)器。為了處理該請(qǐng)求,主服務(wù)器DRS可以進(jìn)行向上調(diào)用,例如create(curVerNum)。該向上調(diào)用可以通過適當(dāng)?shù)谋O(jiān)聽器進(jìn)行,以取得增量與新的版本號(hào),并且將這些返回到從屬服務(wù)器DRS。應(yīng)該包括新的版本號(hào),這是因?yàn)樵趶膶俜?wù)器最后一次收到脈動(dòng)之后版本號(hào)可能已經(jīng)改變了。增量可以只相當(dāng)于最近委托的更新。任何進(jìn)行著的兩階段更新可以通過獨(dú)立的機(jī)制進(jìn)行處理。然后,從屬服務(wù)器DRS可以向從屬服務(wù)器用戶進(jìn)行向上調(diào)用,例如commitOnePhase(newVerNum,delta),然后升級(jí)到新版本號(hào)。
為了觸發(fā)兩階段分發(fā),主服務(wù)器用戶可以進(jìn)行向下調(diào)用,例如startTwoPhase(DID,oldVerNum,newVerNum,delta,scope,timeout),其中DID為待更新的數(shù)據(jù)項(xiàng)或者對(duì)象,oldVerNum為先前版本號(hào),newVerNum為新版本號(hào)(距先前版本號(hào)一步),delta為待推送的連續(xù)版本之間的增量,scope為更新的范圍,而timeout為該任務(wù)的最大生存時(shí)間。因?yàn)椤皽?zhǔn)備”與“委托”是同步的,所以可能希望為該任務(wù)設(shè)置特定的時(shí)間限制??梢园ㄏ惹暗陌姹咎?hào),以使不同版本號(hào)上的服務(wù)器不會(huì)采用該增量。
在一個(gè)實(shí)施例中,主服務(wù)器DRS遍歷范圍中的所有服務(wù)器,并且對(duì)每一從屬服務(wù)器DRS進(jìn)行點(diǎn)到點(diǎn)調(diào)用,例如prepareTwoPhase(DID,oldVerNum,newVerNum,delta,timeout)。然后,從屬服務(wù)器取得適當(dāng)?shù)某瑫r(shí)值。在增量大時(shí),例如包含二進(jìn)制代碼的增量,可以使用點(diǎn)到點(diǎn)協(xié)議。小一些的更新(例如,可能只包括諸如緩存大小的修改之類的次要配置改動(dòng))可以使用一階段方法進(jìn)行。可以使用該方法是因?yàn)橄駪?yīng)用程序增加的大改動(dòng)以一致的方式到達(dá)服務(wù)器可能更加重要。可替換地,主服務(wù)器可能求助于族主服務(wù)器(如果存在的話),并且讓族主服務(wù)器進(jìn)行調(diào)用。讓主服務(wù)器代理族主服務(wù)器可以提高系統(tǒng)可擴(kuò)展性。
在一個(gè)實(shí)施例中,每次向從屬服務(wù)器或者族主服務(wù)器的調(diào)用產(chǎn)生四個(gè)響應(yīng)中的一個(gè),例如“不可達(dá)到”、“不同步”、“未確認(rèn)”和“確認(rèn)”,它們由主服務(wù)器DRS處理。如果響應(yīng)為“不可達(dá)到”,則當(dāng)前服務(wù)器不能達(dá)到,并且可能排隊(duì)重試。如果響應(yīng)為“不同步”,則該服務(wù)器可能排隊(duì)重試。同時(shí),該服務(wù)器將通過使用從主服務(wù)器的下拉而試圖使自己同步,從而在重試時(shí)該服務(wù)器可以接收增量。如果響應(yīng)為“未確認(rèn)”,則中止該任務(wù)。當(dāng)該服務(wù)器不能接受該任務(wù)時(shí),可能給出該響應(yīng)。如果響應(yīng)是“確認(rèn)”,則不采取行動(dòng)。
為了準(zhǔn)備從屬服務(wù)器,主服務(wù)器DRS可以調(diào)用諸如prepareTwoPhase的方法。當(dāng)從主服務(wù)器DRS收到“準(zhǔn)備”請(qǐng)求時(shí),從屬服務(wù)器DRS可以先檢查自己的當(dāng)前版本號(hào)是否等于待更新的老版本號(hào)。如果不等,則該從屬服務(wù)器可以返回“不同步”的響應(yīng)。然后,該從屬服務(wù)器可以從主服務(wù)器DRS下拉增量,就好像它剛剛收到脈動(dòng)一樣。最終,主服務(wù)器DRS可以重試prepareTwoPhase。與讓主服務(wù)器推送增量相比,該方法可以更加簡(jiǎn)單,但需要主服務(wù)器的仔細(xì)配置??赡苄枰鞣?wù)器的配置,因?yàn)榈却憫?yīng)時(shí)間太長(zhǎng)可能使任務(wù)超時(shí)。另外,等待時(shí)間不足可能導(dǎo)致取得“不同步”響應(yīng)的其他請(qǐng)求。更好地可能是在完成來自從屬服務(wù)器的下拉請(qǐng)求時(shí),觸發(fā)重試。
如果從屬服務(wù)器同步,則在從屬服務(wù)器一側(cè),該從屬服務(wù)器可以向客戶層盡可能深入該服務(wù)器地進(jìn)行向上調(diào)用,例如prepareTwoPhase(newVerNum,delta)。然后,將返回的結(jié)果“確認(rèn)”或者“未確認(rèn)”送到主服務(wù)器DRS。如果響應(yīng)為“確認(rèn)”,則從屬服務(wù)器可以進(jìn)入特殊的已準(zhǔn)備狀態(tài)。如果響應(yīng)為“未確認(rèn)”,則從屬服務(wù)器可以沖掉該更新的所有記錄。如果以后由于某種原因要委托該更新,則該從屬服務(wù)器可以以一階段分發(fā)取得該更新,然后這可能失敗。
如果在超時(shí)期內(nèi)主服務(wù)器DRS從每一服務(wù)器都取得了“確認(rèn)”,則主服務(wù)器DRS可以進(jìn)行委托向上調(diào)用,例如twoPhaseSucceeded(newVerNum),并且升級(jí)到新的版本號(hào)。如果主服務(wù)器DRS從任一服務(wù)器收到“未確認(rèn)”,或者如果超時(shí)期過期,則主服務(wù)器DRS可以進(jìn)行中止向上調(diào)用,例如twoPhaseFailed(newVerNum,reason),并且不改變版本號(hào)。此處,reason為例外,包含所有“未確認(rèn)”響應(yīng)的累積。在這兩種情況下,在隨后的脈動(dòng)中都可能包括中止/委托信息。
在任意時(shí)間上,主服務(wù)器DRS都可以進(jìn)行取消向下調(diào)用,例如cancelTwoPhase(newVerNum)。然后,主服務(wù)器DRS可以通過以下方式處理帶調(diào)用如果該任務(wù)沒有正在進(jìn)行,則拋出例外,或者好象要發(fā)生中止一樣動(dòng)作。
如果已準(zhǔn)備的從屬服務(wù)器DRS獲得表示新版本已經(jīng)被委托的脈動(dòng),則從屬服務(wù)器DRS可以進(jìn)行向上調(diào)用,例如commitTwophase(newVerNum),并且升級(jí)到新的版本號(hào)。如果已準(zhǔn)備的從屬服務(wù)器DRS獲得表示新版本已經(jīng)被中止的脈動(dòng),則從屬服務(wù)器DRS可以中止該任務(wù)。當(dāng)從屬服務(wù)器獲得其中窗口已經(jīng)超過新版本、從屬服務(wù)器獲得對(duì)同一數(shù)據(jù)項(xiàng)上的新prepareTwoPhase調(diào)用或者從屬服務(wù)器對(duì)任務(wù)超時(shí)的脈動(dòng)時(shí),從屬服務(wù)器也可以中止任務(wù)。在這樣的情況下,從屬服務(wù)器可以進(jìn)行向上調(diào)用,例如abortTwophase(newVerNum),并且不改變版本號(hào)。對(duì)于(例如)在從屬服務(wù)器已經(jīng)準(zhǔn)備之后,但在從屬服務(wù)器委托之前主服務(wù)器出故障的情況下,這是一種確保正確處理的方法。
提供本發(fā)明實(shí)施例的上述描述是為了展示與描繪的目的。這不是窮盡的也不是用來將本發(fā)明局限于所公開的精確形式。對(duì)于本領(lǐng)域的技術(shù)人員來講,顯然可以作出許多修改與變動(dòng)。選擇并描述這些實(shí)施例的目的是更好地解釋本發(fā)明的原理與實(shí)際用途,由此使本領(lǐng)域技術(shù)人員能夠理解本發(fā)明的種種實(shí)施例與適合于所考慮的特定用途的種種修改。本發(fā)明的范圍由權(quán)利要求及其等價(jià)物所界定。
權(quán)利要求
1.一種方法,用來通過網(wǎng)絡(luò)從主服務(wù)器向從屬服務(wù)器復(fù)制數(shù)據(jù),該方法包括以下步驟從主服務(wù)器向從屬服務(wù)器發(fā)送信息包,該信息有關(guān)于存貯在該主服務(wù)器上的數(shù)據(jù)的改動(dòng),并且包含該數(shù)據(jù)當(dāng)前狀態(tài)的版本號(hào);使該從屬服務(wù)器能夠確定在該從屬服務(wù)器上的該數(shù)據(jù)是否已經(jīng)被更新以對(duì)應(yīng)包含在該包中的版本號(hào);以及如果在該從屬服務(wù)器上的該數(shù)據(jù)不對(duì)應(yīng)包含在該包中的版本號(hào),則請(qǐng)求從主服務(wù)器向從屬服務(wù)器發(fā)送增量,該增量包含更新該從屬服務(wù)器所需的信息。
2.如權(quán)利要求1所述的方法,進(jìn)一步包括在該主服務(wù)器上存儲(chǔ)該數(shù)據(jù)的原始拷貝。
3.如權(quán)利要求1所述的方法,進(jìn)一步包括在每一從屬服務(wù)器的本地磁盤上持久緩存該數(shù)據(jù)。
4.如權(quán)利要求1所述的方法,進(jìn)一步包括如果該數(shù)據(jù)已經(jīng)改變,則為該主服務(wù)器上的該數(shù)據(jù)的當(dāng)前狀態(tài)確定唯一的版本號(hào)。
5.一種方法,用來通過網(wǎng)絡(luò)從主服務(wù)器向從屬服務(wù)器復(fù)制數(shù)據(jù),該方法包括以下步驟從主服務(wù)器向從屬服務(wù)器發(fā)送版本號(hào),該版本號(hào)有關(guān)于存貯在該主服務(wù)器上的數(shù)據(jù)的當(dāng)前狀態(tài);使該從屬服務(wù)器能夠確定該從屬服務(wù)器是否已經(jīng)被更新以反應(yīng)對(duì)應(yīng)于發(fā)送自該主服務(wù)器的版本號(hào)的該數(shù)據(jù)的當(dāng)前狀態(tài);以及如果在該從屬服務(wù)器不對(duì)應(yīng)由該主服務(wù)器發(fā)送的版本號(hào),則請(qǐng)求從主服務(wù)器向從屬服務(wù)器發(fā)送增量,該增量包含更新該從屬服務(wù)器所需的信息。
6.如權(quán)利要求5所述的方法,進(jìn)一步包括從主服務(wù)器向從屬服務(wù)器發(fā)送該增量。
7.如權(quán)利要求5所述的方法,進(jìn)一步包括向從屬服務(wù)器委托該增量。
8.如權(quán)利要求5所述的方法,進(jìn)一步包括在委托該增量之后,更新從屬服務(wù)器的版本號(hào)。
9.如權(quán)利要求5所述的方法,進(jìn)一步包括從主服務(wù)器向從屬服務(wù)器周期性地發(fā)送版本號(hào)。
10.如權(quán)利要求5所述的方法,進(jìn)一步包括向從屬服務(wù)器發(fā)送版本號(hào)直到該從屬服務(wù)器確認(rèn)收到該版本號(hào)。
11.如權(quán)利要求5所述的方法,進(jìn)一步包括包括具有更新從屬服務(wù)器所需的版本號(hào)的數(shù)據(jù)。
12.如權(quán)利要求11所述的方法,進(jìn)一步包括一旦收到更新該從屬服務(wù)器所需的數(shù)據(jù)就委托該數(shù)據(jù)。
13.如權(quán)利要求5所述的方法,進(jìn)一步包括在將增量從主服務(wù)器送出之前,確定該增量的范圍。
14.一種用來通過包括主服務(wù)器與至少一個(gè)從屬服務(wù)器的網(wǎng)絡(luò)復(fù)制數(shù)據(jù)的方法,該方法包括以下步驟從主服務(wù)器向網(wǎng)絡(luò)上每一從屬服務(wù)器發(fā)送信息包,該信息有關(guān)于存貯在該主服務(wù)器上的數(shù)據(jù)的改動(dòng),并且包含用于該數(shù)據(jù)當(dāng)前狀態(tài)的當(dāng)前版本號(hào),該信息進(jìn)一步有關(guān)于該數(shù)據(jù)的先前改動(dòng)以及用于每次先前改動(dòng)的版本號(hào);使每一從屬服務(wù)器都能夠確定該從屬服務(wù)器是否已經(jīng)被更新以對(duì)應(yīng)該當(dāng)前版本號(hào);如果該從屬服務(wù)器沒有錯(cuò)過先前的改動(dòng),則允許每一從屬服務(wù)器委托該信息;以及在該從屬服務(wù)器委托該信息包之前,允許每一錯(cuò)過了先前改動(dòng)的從屬服務(wù)器請(qǐng)求從主服務(wù)器向該從屬服務(wù)器發(fā)送先前的改動(dòng)。
15.如權(quán)利要求14所述的方法,進(jìn)一步包括向從屬服務(wù)器委托該信息包。
16.如權(quán)利要求14所述的方法,進(jìn)一步包括如果從屬服務(wù)器不能委托該更新,則中止該信息包的委托。
17.如權(quán)利要求14所述的方法,進(jìn)一步包括在將增量從主服務(wù)器送出之前,確定該增量的范圍。
18.如權(quán)利要求14所述的方法,進(jìn)一步包括在該增量中包括每一先前改動(dòng)的范圍。
19.一種用來通過包括主服務(wù)器與至少一個(gè)從屬服務(wù)器的網(wǎng)絡(luò)復(fù)制數(shù)據(jù)的方法,該方法包括以下步驟從主服務(wù)器向網(wǎng)絡(luò)上每一從屬服務(wù)器發(fā)送信息包,該信息有關(guān)于存貯在該主服務(wù)器上的數(shù)據(jù)的改動(dòng),并且包含用于該數(shù)據(jù)在先狀態(tài)的在先版本號(hào)以及用于該數(shù)據(jù)新狀態(tài)的新版本號(hào),該信息進(jìn)一步有關(guān)于該數(shù)據(jù)的先前改動(dòng)以及用于每次先前改動(dòng)的版本號(hào);使每一從屬服務(wù)器都能夠確定該從屬服務(wù)器上的數(shù)據(jù)是否對(duì)應(yīng)包含在該包中的該在先版本號(hào);如果在該從屬服務(wù)器上的該數(shù)據(jù)對(duì)應(yīng)包含在該包中的該在先版本號(hào),則允許每一從屬服務(wù)器委托該信息包,該委托還將該從屬服務(wù)器的版本更新到該新版本號(hào);以及在該從屬服務(wù)器委托該信息包之前,允許每一不對(duì)應(yīng)該在先版本號(hào)的從屬服務(wù)器請(qǐng)求從主服務(wù)器發(fā)送增量,該增量包含將該從屬服務(wù)器的版本更新到該在先版本號(hào)所需的信息。
20.一種用來通過包括主服務(wù)器與至少一個(gè)從屬服務(wù)器的網(wǎng)絡(luò)復(fù)制數(shù)據(jù)的方法,該方法包括以下步驟從主服務(wù)器向網(wǎng)絡(luò)上每一從屬服務(wù)器發(fā)送信息包,該信息有關(guān)于存貯在該主服務(wù)器上的數(shù)據(jù)的改動(dòng),并且包含用于該數(shù)據(jù)在先狀態(tài)的版本號(hào)以及用于該數(shù)據(jù)新狀態(tài)的版本號(hào),該信息進(jìn)一步有關(guān)于該數(shù)據(jù)的先前改動(dòng)以及用于每次先前改動(dòng)的版本號(hào);使每一從屬服務(wù)器都能夠確定該從屬服務(wù)器上的數(shù)據(jù)是否對(duì)應(yīng)包含在該包中的該在先版本號(hào);如果在該從屬服務(wù)器上的該數(shù)據(jù)對(duì)應(yīng)包含在該包中的該在先版本號(hào),則允許每一從屬服務(wù)器委托該信息包,該委托還將該從屬服務(wù)器的版本更新到該新版本號(hào);以及允許每一不對(duì)應(yīng)該在先版本號(hào)的從屬服務(wù)器請(qǐng)求從主服務(wù)器發(fā)送增量,該增量包含將該從屬服務(wù)器更新到該新版本號(hào)所需的信息。
21.一種用來通過網(wǎng)絡(luò)從主服務(wù)器向至少一個(gè)從屬服務(wù)器復(fù)制數(shù)據(jù)的方法,該方法包括以下步驟從主服務(wù)器向從屬服務(wù)器發(fā)送信息包,該信息有關(guān)于存貯在該主服務(wù)器上的數(shù)據(jù)的改動(dòng),并且包含該數(shù)據(jù)當(dāng)前狀態(tài)的版本號(hào);接收給從屬服務(wù)器的信息包;使該從屬服務(wù)器能夠確定在該從屬服務(wù)器是否已經(jīng)被更新以對(duì)應(yīng)包含在該包中的版本號(hào),并且進(jìn)一步確定如果需要更新以對(duì)應(yīng)包含在該包中的版本號(hào),該從屬服務(wù)器是否能夠處理該信息包;從該從屬服務(wù)器向主服務(wù)器發(fā)送信號(hào),該信號(hào)表示該從屬服務(wù)器是否需要被更新,以及該從屬服務(wù)器是否能夠處理該更新;以及從主服務(wù)器向從屬服務(wù)器發(fā)送響應(yīng)信號(hào),該信號(hào)表示該從屬服務(wù)器是否應(yīng)該對(duì)包含在該包中的信息進(jìn)行委托;以及如果該響應(yīng)信號(hào)表示應(yīng)該如此,則向該從屬服務(wù)器委托該信息包。
22.如權(quán)利要求21所述的方法,進(jìn)一步包括確定該至少一個(gè)從屬服務(wù)器中每一個(gè)是否都能委托該數(shù)據(jù)。
23.如權(quán)利要求21所述的方法,進(jìn)一步包括確定該至少一個(gè)從屬服務(wù)器中每一個(gè)是否都已經(jīng)將響應(yīng)發(fā)送回主服務(wù)器。
24.如權(quán)利要求21所述的方法,進(jìn)一步包括確定該至少一個(gè)從屬服務(wù)器中任何一個(gè)是否能夠委托該數(shù)據(jù)。
25.如權(quán)利要求21所述的方法,進(jìn)一步包括只有當(dāng)該至少一個(gè)從屬服務(wù)器中每一個(gè)都能夠處理該委托時(shí),才委托該數(shù)據(jù)。
26.如權(quán)利要求21所述的方法,進(jìn)一步包括只要當(dāng)該至少一個(gè)從屬服務(wù)器中任何一個(gè)不能處理該委托,就中止該數(shù)據(jù)。
27.如權(quán)利要求21所述的方法,進(jìn)一步包括向那些能夠處理該委托的從屬服務(wù)器委托該數(shù)據(jù)。
28.如權(quán)利要求21所述的方法,進(jìn)一步包括向該至少一個(gè)從屬服務(wù)器中任何一個(gè)不能處理該委托的從屬服務(wù)器多播該數(shù)據(jù)。
29.如權(quán)利要求21所述的方法,進(jìn)一步包括向該至少一個(gè)從屬服務(wù)器中任何一個(gè)不能處理該委托的從屬服務(wù)器脈動(dòng)該新版本號(hào)。
30.如權(quán)利要求21所述的方法,進(jìn)一步包括請(qǐng)求向不能處理該委托的從屬服務(wù)器發(fā)送增量。
31.一種用來通過網(wǎng)絡(luò)復(fù)制數(shù)據(jù)的方法,該方法包括以下步驟(a)確定該復(fù)制應(yīng)該用一階段還是兩階段方法完成;(b)通過以下方法發(fā)送被確定為用一階段方法完成的復(fù)制信息從主服務(wù)器向從屬服務(wù)器發(fā)送信息包,該信息有關(guān)于存貯在該主服務(wù)器上的數(shù)據(jù)的改動(dòng),并且包含該數(shù)據(jù)當(dāng)前狀態(tài)的版本號(hào);接收給從屬服務(wù)器的信息包;使該從屬服務(wù)器能夠確定在該從屬服務(wù)器上的該數(shù)據(jù)是否已經(jīng)被更新以對(duì)應(yīng)該版本號(hào);使該從屬服務(wù)器能夠確定在該從屬服務(wù)器上的該數(shù)據(jù)是否已經(jīng)被更新以對(duì)應(yīng)該版本號(hào);以及如果在該從屬服務(wù)器不對(duì)應(yīng)該版本號(hào),則請(qǐng)求從主服務(wù)器向從屬服務(wù)器發(fā)送增量,該增量包含更新該從屬服務(wù)器所需的信息。(c)通過以下方法發(fā)送被確定為用兩階段方法完成的復(fù)制信息從主服務(wù)器向從屬服務(wù)器發(fā)送信息包,該信息有關(guān)于存貯在該主服務(wù)器上的數(shù)據(jù)的改動(dòng),并且包含該數(shù)據(jù)當(dāng)前狀態(tài)的版本號(hào);使該從屬服務(wù)器能夠確定在該從屬服務(wù)器是否已經(jīng)被更新以對(duì)應(yīng)該版本號(hào),并且進(jìn)一步確定該從屬服務(wù)器是否能夠處理該信息包;從該從屬服務(wù)器向主服務(wù)器發(fā)送信號(hào),該信號(hào)表示該從屬服務(wù)器是否需要被更新,以及該從屬服務(wù)器是否能夠處理該更新;以及從主服務(wù)器向從屬服務(wù)器發(fā)送響應(yīng)信號(hào),該信號(hào)表示該從屬服務(wù)器是否應(yīng)該對(duì)該信息包進(jìn)行委托;以及如果該響應(yīng)信號(hào)表示應(yīng)該如此,則向該從屬服務(wù)器委托該信息包。
32.一種用來通過網(wǎng)絡(luò)復(fù)制數(shù)據(jù)的方法,該方法包括以下步驟(a)確定該復(fù)制應(yīng)該用一階段還是兩階段方法完成;(b)通過以下方法發(fā)送用一階段方法復(fù)制的信息從主服務(wù)器向從屬服務(wù)器發(fā)送該數(shù)據(jù)當(dāng)前狀態(tài)的版本號(hào);如果在該從屬服務(wù)器上的該數(shù)據(jù)不對(duì)應(yīng)該版本號(hào),則請(qǐng)求從主服務(wù)器向從屬服務(wù)器發(fā)送增量;以及(c)通過以下方法發(fā)送用兩階段方法復(fù)制的信息從主服務(wù)器向從屬服務(wù)器發(fā)送信息包;確定該從屬服務(wù)器是否能夠處理該信息包;以及如果該從屬服務(wù)器能夠處理該信息包,則向該從屬服務(wù)器委托該信息包。
33.一種用來在網(wǎng)絡(luò)上從主機(jī)向多個(gè)從屬復(fù)制數(shù)據(jù)的方法,該方法包括以下步驟(a)確定該復(fù)制應(yīng)該用一階段還是兩階段方法完成;(b)通過以下方法發(fā)送用一階段方法復(fù)制的信息從主機(jī)向每一個(gè)從屬發(fā)送該數(shù)據(jù)當(dāng)前狀態(tài)的版本號(hào);請(qǐng)求從主機(jī)向每一包含不對(duì)應(yīng)該版本號(hào)的數(shù)據(jù)的從屬發(fā)送增量;(c)通過以下方法發(fā)送用兩階段方法復(fù)制的信息從主機(jī)向從屬發(fā)送信息包;以及如果該多個(gè)從屬中的每一個(gè)都能夠處理該信息包,則向該從屬委托該信息包。
34.一種用來使用一及兩階段方法在網(wǎng)絡(luò)上從主機(jī)向多個(gè)從屬復(fù)制數(shù)據(jù)的方法,該方法包括以下步驟(a)通過以下方法發(fā)送用一階段方法復(fù)制的信息從主機(jī)向每一個(gè)從屬發(fā)送該數(shù)據(jù)當(dāng)前狀態(tài)的版本號(hào),從而每一個(gè)從屬可以請(qǐng)求從主機(jī)向該從屬發(fā)送增量以更新該從屬上的該數(shù)據(jù);以及(b)通過以下方法發(fā)送用兩階段方法復(fù)制的信息從主機(jī)向每一個(gè)從屬發(fā)送信息包,如果每一個(gè)從屬都能夠委托該信息包,則每一個(gè)從屬委托該信息包。
35.一種用來使用一及兩階段方法在族的網(wǎng)絡(luò)上復(fù)制數(shù)據(jù)的方法,每個(gè)網(wǎng)絡(luò)族包括族主機(jī)以及至少一個(gè)族從屬,該方法包括以下步驟(a)通過以下方法發(fā)送用一階段方法復(fù)制的信息從第一族主機(jī)向所有其他族主機(jī)發(fā)送該數(shù)據(jù)當(dāng)前狀態(tài)的版本號(hào),從而其他族主機(jī)每一個(gè)都可以請(qǐng)求增量;以及(b)通過以下方法發(fā)送用兩階段方法復(fù)制的信息從該第一族主機(jī)向其他族主機(jī)的每一個(gè)發(fā)送信息包,如果其他族主機(jī)能夠委托該信息包,則其他族主機(jī)委托該信息包。
36.如權(quán)利要求35所述的方法,進(jìn)一步包括通過一階段方法,從每一個(gè)族主機(jī)向與該族主機(jī)一同在族中的每一族從屬發(fā)送數(shù)據(jù)。
37.如權(quán)利要求35所述的方法,進(jìn)一步包括通過兩階段方法,從每一個(gè)族主機(jī)向與該族主機(jī)一同在族中的每一族從屬發(fā)送數(shù)據(jù)。
38.一種計(jì)算機(jī)可讀介質(zhì),包括(a)用于從主服務(wù)器向網(wǎng)絡(luò)上每一從屬服務(wù)器發(fā)送信息包的裝置,該信息有關(guān)于存貯在該主服務(wù)器上的數(shù)據(jù)的改動(dòng),并且包含用于該數(shù)據(jù)當(dāng)前狀態(tài)的當(dāng)前版本號(hào),該信息進(jìn)一步有關(guān)于該數(shù)據(jù)的先前改動(dòng)以及用于每次先前改動(dòng)的版本號(hào);(b)用于使每一從屬服務(wù)器都能夠確定該從屬服務(wù)器是否已經(jīng)被更新以對(duì)應(yīng)該當(dāng)前版本號(hào)的裝置;(c)用于如果該從屬服務(wù)器沒有錯(cuò)過先前的改動(dòng),則允許每一從屬服務(wù)器委托該信息的裝置;以及(d)用于在該從屬服務(wù)器委托該信息包之前,允許每一錯(cuò)過了先前改動(dòng)的從屬服務(wù)器請(qǐng)求從主服務(wù)器向該從屬服務(wù)器發(fā)送先前的改動(dòng)的裝置。
39.一種計(jì)算機(jī)程序產(chǎn)品,用來由服務(wù)器計(jì)算機(jī)執(zhí)行以通過網(wǎng)絡(luò)復(fù)制數(shù)據(jù),該產(chǎn)品包括(a)用于從主服務(wù)器向網(wǎng)絡(luò)上每一從屬服務(wù)器發(fā)送信息包的計(jì)算機(jī)代碼,該信息有關(guān)于存貯在該主服務(wù)器上的數(shù)據(jù)的改動(dòng),并且包含用于該數(shù)據(jù)當(dāng)前狀態(tài)的當(dāng)前版本號(hào),該信息進(jìn)一步有關(guān)于該數(shù)據(jù)的先前改動(dòng)以及用于每次先前改動(dòng)的版本號(hào);(b)用于使每一從屬服務(wù)器都能夠確定該從屬服務(wù)器是否已經(jīng)被更新以對(duì)應(yīng)該當(dāng)前版本號(hào)的計(jì)算機(jī)代碼;(c)用于如果該從屬服務(wù)器沒有錯(cuò)過先前的改動(dòng),則允許每一從屬服務(wù)器委托該信息的計(jì)算機(jī)代碼;以及(d)用于在該從屬服務(wù)器委托該信息包之前,允許每一錯(cuò)過了先前改動(dòng)的從屬服務(wù)器請(qǐng)求從主服務(wù)器向該從屬服務(wù)器發(fā)送先前的改動(dòng)的計(jì)算機(jī)代碼。
40.一種用來通過網(wǎng)絡(luò)復(fù)制數(shù)據(jù)的系統(tǒng),包括(a)用于從主服務(wù)器向網(wǎng)絡(luò)上每一從屬服務(wù)器發(fā)送信息包的裝置,該信息有關(guān)于存貯在該主服務(wù)器上的數(shù)據(jù)的改動(dòng),并且包含用于該數(shù)據(jù)當(dāng)前狀態(tài)的當(dāng)前版本號(hào),該信息進(jìn)一步有關(guān)于該數(shù)據(jù)的先前改動(dòng)以及用于每次先前改動(dòng)的版本號(hào);(b)用于使每一從屬服務(wù)器都能夠確定該從屬服務(wù)器是否已經(jīng)被更新以對(duì)應(yīng)該當(dāng)前版本號(hào)的裝置;(c)用于如果該從屬服務(wù)器沒有錯(cuò)過先前的改動(dòng),則允許每一從屬服務(wù)器委托該信息的裝置;以及(d)用于在該從屬服務(wù)器委托該信息包之前,允許每一錯(cuò)過了先前改動(dòng)的從屬服務(wù)器請(qǐng)求從主服務(wù)器向該從屬服務(wù)器發(fā)送先前的改動(dòng)的裝置。
41.一種計(jì)算機(jī)系統(tǒng),包括處理器;由所述處理器執(zhí)行的目標(biāo)代碼,所述目標(biāo)代碼被配置來(a)從主服務(wù)器向網(wǎng)絡(luò)上每一從屬服務(wù)器發(fā)送信息包,該信息有關(guān)于存貯在該主服務(wù)器上的數(shù)據(jù)的改動(dòng),并且包含用于該數(shù)據(jù)當(dāng)前狀態(tài)的當(dāng)前版本號(hào),該信息進(jìn)一步有關(guān)于該數(shù)據(jù)的先前改動(dòng)以及用于每次先前改動(dòng)的版本號(hào);(b)使每一從屬服務(wù)器都能夠確定該從屬服務(wù)器是否已經(jīng)被更新以對(duì)應(yīng)該當(dāng)前版本號(hào);(c)如果該從屬服務(wù)器沒有錯(cuò)過先前的改動(dòng),則允許每一從屬服務(wù)器委托該信息;以及(d)在該從屬服務(wù)器委托該信息包之前,允許每一錯(cuò)過了先前改動(dòng)的從屬服務(wù)器請(qǐng)求從主服務(wù)器向該從屬服務(wù)器發(fā)送先前的改動(dòng)。
42.一種用來通過網(wǎng)絡(luò)復(fù)制數(shù)據(jù)的系統(tǒng),包括a.包含該數(shù)據(jù)原始拷貝的主服務(wù)器,所述主服務(wù)器包括i.主服務(wù)器用戶層,用來通過調(diào)用開始方法來開始數(shù)據(jù)復(fù)制過程,該主服務(wù)器用戶層進(jìn)一步用來發(fā)送有關(guān)于該數(shù)據(jù)原始拷貝的信息;ii.主服務(wù)器服務(wù)層,包括開始方法,并且用來接收來自主服務(wù)器用戶層的調(diào)用以及有關(guān)于該數(shù)據(jù)原始拷貝的信息,該主服務(wù)器服務(wù)層進(jìn)一步用來產(chǎn)生并且發(fā)送數(shù)據(jù)復(fù)制包,該包包含至少一些有關(guān)于該數(shù)據(jù)原始拷貝的信息;b.從屬服務(wù)器,用來存儲(chǔ)來自該主服務(wù)器的數(shù)據(jù)的拷貝,該從屬服務(wù)器包括i.從屬服務(wù)器服務(wù)層,用來接收來自主服務(wù)器服務(wù)層的數(shù)據(jù)復(fù)制包,并且處理該數(shù)據(jù)復(fù)制包,該從屬服務(wù)器服務(wù)層進(jìn)一步用來發(fā)送有關(guān)于該數(shù)據(jù)復(fù)制包的信息;ii.從屬服務(wù)器用戶層,用來接收來自從屬服務(wù)器服務(wù)層的有關(guān)于該數(shù)據(jù)復(fù)制包的信息,該從屬服務(wù)器用戶層進(jìn)一步用來存儲(chǔ)在該數(shù)據(jù)復(fù)制包中的信息。
43.如權(quán)利要求42所述的系統(tǒng),其中所述主服務(wù)器用戶層與以下至少一個(gè)進(jìn)行通信主服務(wù)器用戶與主服務(wù)器用戶設(shè)備。
44.如權(quán)利要求42所述的系統(tǒng),其中所述主服務(wù)器用戶層用來以增量的形式發(fā)送有關(guān)于該數(shù)據(jù)原始拷貝的信息,該增量包含有關(guān)于該數(shù)據(jù)原始拷貝的當(dāng)前狀態(tài)與先前狀態(tài)之間的改動(dòng)的信息。
45.如權(quán)利要求42所述的系統(tǒng),其中所述主服務(wù)器用戶層用來更新該數(shù)據(jù)原始拷貝。
46.如權(quán)利要求42所述的系統(tǒng),其中所述主服務(wù)器用戶層用來發(fā)生退回消息,該消息表示對(duì)該數(shù)據(jù)原始拷貝的改動(dòng)不應(yīng)該在從屬服務(wù)器上復(fù)制。
47.如權(quán)利要求42所述的系統(tǒng),其中所述主服務(wù)器用戶層用來為該復(fù)制設(shè)置超時(shí)值。
48.如權(quán)利要求42所述的系統(tǒng),其中所述主服務(wù)器用戶層用來產(chǎn)生該數(shù)據(jù)原始拷貝的當(dāng)前狀態(tài)與該數(shù)據(jù)原始拷貝的在先狀態(tài)之間的增量。
49.如權(quán)利要求42所述的系統(tǒng),其中所述主服務(wù)器用戶層用來產(chǎn)生該數(shù)據(jù)原始拷貝的當(dāng)前狀態(tài)與該數(shù)據(jù)原始拷貝的先前狀態(tài)之間的增量。
50.如權(quán)利要求42所述的系統(tǒng),其中所述主服務(wù)器用戶層用來為該數(shù)據(jù)原始拷貝的每一個(gè)狀態(tài)生成唯一的版本號(hào)。
51.如權(quán)利要求42所述的系統(tǒng),其中所述主服務(wù)器服務(wù)層用來多播該數(shù)據(jù)復(fù)制包。
52.如權(quán)利要求42所述的系統(tǒng),其中所述主服務(wù)器服務(wù)層用來脈動(dòng)該數(shù)據(jù)復(fù)制包。
53.如權(quán)利要求42所述的系統(tǒng),其中所述主服務(wù)器服務(wù)層用來在該數(shù)據(jù)復(fù)制包內(nèi)包括版本號(hào)。
54.如權(quán)利要求42所述的系統(tǒng),其中所述主服務(wù)器服務(wù)層用來包括將從屬服務(wù)器上的該數(shù)據(jù)的拷貝更新到該數(shù)據(jù)原始拷貝的當(dāng)前狀態(tài)所許的信息。
55.如權(quán)利要求42所述的系統(tǒng),其中所述主服務(wù)器服務(wù)層進(jìn)一步用來生成并發(fā)送包括增量的數(shù)據(jù)復(fù)制包。
56.如權(quán)利要求42所述的系統(tǒng),其中所述主服務(wù)器服務(wù)層進(jìn)一步用來生成并發(fā)送包括該數(shù)據(jù)原始拷貝的連續(xù)狀態(tài)之間的增量的數(shù)據(jù)復(fù)制包。
57.如權(quán)利要求42所述的系統(tǒng),其中所述主服務(wù)器服務(wù)層進(jìn)一步用來生成并發(fā)送包括該數(shù)據(jù)原始拷貝的任意狀態(tài)之間的增量的數(shù)據(jù)復(fù)制包。
58.如權(quán)利要求42所述的系統(tǒng),其中所述主服務(wù)器服務(wù)層用來從主服務(wù)器用戶層請(qǐng)求增量。
59.如權(quán)利要求42所述的系統(tǒng),其中所述主服務(wù)器服務(wù)層用來向從屬服務(wù)器服務(wù)層發(fā)送委托消息。
60.如權(quán)利要求42所述的系統(tǒng),其中所述主服務(wù)器服務(wù)層用來向從屬服務(wù)器服務(wù)層脈動(dòng)委托消息。
61.如權(quán)利要求42所述的系統(tǒng),其中所述主服務(wù)器服務(wù)層用來向從屬服務(wù)器服務(wù)層多播委托消息。
62.如權(quán)利要求42所述的系統(tǒng),其中所述主服務(wù)器服務(wù)層用來向從屬服務(wù)器服務(wù)層發(fā)送中止消息。
63.如權(quán)利要求42所述的系統(tǒng),其中所述主服務(wù)器服務(wù)層用來脈動(dòng)中止消息。
64.如權(quán)利要求42所述的系統(tǒng),其中所述主服務(wù)器服務(wù)層用來多播中止消息。
65.如權(quán)利要求42所述的系統(tǒng),其中所述從屬服務(wù)器服務(wù)層與以下至少一個(gè)進(jìn)行通信從屬服務(wù)器用戶與從屬服務(wù)器用戶設(shè)備。
66.如權(quán)利要求42所述的系統(tǒng),其中所述從屬服務(wù)器服務(wù)層用來檢查在該從屬服務(wù)器上存儲(chǔ)的數(shù)據(jù)的當(dāng)前版本號(hào)。
67.如權(quán)利要求42所述的系統(tǒng),其中所述從屬服務(wù)器服務(wù)層向該從屬服務(wù)器上存儲(chǔ)的數(shù)據(jù)委托有關(guān)于該數(shù)據(jù)復(fù)制包的信息。
68.如權(quán)利要求42所述的系統(tǒng),其中所述從屬服務(wù)器服務(wù)層用來中止對(duì)該從屬服務(wù)器上存儲(chǔ)的數(shù)據(jù)的更新。
69.如權(quán)利要求42所述的系統(tǒng),其中所述從屬服務(wù)器服務(wù)層用來處理包含在該數(shù)據(jù)復(fù)制包中的準(zhǔn)備請(qǐng)求。
70.如權(quán)利要求42所述的系統(tǒng),其中所述從屬服務(wù)器服務(wù)層用來向該從屬服務(wù)器服務(wù)層發(fā)送響應(yīng),該響應(yīng)有關(guān)于包含在該數(shù)據(jù)復(fù)制包中的準(zhǔn)備請(qǐng)求。
71.如權(quán)利要求42所述的系統(tǒng),其中所述從屬服務(wù)器服務(wù)層用來在本地磁盤上持久緩存數(shù)據(jù)。
72.如權(quán)利要求42所述的系統(tǒng),其中所述從屬服務(wù)器服務(wù)層用來更新在該從屬服務(wù)器上的數(shù)據(jù)的拷貝的版本號(hào)。
73.如權(quán)利要求42所述的系統(tǒng),其中所述從屬服務(wù)器服務(wù)層用來從主服務(wù)器服務(wù)層請(qǐng)求增量。
74.如權(quán)利要求42所述的系統(tǒng),其中所述從屬服務(wù)器服務(wù)層用來從該從屬服務(wù)器用戶層請(qǐng)求在該從屬服務(wù)器上存儲(chǔ)的數(shù)據(jù)的當(dāng)前版本號(hào)。
75.如權(quán)利要求42所述的系統(tǒng),其中所述從屬服務(wù)器服務(wù)層用來向該從屬服務(wù)器用戶層發(fā)送委托消息。
76.如權(quán)利要求42所述的系統(tǒng),其中所述從屬服務(wù)器服務(wù)層用來向該從屬服務(wù)器用戶層發(fā)送中止消息。
77.一種用來從主服務(wù)器向從屬服務(wù)器復(fù)制數(shù)據(jù)的方法,包括
78.在主服務(wù)器上,從主服務(wù)器用戶級(jí)向主服務(wù)器服務(wù)級(jí)發(fā)送開始調(diào)用,該開始調(diào)用包括有關(guān)于該主服務(wù)器上主服務(wù)器數(shù)據(jù)的當(dāng)前狀態(tài)的信息;a.在主服務(wù)器上,向從屬服務(wù)器服務(wù)層發(fā)送該信息,該從屬服務(wù)器服務(wù)層用來檢查在該從屬服務(wù)器上的從屬用戶層,以確定在該從屬服務(wù)器上的從屬服務(wù)器數(shù)據(jù)是否具有當(dāng)前狀態(tài);b.從從屬服務(wù)器服務(wù)層向主服務(wù)器服務(wù)層發(fā)送對(duì)增量的請(qǐng)求,該主服務(wù)器服務(wù)層用來從主服務(wù)器用戶層請(qǐng)求并接收增量;c.從主服務(wù)器服務(wù)層向從屬服務(wù)器服務(wù)層發(fā)送增量,該增量包含將從屬服務(wù)器數(shù)據(jù)帶入當(dāng)前狀態(tài)所需的信息,該從屬服務(wù)器服務(wù)層用來處理該增量并且向從屬用戶層發(fā)生該信息;以及d.使用從屬服務(wù)器用戶層更新從屬服務(wù)器數(shù)據(jù)。
79.如權(quán)利要求77所述的方法,進(jìn)一步包括使用主服務(wù)器用戶層,確定該數(shù)據(jù)的當(dāng)前狀態(tài)的版本號(hào)。
80.如權(quán)利要求77所述的方法,進(jìn)一步包括通過多播向從屬服務(wù)器服務(wù)層發(fā)送該信息;
81.如權(quán)利要求77所述的方法,進(jìn)一步包括向從屬服務(wù)器服務(wù)層發(fā)生信息,該信息包括主服務(wù)器數(shù)據(jù)的當(dāng)前狀態(tài)的版本號(hào)。
82.一種用來從主服務(wù)器向從屬服務(wù)器復(fù)制數(shù)據(jù)的方法,包括a.在主服務(wù)器上,從主服務(wù)器用戶級(jí)向主服務(wù)器服務(wù)級(jí)發(fā)送新增量,該增量包括有關(guān)于在主服務(wù)器上存儲(chǔ)的主服務(wù)器數(shù)據(jù)從在先狀態(tài)到當(dāng)前狀態(tài)的改動(dòng)的信息;b.從主服務(wù)器服務(wù)層向從屬服務(wù)器上的從屬服務(wù)器服務(wù)層發(fā)送該新增量,該從屬服務(wù)器服務(wù)層用來檢查在該從屬服務(wù)器上的從屬用戶層,以確定在該從屬服務(wù)器上的從屬服務(wù)器數(shù)據(jù)是否具有當(dāng)前狀態(tài);c.從從屬服務(wù)器服務(wù)層向主服務(wù)器服務(wù)層發(fā)送對(duì)同步增量的請(qǐng)求,該主服務(wù)器服務(wù)層用來從主服務(wù)器用戶層請(qǐng)求并接收該同步增量,該同步增量包含將從屬服務(wù)器數(shù)據(jù)更新到主服務(wù)器數(shù)據(jù)的在先狀態(tài);d.從主服務(wù)器服務(wù)層向從屬服務(wù)器服務(wù)層發(fā)送同步增量,該從屬服務(wù)器服務(wù)層用來處理該增量并且向從屬用戶層發(fā)生待向該從屬服務(wù)器數(shù)據(jù)委托的信息;以及e.使用從屬服務(wù)器用戶層向從屬服務(wù)器數(shù)據(jù)委托該新增量中的信息。
83.一種用來從主服務(wù)器向從屬服務(wù)器復(fù)制數(shù)據(jù)的方法,該包括以下步驟a.從主服務(wù)器用戶層向主服務(wù)器服務(wù)層發(fā)送版本號(hào),該版本號(hào)有關(guān)于在主服務(wù)器上的數(shù)據(jù)的原始拷貝的當(dāng)前狀態(tài);b.使從屬服務(wù)器用戶層能夠確定在從屬服務(wù)器上的數(shù)據(jù)是否已經(jīng)被更新以對(duì)應(yīng)該版本號(hào);以及c.如果該在從屬服務(wù)器上的該數(shù)據(jù)不對(duì)應(yīng)該版本號(hào),則請(qǐng)求從主服務(wù)器服務(wù)層向從屬服務(wù)器服務(wù)層發(fā)送增量。
84.如權(quán)利要求77所述的方法,進(jìn)一步包括對(duì)于每一個(gè)從屬服務(wù)器,允許從屬服務(wù)器用戶層在本地磁盤上持久地緩存該數(shù)據(jù)。
85.如權(quán)利要求77所述的方法,進(jìn)一步包括使主服務(wù)器用戶層能夠?yàn)樵谥鞣?wù)器上的該數(shù)據(jù)的當(dāng)前狀態(tài)確定唯一的版本號(hào)。
86.如權(quán)利要求77所述的方法,進(jìn)一步包括與版本號(hào)一起包括從屬服務(wù)器用戶層更新從屬服務(wù)器上數(shù)據(jù)所需的數(shù)據(jù)。
87.如權(quán)利要求77所述的方法,進(jìn)一步包括一旦從屬服務(wù)器用戶層收到更新該從屬服務(wù)器所需的數(shù)據(jù)就委托該數(shù)據(jù)。
88.一種用來通過包括主服務(wù)器與至少一個(gè)從屬服務(wù)器的網(wǎng)絡(luò)復(fù)制數(shù)據(jù)的方法,該方法包括以下步驟a.從主服務(wù)器服務(wù)層向網(wǎng)絡(luò)上每一從屬服務(wù)器上的從屬服務(wù)器服務(wù)層發(fā)送信息包,該信息有關(guān)于存貯在該主服務(wù)器上的數(shù)據(jù)的改動(dòng),并且包含用于該數(shù)據(jù)在先狀態(tài)的在先版本號(hào)以及用于該數(shù)據(jù)新狀態(tài)的新版本號(hào),該信息進(jìn)一步有關(guān)于該數(shù)據(jù)的先前改動(dòng)以及用于每次先前改動(dòng)的版本號(hào);b.使每一從屬服務(wù)器上的從屬服務(wù)器服務(wù)層都能夠確定該從屬服務(wù)器上的數(shù)據(jù)是否對(duì)應(yīng)包含在該包中的在先版本號(hào);c.如果在該從屬服務(wù)器上的該數(shù)據(jù)對(duì)應(yīng)包含在該包中的該在先版本號(hào),則允許每一從屬服務(wù)器用戶層委托該信息包,該委托還將該從屬服務(wù)器的版本更新到該新版本號(hào);以及d.在該從屬服務(wù)器服務(wù)層委托該信息包之前,允許每一不對(duì)應(yīng)該在先版本號(hào)的從屬服務(wù)器用戶層請(qǐng)求從對(duì)應(yīng)于該從屬服務(wù)器用戶層的主服務(wù)器服務(wù)層發(fā)送增量,該增量包含將該從屬服務(wù)器的版本更新到該在先版本號(hào)所需的信息。
89.一種用來通過包括網(wǎng)絡(luò)從主服務(wù)器向至少一個(gè)從屬服務(wù)器復(fù)制數(shù)據(jù)的方法,該方法包括以下步驟a.從主服務(wù)器上的主服務(wù)器服務(wù)層向從屬服務(wù)器上的從屬服務(wù)器服務(wù)層發(fā)送信息包,該信息有關(guān)于存貯在該主服務(wù)器上的數(shù)據(jù)的改動(dòng),并且包含該數(shù)據(jù)當(dāng)前狀態(tài)的版本號(hào);b.使服務(wù)器上的從屬服務(wù)器用戶層能夠確定在該從屬服務(wù)器是否已經(jīng)被更新以對(duì)應(yīng)包含在該包中的版本號(hào),并且進(jìn)一步確定如果需要更新以對(duì)應(yīng)包含在該包中的版本號(hào),該從屬服務(wù)器用戶層是否能夠處理該信息包;c.從該從屬服務(wù)器服務(wù)層向主服務(wù)器服務(wù)層發(fā)送信號(hào),該信號(hào)表示該從屬服務(wù)器是否需要被更新,以及該從屬服務(wù)器是否能夠處理該更新;以及d.從主服務(wù)器服務(wù)層向從屬服務(wù)器服務(wù)層發(fā)送響應(yīng)信號(hào),該信號(hào)表示該從屬服務(wù)器用戶層是否應(yīng)該對(duì)包含在該包中的信息進(jìn)行委托;以及e.如果該響應(yīng)信號(hào)表示應(yīng)該如此,則向該從屬服務(wù)器委托該信息包。
90.一種計(jì)算機(jī)可讀介質(zhì),包括(a)用于從主服務(wù)器服務(wù)層向從屬服務(wù)器服務(wù)層發(fā)送版本號(hào)的裝置,該版本號(hào)有關(guān)于存貯在該主服務(wù)器上的數(shù)據(jù)的原始拷貝的當(dāng)前狀態(tài);(b)用于使從屬服務(wù)器用戶層能夠確定該從屬服務(wù)器上的數(shù)據(jù)是否已經(jīng)被更新以對(duì)應(yīng)該版本號(hào)的裝置;以及(c)用于如果在該從屬服務(wù)器上的數(shù)據(jù)不對(duì)應(yīng)該版本號(hào),則請(qǐng)求從主服務(wù)器服務(wù)層向從屬服務(wù)器服務(wù)層發(fā)送增量的裝置。
91.一種計(jì)算機(jī)程序產(chǎn)品,用來由服務(wù)器計(jì)算機(jī)執(zhí)行以通過網(wǎng)絡(luò)復(fù)制數(shù)據(jù),該產(chǎn)品包括a.用于從主服務(wù)器服務(wù)層向從屬服務(wù)器服務(wù)層發(fā)送版本號(hào)的計(jì)算機(jī)代碼,該版本號(hào)有關(guān)于存貯在該主服務(wù)器上的數(shù)據(jù)的原始拷貝的當(dāng)前狀態(tài);b.用于使從屬服務(wù)器用戶層能夠確定該從屬服務(wù)器上的數(shù)據(jù)是否已經(jīng)被更新以對(duì)應(yīng)該版本號(hào)的計(jì)算機(jī)代碼;以及c.用于如果在該從屬服務(wù)器上的數(shù)據(jù)不對(duì)應(yīng)該版本號(hào),則請(qǐng)求從主服務(wù)器服務(wù)層向從屬服務(wù)器服務(wù)層發(fā)送增量的計(jì)算機(jī)代碼。
92.一種用來通過網(wǎng)絡(luò)復(fù)制數(shù)據(jù)的系統(tǒng),包括a.用于從主服務(wù)器服務(wù)層向從屬服務(wù)器服務(wù)層發(fā)送版本號(hào)的裝置,該版本號(hào)有關(guān)于存貯在該主服務(wù)器上的數(shù)據(jù)的原始拷貝的當(dāng)前狀態(tài);b.用于使從屬服務(wù)器用戶層能夠確定該從屬服務(wù)器上的數(shù)據(jù)是否已經(jīng)被更新以對(duì)應(yīng)該版本號(hào)的裝置;以及c.用于如果在該從屬服務(wù)器上的數(shù)據(jù)不對(duì)應(yīng)該版本號(hào),則請(qǐng)求從主服務(wù)器服務(wù)層向從屬服務(wù)器服務(wù)層發(fā)送增量的裝置。
93.一種計(jì)算機(jī)系統(tǒng),包括處理器;由所述處理器執(zhí)行的目標(biāo)代碼,所述目標(biāo)代碼被配置來a.從主服務(wù)器服務(wù)層向從屬服務(wù)器服務(wù)層發(fā)送版本號(hào),該版本號(hào)有關(guān)于存貯在該主服務(wù)器上的數(shù)據(jù)的原始拷貝的當(dāng)前狀態(tài);b.使從屬服務(wù)器用戶層能夠確定該從屬服務(wù)器上的數(shù)據(jù)是否已經(jīng)被更新以對(duì)應(yīng)該版本號(hào);以及c.如果在該從屬服務(wù)器上的數(shù)據(jù)不對(duì)應(yīng)該版本號(hào),則請(qǐng)求從主服務(wù)器服務(wù)層向從屬服務(wù)器服務(wù)層發(fā)送增量。
全文摘要
可以使用一或兩階段方法通過網(wǎng)絡(luò)復(fù)制數(shù)據(jù)。對(duì)于一階段方法,包含數(shù)據(jù)原始拷貝的主服務(wù)器向網(wǎng)絡(luò)上每一個(gè)從屬服務(wù)器發(fā)送該數(shù)據(jù)當(dāng)前狀態(tài)的版本號(hào),從而每一個(gè)從屬服務(wù)器可以從主服務(wù)器請(qǐng)求增量。所請(qǐng)求的增量包括將該從屬服務(wù)器更新到該數(shù)據(jù)適當(dāng)版本所需的數(shù)據(jù)。對(duì)于兩階段方法,主服務(wù)器向每一從屬服務(wù)器發(fā)送信息包。由該從屬服務(wù)器委托(commit)該信息包,如果每個(gè)從屬服務(wù)器都能夠處理該委托的話。
文檔編號(hào)H04L29/08GK1555530SQ02817983
公開日2004年12月15日 申請(qǐng)日期2002年7月15日 優(yōu)先權(quán)日2001年7月16日
發(fā)明者迪安·B·雅各布斯, 雷托·克雷默, 阿南薩恩·B·斯里尼瓦桑, 克雷默, 恩 B 斯里尼瓦桑, 迪安 B 雅各布斯 申請(qǐng)人:Bea系統(tǒng)公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1