專利名稱:加強項目收斂(即數(shù)據(jù)收斂)的沖突判決傳播系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及跨越計算機系統(tǒng)的數(shù)據(jù)同步,尤其涉及判決對等同步系統(tǒng)中的沖突,并且按確保項目收斂(即數(shù)據(jù)收斂)的方式來傳播沖突判決(亦即,基于用于同步的變化單元的數(shù)據(jù)收斂)。
背景技術(shù):
對等同步環(huán)境中的不同的同步合伙者可以用不同的方法來判決出現(xiàn)在同步期間的沖突。這里先前所述的“基礎(chǔ)專利申請”中詳細地揭示了一個這樣的對等同步環(huán)境及其基礎(chǔ)硬件/軟件接口系統(tǒng)??傊?,這些“基礎(chǔ)專利申請”描述了一種硬件/軟件接口系統(tǒng)(例如但不局限于,操作系統(tǒng)),其中,其它可存儲信息(項目)的自主單元包括構(gòu)成用于同步的基本數(shù)據(jù)變化元素的幾個組件變化單元(CU)。每個CU具有關(guān)聯(lián)的元數(shù)據(jù),該元數(shù)據(jù)允許該同步系統(tǒng)跟蹤需要在對等計算機系統(tǒng)上更新什么變化,以及應該應用從其它對等計算機系統(tǒng)接收的什么變化。
通常按照存在于兩個對等計算機系統(tǒng)上的項目的單個變化單元,來描述使用變化單元和同步元數(shù)據(jù)(或類似的結(jié)構(gòu))的系統(tǒng)的一種示例性基本同步形式。關(guān)于該單個變化單元,第一對等體—合伙者A(或更簡單地說是“A”)通過向第二對等體—合伙者B(或更簡單地說是“B”)發(fā)送涉及該變化單元的其復制品(CUa)的當前元數(shù)據(jù)(Ma),來向B請求變化。一接收到Ma(對應于CUa),合伙者B就將該元數(shù)據(jù)與關(guān)于同一變化單元的其復制品(CUb)的其自己的元數(shù)據(jù)(Mb)進行比較。然后,如果Mb反映在Ma中沒有得到反映的、對CUb的任何更改,那么,B將CUb和Mb都發(fā)送給A;否則,B只將其Mb發(fā)送給A(或者,作為替代,將“無更新”指示符發(fā)送給A),因為CUa已反映對CUb作出的所有更新,從而將CUb從B復制到A是不必要的。
根據(jù)B對其同步請求的響應,如果A只從B接收回Mb(或者,作為替代,是“無更新”指示符),而不是CUb,那么,A知道CUa要么與CUb相同,要么比CUb更新。但是,如果A從B接收回Mb和CUb,那么,A隨后必須通過Ma和Mb的比較來確定CUb是否比CUa更新,或者,CUa和CUb是否具有沖突的變化。如果CUb比CUa更新,那么,A用CUb來更新CUa,A也用Mb來更新Ma。另一方面,如果CUa和CUb具有沖突的變化,那么,A根據(jù)其本地沖突判決程序來判決那個沖突。例如,如果A在此情況中的沖突判決程序是選擇本地解決方案優(yōu)于遠程解決判決方案,那么,A將會繼續(xù)保留CUa(拒絕CUb的變化),并更新Ma,以包括所有更新反映Ma和Mb(Ma和Mb的并集)。其后,當B隨后使用該相同的程序(并且假定沒有介入的額外的變化)來與A同步時,它將推斷出CUa比CUb更新,并用CUa來更新CUb。
這個基本的“變化單元和元數(shù)據(jù)(CUAM)”的同步方法對于二對等體同步團體而言簡單、有效。但是,如果有三個或更多的對等體,這個簡單的方法會導致該數(shù)據(jù)發(fā)散,以致兩個系統(tǒng)可能會獲得不同的沖突判決解決方案,但具有相同的元數(shù)據(jù),這樣,在該對等團體中既無法辨認該邏輯不一致性,也無法對其進行適當?shù)募m正。(這里稍后提供該現(xiàn)象的詳細的例子。)為了迫使所有對等體上的數(shù)據(jù)收斂,在本技術(shù)領(lǐng)域中需要一種用于各種類型的同步系統(tǒng)的同步方法,以便正確地識別和傳播同步團體中的各個對等體之間的特殊沖突判決,并在同一沖突的不同判決之間進行仲裁,以確保一致地收斂到跨越所有相關(guān)對等體的沖突的單一判決上。
發(fā)明內(nèi)容
本發(fā)明的各種實施例針對用于在手動和自動沖突判決操作期間檢測沖突和應用沖突判決的系統(tǒng)和方法。幾個實施例針對防止以下兩點(a)沖突判決的不收斂,其中,合伙者可以結(jié)束于發(fā)散的穩(wěn)定狀態(tài)(即,當缺少顯著的沖突時,具有不同的數(shù)據(jù));(b)合伙者之間的沖突判決的無盡往復轉(zhuǎn)換(會發(fā)生于某些無效率的解決方案,這些解決方案連續(xù)不斷地更新每個沖突判決的元數(shù)據(jù),無休無止)。本發(fā)明的某些具體實施例針對一種用于維護知識的方法,即使當不同的合伙者應用不同的沖突判決時,它也保證數(shù)據(jù)的收斂。
通過結(jié)合附圖來進行閱讀,會更好理解前面的概述以及較佳實施例的以下詳細說明。出于展示本發(fā)明的目的,這些附圖中示出了本發(fā)明的示例性結(jié)構(gòu);但是,本發(fā)明不局限于所揭示的這些具體的方法和手段。在這些附圖中圖1是表示了其中可以結(jié)合本發(fā)明的各個方面的計算機系統(tǒng)的框圖;圖2是基于表格的時間流程圖,示出了最終導致沖突判決的不收斂的三對等體同步操作(其中,合伙者可以結(jié)束于發(fā)散的穩(wěn)定狀態(tài));圖3是示出了本發(fā)明的幾個實施例所利用的改進的同步過程;圖4是基于表格的時間流程圖,示出了最終導致沖突判決的收斂的三對等體同步操作;以及,圖5是表格,示出了關(guān)于從圖4所示出的過程中產(chǎn)生的某些結(jié)束狀態(tài)的特殊處理和沖突處理的結(jié)果元數(shù)據(jù),以及涉及新的本地變化的元數(shù)據(jù)(出于比較的目的,因為新的本地變化不直接是同步操作的一部分)。
具體實施例方式
以細節(jié)描述了本發(fā)明,以符合法定要求。但是,該說明本身并不意在限制本專利的范圍。相反,發(fā)明人構(gòu)想所要求保護的本發(fā)明也可用其它方法來加以具體表現(xiàn),以便結(jié)合其它目前的或?qū)淼募夹g(shù),來包括類似于本文檔中所描述的步驟的不同的步驟或步驟組合。而且,雖然這里可以使用術(shù)語“步驟”來意味著所使用的方法的不同元素,但是,該術(shù)語不應該被解釋為暗示這里所揭示的各種步驟之中或之間的任何特定順序,除非和除了當明確地描述單獨的步驟的順序時以外。
計算機環(huán)境本發(fā)明的眾多實施例可以在計算機上執(zhí)行。圖1和下文意在簡要、概括地描述其中可以執(zhí)行本發(fā)明的合適的計算環(huán)境。雖然未作要求,但是,將在由計算機執(zhí)行的計算機可執(zhí)行指令(例如,程序模塊)的一般上下文中描述本發(fā)明。通常,程序模塊包括執(zhí)行特殊任務或?qū)崿F(xiàn)特殊的抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等。而且,本領(lǐng)域的技術(shù)人員將會理解,本發(fā)明可以利用其它計算機系統(tǒng)配置(包括手持設備、多處理器系統(tǒng)、基于微處理器的或可編程的消費者電子設備、網(wǎng)絡PC、小型計算機、大型計算機等)來加以實踐。也可以在分布式計算環(huán)境中實踐本發(fā)明,在這些分布式計算環(huán)境中,由通過通信網(wǎng)絡而被連接的遠程處理設備來執(zhí)行任務。在分布式計算環(huán)境中,程序模塊可以位于本地和遠程記憶存儲設備中。
如圖1所示,示例性通用計算系統(tǒng)包括常規(guī)個人計算機20或類似物,它包括處理單元21、系統(tǒng)存儲器22和系統(tǒng)總線23,系統(tǒng)總線23將包括系統(tǒng)存儲器的各種系統(tǒng)組件耦合到處理單元21。系統(tǒng)總線23可以是幾種類型的總線結(jié)構(gòu)中的任何總線結(jié)構(gòu),包括存儲總線或存儲控制器、外圍總線和使用各種總線構(gòu)造中的任何總線構(gòu)造的局部總線。系統(tǒng)存儲器包括只讀存儲器(ROM)24和隨機存取存儲器(RAM)25?;据斎?輸出系統(tǒng)26(BIOS)被存儲在ROM 24中,該基本輸入/輸出系統(tǒng)包含有助于在個人計算機20內(nèi)的各個元件之間傳送信息(例如,在啟動期間)的基本例程。個人計算機20還可以包括從硬盤(未示出)讀取并對其寫入的硬盤驅(qū)動器27、從可移動磁盤29讀取或?qū)ζ鋵懭氲拇疟P驅(qū)動器28、以及從可移動光盤31(例如,CD ROM或其它光學介質(zhì))讀取或?qū)ζ鋵懭氲墓獗P驅(qū)動器30。硬盤驅(qū)動器27、磁盤驅(qū)動器28和光盤驅(qū)動器30分別通過硬盤驅(qū)動器接口32、磁盤驅(qū)動器接口33和光驅(qū)接口34而被連接到系統(tǒng)總線23。這些驅(qū)動器及其關(guān)聯(lián)的計算機可讀介質(zhì)為個人計算機20提供計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的非易失存儲。雖然這里所描述的示例性環(huán)境使用硬盤、可移動磁盤29和可移動光盤31,但是,本領(lǐng)域的技術(shù)人員應該理解,也可以在示例性操作環(huán)境中使用可以存儲可由計算機存取的數(shù)據(jù)的其它類型的計算機可讀介質(zhì),例如,盒式磁帶、閃存卡、數(shù)字視頻盤、伯努里式(Bernoulli)磁帶匣、隨機存取存儲器(RAMs)、只讀存儲器(ROMs)等。
許多程序模塊可以被存儲在硬盤、磁盤29、光盤31、ROM 24或RAM 25上,它們包括操作系統(tǒng)35、一個或多個應用程序36、其它程序模塊37和程序數(shù)據(jù)38。用戶可以通過輸入設備(例如,鍵盤40和定點設備42),來將命令和信息輸入個人計算機20中。其它輸入設備(未示出)可以包括話筒、操縱桿、游戲墊、圓盤式衛(wèi)星電視天線、掃描儀或類似的輸入設備。這些和其它的輸入設備經(jīng)常通過被耦合到系統(tǒng)總線的串行端口接口46而被連接到處理單元21,但也可以由其它接口(例如,并行端口、游戲端口或通用串行總線(USB))來加以連接。監(jiān)視器47或其它類型的顯示設備也經(jīng)由接口(例如,視頻適配器48)而被連接到系統(tǒng)總線23。除監(jiān)視器47以外,個人計算機還通常包括諸如揚聲器和打印機等其它外圍輸出設備(未示出)。圖1中的示例性系統(tǒng)也包括主機適配器55、小型計算機系統(tǒng)接口(SCSI)總線56、以及被連接到SCSI總線56的外部存儲設備62。
個人計算機20可以使用與一臺或多臺遠程計算機(例如,遠程計算機49)的邏輯連接而在聯(lián)網(wǎng)環(huán)境中進行操作。遠程計算機49可以是另一臺個人計算機、服務器、路由器、網(wǎng)絡PC、對等設備或其它公用網(wǎng)絡節(jié)點,它通常包括以上相對于個人計算機20而描述的許多或所有元件,盡管圖1中只示出了記憶存儲設備50。圖1中所描繪的這些邏輯連接包括局域網(wǎng)(LAN)51和廣域網(wǎng)(WAN)52。這類聯(lián)網(wǎng)環(huán)境在辦公室、企業(yè)范圍的計算機網(wǎng)絡、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中很普遍。
當被用于LAN聯(lián)網(wǎng)環(huán)境中時,個人計算機20通過網(wǎng)絡接口或適配器53而被連接到LAN 51。當被用于WAN聯(lián)網(wǎng)環(huán)境中時,個人計算機20通常包括調(diào)制解調(diào)器54或用于通過廣域網(wǎng)52(例如,因特網(wǎng))建立通信的其它裝置。調(diào)制解調(diào)器54(可能是內(nèi)置的,也可能是外置的)經(jīng)由串行端口接口46而被連接到系統(tǒng)總線23。在聯(lián)網(wǎng)環(huán)境中,相對于個人計算機20或其各個部分而描繪的程序模塊可以被存儲在該遠程記憶存儲設備中。將會理解,所示的這些網(wǎng)絡連接起示例性作用,可以使用在這些計算機之間建立通信鏈路的其它裝置。
盡管可以預想本發(fā)明的眾多實施例特別適合計算機化系統(tǒng),但本文檔中沒有任何內(nèi)容意在將本發(fā)明局限于這類實施例。相反,如這里所使用的術(shù)語“計算機系統(tǒng)”意在包含能夠存儲和處理信息和/或能夠使用被存儲的信息來控制設備本身的行為或執(zhí)行的任何和所有的設備,而不管這類設備本質(zhì)上是電子的、機械的、邏輯的還是虛擬的。
基本同步模式和項目發(fā)散對于本發(fā)明的某些實施例,例如對于基于項目的系統(tǒng),“變化單元”本質(zhì)上是始終作為單元而加以同步化的屬性集。例如,“聯(lián)系人項目”的“名字”屬性和“姓”屬性可以共同包括單個變化單元。此外,“版本”與每個變化單元關(guān)聯(lián),以表示對那個變化單元以及對應于何時執(zhí)行更新的時標(timestamp)進行特定更改的最后的合伙者。這樣,如這里所使用的,為簡化符號表示法起見,用字母來表示合伙者,并且通過遞增整數(shù)來表示時標,以便只通過使合伙者(例如,“A”)和時標(例如,“1”)配對,每個變化單元與唯一的標識號相關(guān)聯(lián),從而反映每個合伙者在特定時間進行的最近的更改——例如,“A1”。
對于基本同步模式,例如,這里先前所描述的同步模式(它可能會導致數(shù)據(jù)的不收斂),每個變化單元的元數(shù)據(jù)包括兩個分量變化版本(cv),它指出該變化單元的當前“更新”狀態(tài);以及認識(awareness)矢量(av)(被稱為“版本數(shù)組”),它對應于對等團體中的每個合伙者的變化單元已發(fā)生的更新(或至少已作出任何更改的那些合伙者)。變化單元元數(shù)據(jù)的典型格式是<變化版本,認識矢量>,或更簡單地為<cv,[av]>??梢怨餐褂迷撔畔砣菀椎卮_定,例如,具有<A13,[A13,B11]>的元數(shù)據(jù)(Ma)的合伙者A上的變化單元(CUa)比具有<B11,[A12,B11]>的元數(shù)據(jù)(Mb)的合伙者B上的變化單元(CUb)更新,這是因為,假定每個版本號的時標分量隨時間的推移而遞增,Ma包括在Mb中沒有被反映的變化(即A13)。
圖2是基于表格的時間流程圖,示出了最終導致沖突判決的不收斂的三對等體同步操作(對于三合伙者同步團體),(其中,合伙者可以結(jié)束于發(fā)散的穩(wěn)定狀態(tài))。表格“T”中的第一列對應于事件的相對時間線(timeline),而第二、第三和第四列對應于同步團體中的三個合伙者系統(tǒng)A、B和C中的每個合伙者系統(tǒng)上的活動。為方便起見,如圖所示,每個合伙者A、B和C上的變化單元復制品的時間0處的初始狀態(tài)始于每個合伙者A、B和C的變化單元復制品的充分同步化(fully-synchronized)的狀態(tài)(每個復制品由每個對應的列的數(shù)據(jù)單獨表示)。
在時間1,通過用新的值(A11)遞增cv,并更新av來反映該更新狀態(tài),A可更新變化單元(在下文中被稱作“CUa”)的其復制品中的數(shù)據(jù)并反映那個更新。在時間2,B也獨立地更新變化單元(在下文中被稱作“CUb”)的其復制品中的數(shù)據(jù),并適當?shù)馗耤v和av。
在時間3,第一同步操作發(fā)生于與B同步的C。在操作中,通過使用這里先前討論的邏輯,C將其元數(shù)據(jù)(Mc)發(fā)送給B,作為響應,B將其變化單元(CUb)的副本和其關(guān)聯(lián)的元數(shù)據(jù)(Mb)發(fā)送給C,用于進一步處理。一接收到CUb和Mb,C就確定CUb和Mb比CUc和Mc更新,這是因為B的認識矢量(AVb)中的“B11”版本沒有在C的認識矢量(AVc)中得到反映,而所有的AVc都在AVb中得到反映,從而意味著對于CUc,CUb被“最后更新”(更新近)。結(jié)果,C利用來自CUb的數(shù)據(jù)來更新CUc,并且利用來自Mb的元數(shù)據(jù)來進一步更新關(guān)聯(lián)的元數(shù)據(jù)Mc。
在時間4,B隨后與合伙者A同步,并且,在接收A的變化單元(CUa)和元數(shù)據(jù)(Ma)(按照為方便起見而在下文中省略的邏輯討論)之后,B確定有沖突,因為B和A已獨立地對其各自的變化單元復制品CUb和CUa進行更改。隨后,B使用其沖突判決過程(在這個例子中,為“選擇遠程”,即,選擇遠程版本優(yōu)于其本地版本),來選擇CUa優(yōu)于CUb(將CUa的數(shù)據(jù)復制到CUb),并且,在元數(shù)據(jù)中反映這個判決,從而將其當前版本(CVb)更改成A11,并將B和A的認識矢量(AVb和AVa)合并在一起。
在時間5,C隨后與合伙者A同步,并且,在接收A的變化單元(CUa)和元數(shù)據(jù)(Ma)之后,C也確定存在沖突,因為C和A已獨立地對其各自的變化單元復制品CUc和CUa進行更改(雖然事實上CUc的變化確實是C先前在時間3與B同步的結(jié)果,盡管這個區(qū)別并不重要)。由于該沖突,C隨后使用其沖突判決過程(在這個例子中,為“選擇本地”,,即選擇其本地版本優(yōu)于遠程版本),來選擇CUc優(yōu)于CUa(其中,變化單元數(shù)據(jù)的額外復制不是必要的),并且通過將其當前版本(CVc)保留為B11而在元數(shù)據(jù)中反映這個判決,并將C和A的認識矢量(AVc和AVa)合并在一起。
在時間6,A隨后與B同步,并且,基于被交換的元數(shù)據(jù)(A將Ma發(fā)送給B,然后,B將Mb連同CUa一起返回給A),A認識到CUb和Mb比CUa和Ma更新(因為MB反映所有的Ma,Mb也反映版本B11,而Ma卻不是這樣);因此,A將CUb和Mb應用于其CUa和Ma(雖然應該注意,在此情況下,CUb和CUa實際上相同,A11,并且因此在替換實施例中,B可能會認識到這個事實,而不會發(fā)送CUb,或者,A可能不會將CUb復制到CUa)。
最后,在時間7,A隨后與C同步,但是,因為Ma與Mc相同,所以,C不會將CUc發(fā)送給A,這樣,分別在A和C上的CUa和CUc的數(shù)據(jù)已發(fā)生發(fā)散,這是現(xiàn)有同步系統(tǒng)無法辨認且必定較不和諧的狀態(tài)。
沖突判決傳播本發(fā)明的幾個實施例針對用于在手動和自動沖突判決操作期間檢測沖突和應用沖突判決的系統(tǒng)和方法,因為不同的對等體(“合伙者”)可以用不同的方法來解決相同的沖突,例如,在此情況中版本A1與B2之間有沖突,該沖突由贊同A1的合伙者X來解決,并由贊同B2的合伙者Y來解決。
本發(fā)明的各種實施例使用防止沖突判決的不收斂(其中,例如通過在缺少顯著沖突的情況中具有不同的數(shù)據(jù),合伙者可以結(jié)束于發(fā)散的穩(wěn)定狀態(tài))、以及合伙者之間的沖突判決的無盡往復轉(zhuǎn)換的一種或多種方法。
對于本發(fā)明的幾個實施例,除了包括變化版本(cv)和認識矢量(av)以外,關(guān)于同步的元數(shù)據(jù)還包括沖突判決版本(crv),用于明確地跟蹤可能會導致發(fā)散狀態(tài)的沖突判決?;跒樽兓瘑卧脑獢?shù)據(jù)添加crv,該同步過程被加以修改,以利用如這里所描述的元數(shù)據(jù)中的這個新元素。為方便起見,可以用對每個變化單元復制品用<cv,crv,[av]>的形式(例如,<A10,B12,[A11,B12,C10]>)來表示包括cv、crv和av的所述同步元數(shù)據(jù)。
圖3是處理流程圖,示出了基于為該元數(shù)據(jù)添加crv的、本發(fā)明的幾個實施例所利用的改進的同步過程,以及用于修改如這里所描述的元數(shù)據(jù)的其它過程。在該圖中,該過程開始于步驟312,其中第一合伙者P1(尋求與另一個對等體同步的合伙者)通過向P2發(fā)送關(guān)于其本地變化單元復制品(CU1)的其認識矢量(AV1)來啟動與第二合伙者P2的同步操作。在P2從P1那里接收AV1之后,在步驟316中,P2首先確定AV1是否包含關(guān)于其自己本地的、但對應的變化單元復制品(CU2)的變化版本(CV2);如果是,那么,在步驟318中,P2也確定AV1是否也包含CU2(如果有的話)的沖突判決版本(CRV2)。如果AV1滿足這兩個條件,那么,在步驟320中,P2立即向P1發(fā)送CU2的其元數(shù)據(jù)(M2)(包括CV2、CRV2和AV2),而不會發(fā)送CU2本身;否則,在步驟322中,P2向P1發(fā)送CU2,并在步驟320中發(fā)送M2。
返回到P1,在步驟324中,P1首先確定它是否從P2那里接收過CU2。如果否,那么,P1可以推斷出其變化單元復制品(CU1)反映如P1與P2之間的最新近的更新;所以,在步驟326中,P1只是用AV2來更新AV1(如果必要的話),以便AV1反映AV2中的所有更新版本(如果它還沒有這么做),并且,該同步過程結(jié)束。
相反,如果P1在步驟324中確實從P2那里接收CU2,那么,在步驟328中,P1必須首先確定AV1是否包含CV2所反映的版本;并且,如果是,則在步驟330中確定AV1是否也包含CRV2所反映的版本。如果是,那么,P1再次進行到步驟326,以更新AV1(如果必要的話),并且,該同步過程結(jié)束。另一方面,如果在步驟328中P1確定AV1的確包含CV2所反映的版本,但在步驟330中P1確定AV1不包含CRV2所反映的版本;那么,在步驟322中,P1確定AV2是否包含CV1所反映的這些版本中的至少一些版本—“一些”這個詞預期關(guān)于某些選擇性實施例,CV1可能是多個cv值的集合,但在單一cv值的情況中(例如,在這個例子中),這等同于包含在爭論中的cv值(因此是對單一cv集合的步驟334的某種重復),從而應該在單一cv情況中自動進行到步驟334,這是普遍使用的情況—并且,如果否,那么,在步驟326中,P1再次用AV2來更新AV1(如果必要的話),并且,該同步過程結(jié)束。
對比而言,如果相反在步驟328中AV1不包含CV2,或者如果在步驟332中AV2確實包含某個CV1,那么,在步驟334中,P1接下來確定AV2是否包含CV1。如果否,那么,在步驟336中,P1確定AV1是否包含CV2所反映的這些版本中的至少一些版本;并且,如果否,那么,在步驟338中,P1將CU2應用于CU1(或?qū)碜訡U2的數(shù)據(jù)復制到CU1),并將該對應的元數(shù)據(jù)M1(包括CV1、CRV1、AV1)設置為<CV2,CRV2,AV1+AV2>的各個值(其中,AV1+AV2是來自每個認識矢量的最近的版本的并集,例如,如果AV1=[A11,B10,C10]并且AV2=[A10,B11,C12],那么,AV1+AV2=[A11,B11,C12]),并且,該同步過程結(jié)束。但如果在步驟336中P1相反確定AV1確實包含某個CV2,那么,在步驟340中,P1也確定AV2是否包含CRV1;并且,如果是,那么,P1再次進行到步驟338,以應用如先前所描述的CU2,并且,該同步過程結(jié)束。
作為選擇,如果在步驟334中P1相反確定AV2不包含CV1,或者如果在步驟340中P1相反確定AV2不包含CRV1,那么,在這兩種情況中的任何一種情況中,P1在步驟342中確定AV1是否包含CV2;并且,如果是,那么,在步驟344中,P1使用“特殊處理”來選擇解決方案(因為沒有沖突),其后結(jié)束該同步過程;或者,如果否,那么,在步驟346中,P1啟動“沖突處理”(或沖突判決處理)來判決該沖突,并在這兩個數(shù)據(jù)集之間選擇優(yōu)勝者,并且結(jié)束該同步過程。
高級同步模式和項目收斂(即數(shù)據(jù)收斂)通過使用如圖3中所示出的前述方法,可避免這種情況具有不同的變化單元值、但具有相同的元數(shù)據(jù)的兩個變化單元復制品(如同該基本同步模式的情況)沒有被辨認出來并仍然處于發(fā)散狀態(tài);通過應用與圖2中所示出的情形相類似的情形、但應用圖3中所示出的本發(fā)明的方法,圖4示出了這個要點。
更具體地說,圖4是基于表格的時間流程圖,示出了最終導致沖突判決的收斂的三對等體同步操作。此外,圖5是表格,示出了關(guān)于從圖3所示的過程中產(chǎn)生的某些結(jié)束狀態(tài)的特殊處理和沖突處理的合成元數(shù)據(jù)、以及涉及新的本地變化的元數(shù)據(jù)(出于比較的目的,因為新的本地變化不直接是同步操作的一部分,而是對元數(shù)據(jù)如何在時間1和時間2為本地更新(例如,如這里所描述的本地更新)而變化的理解)。
再次參考圖4,表格“T”中的第一列再一次對應于事件的相對時間線,而第二、第三和第四列對應于同步團體中的三個合伙者系統(tǒng)A、B和C中的每個合伙者系統(tǒng)上的活動。為方便起見,如圖所示,每個合伙者A、B和C上的變化單元復制品在時間0處的初始狀態(tài)始于每個合伙者A、B和C的變化單元復制品的充分同步化的狀態(tài)(每個復制品由每個對應的列的數(shù)據(jù)來單獨表示)。
在時間1,通過用新的值(A11)遞增其變化版本(cv),并更新該認識矢量(av)來反映該更新狀態(tài),A可更新其變化單元(在下文中被稱作“CUa”)的復制品中的數(shù)據(jù)并反映那個更新,并且,不對沖突判決版本(crv)進行更新(因為沒有判決過沖突)。在時間2,B也獨立地更新其變化單元(在下文中被稱作“CUb”)的復制品中的數(shù)據(jù),并如所示的那樣適當?shù)馗缕鋵脑獢?shù)據(jù)(Mb)分量。(在下文中,為方便起見,在每一合伙者的基礎(chǔ)上表示每個合伙者cv、crv和av,例如對等體A的元數(shù)據(jù)分量的CVa、CRVa和AVa、以及合伙者B和C上的對應的元數(shù)據(jù)的類似的命名法。這同樣應用于集體元數(shù)據(jù),例如,系統(tǒng)A的Ma,以及變化單元,例如,系統(tǒng)A的CUa等。)在時間3,第一同步操作發(fā)生于與B同步的C。通過使用圖3中的流程圖所示的方法,C將AVc發(fā)送給B,并且,B將CUb和Mb都返回給C。通過分析Mb和Mc,C能夠確定CUb比CUc更新,并且最終應用CUb(即,將CUb復制到CUc),并將其元數(shù)據(jù)Mc分量CVc、CRVc和AVc更新為等于<CVb,CRVb,AVc+AVb>(其中,AVc+AVb是如這里先前所描述的AVc和AVb的并集)的值。更具體地說,對于圖3所示的過程,該邏輯處理按順序遍歷以下步驟312、316、322、320、324、328、334、336、340和338。(注意,該結(jié)果類似于將會從這里先前所描述的該基本同步系統(tǒng)中預期的結(jié)果。)再次參考圖4,在時間4,B隨后與合伙者A同步,并且,在接收A的變化單元(CUa)和元數(shù)據(jù)(Ma)(再次根據(jù)圖3中的流程圖所展示的方法)之后,B確定存在沖突,因為B和A都已獨立地對其各自的變化單元復制品CUb和CUa進行更改,并使用其沖突判決過程。更具體地,關(guān)于圖3所展示的過程,該邏輯處理有序地遍歷以下步驟312、316、322、320、324、328、334、342和346。為了判決該沖突,根據(jù)其沖突判決程序,B選擇遠程更新優(yōu)于本地更新,并且,如圖5中所展示的,關(guān)于Mb的最后得到的元數(shù)據(jù)值是<CVa,CRVnew,AVa+AVb+CRVnew>—其中,CRVnew的“new(新)”是合伙者B的下一個遞增的更新版本(例如,在這個例子中,該最后的更新版本是時間2處的變化的B11,所以,目前的沖突判決的下一個遞增的更新版本是B12),并且,CRVb和AVb(但不是CVb)都反映時間4處的Mb的結(jié)束狀態(tài)的、如圖4所示的這個新的值。
在時間5,C隨后與合伙者A同步,并且,在接收A的變化單元(CUa)和元數(shù)據(jù)(Ma)之后,C也確定(經(jīng)由圖3中的過程,該過程有序地遍歷312、316、322、320、324、328、334、342和346)存在沖突,因為C和A已獨立地對其各自的變化單元復制品CUc和CUa進行更改(雖然事實上CUc的變化確實是C先前在時間3與B同步的結(jié)果,盡管這個區(qū)別并不重要)。由于該沖突,C隨后使用其沖突判決過程(在這個例子中,將要選擇本地更新優(yōu)于遠程更新),來選擇越過CUc優(yōu)于CUa;并且,如圖5中所展示的,這個選擇在元數(shù)據(jù)中得到反映,為<CVc,CRVnew,AVa+AVc+CRVnew>—其中,CRVnew又是合伙者C的下一個遞增的更新版本(例如,在這個例子中是C11),并且由時間5處的Mc的結(jié)束狀態(tài)的、如圖4所示的所得的CRVc和所得AVc(但不是CVc)來反映。
在時間6,A隨后與B同步,并且,基于被交換的元數(shù)據(jù)(A將Ma發(fā)送給B,然后,B將Mb連同CUa一起返回給A),A認識到CUb和Mb比CUa和Ma更新(因為MB反映所有的Ma,Mb也反映版本B11,而Ma卻不是這樣);因此,A將CUb和Mb值如所示的應用于其CUa和Ma(雖然應該注意在此情況下,CUb和CUa實際上相同;但是,A11和(因此在選擇性實施例中B)可能會認識到這個事實,而不會發(fā)送CUb,或者,A可能不會將CUb復制到CUa)。關(guān)于圖3,該同步的特殊遍歷按順序是312、316、318、322、320、324、328、334、336、340和338。
再次返回到圖4,在時間7,A隨后與C同步,但由于當發(fā)生沖突時如這里先前所描述的沖突判決版本(crv)的利用以及其邏輯并入認識版本(av),Ma不再與Mc相同(這是使用標準同步模式的情況),所以,C確實將CUc和Mc發(fā)送給A,用于進一步處理(根據(jù)圖3所描述的過程),并且,A最終采用特殊處理(經(jīng)由有序地遍歷以下步驟的圖3中的過程312、316、318、322、320、324、328、330、332、334、336、340、342和344)。明確地意在加強項目收斂(即數(shù)據(jù)收斂)的該特殊處理隨后使用一種方法來獲得確定性解決方案,該解決方案確保在該同步團體中通用地選擇一個更新優(yōu)于另一個更新(例如,在這個例子中,是具有最低的更新號碼的那個更新,該最低的更新號碼又是該唯一的計算機系統(tǒng)標識符和所述更新的時標的組合)。然后,這個解決方案與如圖5所示的<Cvdet,CRVdet,AV1+AV2>的被更新的元數(shù)據(jù)耦合,或者,在目前的情況中—其中,“A11”的對應的值小于“B11”的對應的值,因此,A11是被確定的解決方案,元數(shù)據(jù)Ma在時間7變成具有圖4所示的這些值的<CVa,CRVa,AVa+AVc>。
在圖4中的時間8和時間9,隨后會容易明白時間7處的這個特殊處理解決方案如何傳播通過該同步團體,并最終導致項目收斂(即數(shù)據(jù)收斂)(其中,每個系統(tǒng)上的變化單元再次是相同的)。在時間6,方法的邏輯過程遍歷(經(jīng)由圖3中所展示的過程的步驟312、316、318、320、324和326)導致Mb的AVb的更新。在時間7,該方法的邏輯過程遍歷(經(jīng)由圖3中所展示的過程的步驟312、316、318、322、320、324、328、330、332、334、336、340和338)導致將CUb和Mb應用于CUc和Mc—其中,所得的元數(shù)據(jù)Mc包括等同于<CUb,CRVb,AVb+AVc>的值。
用于項目收斂(即數(shù)據(jù)收斂)的替換方法在本發(fā)明的選擇性實施例中,通過在沖突的時間使用所有沖突判決的特殊處理確定性方法,也可確保項目收斂(即數(shù)據(jù)收斂)。但是,盡管該方法甚至會允許該基本同步模式確保項目收斂(即數(shù)據(jù)收斂),但它也引入對可能不一定會發(fā)生發(fā)散的沖突的任意判決,從而不如這里先前所描述的高級同步方法那樣具有健壯性。
結(jié)論這里所描述的各種系統(tǒng)、方法和技術(shù)可以利用硬件或軟件、或(如果適當?shù)脑?利用兩者的組合來加以執(zhí)行。這樣,本發(fā)明的這些方法和裝置、或其某些方面或部分可以采取在有形介質(zhì)(例如,軟盤、CD-ROM、硬盤、或任何其它的機器可讀存儲介質(zhì))中包含的程序代碼的形式,其中,當該程序代碼被載入機器(例如,計算機)并由該機器來執(zhí)行時,該機器成為用于實踐本發(fā)明的裝置。在可編程計算機上的程序代碼執(zhí)行的情況中,該計算機將通常包括處理器、處理器可讀的存儲介質(zhì)(包括易失和非易失存儲器和/或存儲元件)、至少一個輸入設備和至少一個輸出設備。一個或多個程序較佳地用高級的過程語言或面向?qū)ο蟮木幊陶Z言來實現(xiàn),以便與計算機系統(tǒng)進行通信。但是,該程序可以用匯編語言或機器語言來實現(xiàn)(如果需要的話)。無論如何,語言都可以是被編譯或被解釋的語言,并可以與硬件實現(xiàn)結(jié)合。
本發(fā)明的這些方法和裝置也可以采取通過某種傳輸介質(zhì)(例如,通過電線或電纜線路、通過光纖、或經(jīng)由任何其它形式的傳輸)傳送的程序代碼的形式來實施,其中,當該程序代碼被機器(例如,EPROM、門陣列、可編程邏輯設備(PLD)、客戶機計算機、錄像機或類似的機器)接收、被載入該機器并由該機器來執(zhí)行時,該機器成為用于實踐本發(fā)明的裝置。當在通用處理器上實現(xiàn)時,該程序代碼與處理器結(jié)合,以提供一種獨特的裝置,該裝置進行操作,以執(zhí)行本發(fā)明的索引功能。
已結(jié)合各附圖的這些較佳實施例來描述本發(fā)明,但將要理解可以使用其它類似的實施例,或者可以對這里所描述的實施例實行修改和添加,用于執(zhí)行本發(fā)明的相同功能,而不偏離本發(fā)明。例如,盡管在模仿個人計算機的功能性的數(shù)字設備的環(huán)境中描述本發(fā)明的示范實施例,但本領(lǐng)域的技術(shù)人員將會認識到本發(fā)明不局限于如本申請中所描述的這類數(shù)字設備,它可以應用于任何數(shù)量的現(xiàn)存的或?qū)淼挠嬎阍O備或環(huán)境(例如,游戲控制臺、手持計算機、便攜式計算機等,不管是有線的還是無線的),并可以應用于經(jīng)由通信網(wǎng)絡而被連接,并跨越該網(wǎng)絡而相互作用的任何數(shù)量的這類計算設備。另外,應該強調(diào)尤其是當無線聯(lián)網(wǎng)設備的數(shù)量繼續(xù)激增時,這里預期了各種計算機平臺(包括手持設備操作系統(tǒng)和其它專用硬件/軟件接口系統(tǒng))。所以,本發(fā)明不應該局限于任何單一實施例,而是應該根據(jù)所附權(quán)利要求書來在寬度和范圍方面加以解釋。
權(quán)利要求
1.一種用于使同步團體中的至少兩個對等計算機系統(tǒng)之間的變化單元數(shù)據(jù)同步的方法,其特征在于,所述方法包括使所述至少兩個對等計算機系統(tǒng)之間的變化單元數(shù)據(jù)同步;以及通過使用對應于所述變化單元數(shù)據(jù)的元數(shù)據(jù)分量,來確保該同步團體中所述變化單元數(shù)據(jù)的收斂,所述元數(shù)據(jù)分量包括一沖突判決版本分量。
2.如權(quán)利要求1所述的方法,其特征在于,在同步期間使用所述沖突判決分量,以便從包括所述同步團體的所述至少兩個計算機系統(tǒng)之間識別至少兩個計算機系統(tǒng)中的所述變化單元的發(fā)散狀態(tài)。
3.如權(quán)利要求2所述的方法,其特征在于,它還包括糾正所述變化單元中的所述發(fā)散狀態(tài),并在整個同步團體中傳播所述被糾正的變化單元。
4.如權(quán)利要求3所述的方法,其特征在于,它還包括一用于在發(fā)生沖突時判決沖突的自動系統(tǒng)。
5.一種方法,用于判決同步團體及其成員合伙者計算機系統(tǒng)的對等同步系統(tǒng)中的變化單元數(shù)據(jù)的發(fā)散狀態(tài),所述數(shù)據(jù)包含在第一計算機系統(tǒng)上的第一變化單元中和第二計算機系統(tǒng)上的第二變化單元中,其特征在于,所述方法包括跟蹤在第一同步操作期間發(fā)生的沖突判決;在隨后的同步操作期間識別所述第一變化單元與所述第二變化單元之間的變化單元數(shù)據(jù)的發(fā)散狀態(tài);確定性地選擇變化單元解決方案,以確保所述同步團體中的變化單元數(shù)據(jù)的收斂。
6.如權(quán)利要求5所述的方法,其特征在于,所述第一變化單元還包括第一版本號,并且其中,所述第二變化單元還包括第二版本號,并且其中,確定性地選擇變化單元解決方案以確保所述同步團體中的變化單元數(shù)據(jù)的收斂這個元素包括,基于來自所述第一版本號與所述第二版本號的比較的所述較低的版本號,來分別選擇第一變化單元、第二變化單元。
7.一種用于使第一計算機系統(tǒng)(P1)與第二計算機系統(tǒng)(P2)之間的變化單元數(shù)據(jù)同步的方法,所述第一計算機系統(tǒng)包括所述變化單元的第一復制品(CU1)和對應于所述第一復制品的第一元數(shù)據(jù)(M1),所述元數(shù)據(jù)還包括第一變化版本(CV1)、第一沖突判決版本(CRV1)和第一認識矢量(AV1),并且,所述第二計算機系統(tǒng)包括所述變化單元的第二復制品(CU2)和對應于所述第二復制品的第二元數(shù)據(jù)(M2),所述元數(shù)據(jù)還包括第二變化版本(CV2)、第二沖突判決版本(CRV2)和第二認識矢量(AV2),其特征在于,所述方法包括將AV1從P1發(fā)送到P2;確定AV1是否包含CV2和CRV2,并且,如果是,則將CU2從P2發(fā)送到P1;將M2從P2發(fā)送到P1;將M2與M1進行比較,完成任何所要求的同步更新,并且解決發(fā)生的任何沖突或特殊處理情況;以及更新CU1和M1,并且,如果已發(fā)生沖突,則進一步更新CRV1和AV1,以反映沖突判決,從而防止發(fā)生發(fā)散狀態(tài)。
8.一種用于使同步團體中的至少兩個對等計算機系統(tǒng)之間的變化單元數(shù)據(jù)同步的系統(tǒng),其特征在于,所述系統(tǒng)包括至少一個子系統(tǒng),用于使所述至少兩個對等計算機系統(tǒng)之間的所述變化單元數(shù)據(jù)同步;以及通過使用對應于所述變化單元數(shù)據(jù)的元數(shù)據(jù)分量,來確保該同步團體中的所述變化單元數(shù)據(jù)的收斂,所述元數(shù)據(jù)分量包括一沖突判決版本分量。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,它還包括至少一個子系統(tǒng),由此,在同步期間使用所述沖突判決分量,以便從包括所述同步團體的所述至少兩個計算機系統(tǒng)之中識別出至少兩個計算機系統(tǒng)中的所述變化單元的發(fā)散狀態(tài)。
10.如權(quán)利要求9所述的系統(tǒng),其特征在于,它還包括,糾正所述變化單元的所述發(fā)散狀態(tài),并在整個同步團體中傳播所述被糾正的變化單元。
11.如權(quán)利要求10所述的系統(tǒng),其特征在于,它還包括用于在發(fā)生沖突時自動判決沖突的至少一個子系統(tǒng)。
12.一種系統(tǒng),用于判決同步團體及其成員合伙者計算機系統(tǒng)的對等同步系統(tǒng)中的變化單元數(shù)據(jù)的發(fā)散狀態(tài),所述數(shù)據(jù)包含在第一計算機系統(tǒng)上的第一變化單元中和第二計算機系統(tǒng)上的第二變化單元中,其特征在于,所述系統(tǒng)包括至少一個子系統(tǒng),用于跟蹤在第一同步操作期間發(fā)生的沖突判決;在隨后的同步操作期間識別所述第一變化單元與所述第二變化單元之間的變化單元數(shù)據(jù)的發(fā)散狀態(tài);確定性地選擇一變化單元解決方案,以確保所述同步團體中的變化單元數(shù)據(jù)的收斂。
13.如權(quán)利要求12所述的系統(tǒng),其特征在于,它還包括至少一個子系統(tǒng),由此,所述第一變化單元還包括第一版本號,并且其中,所述第二變化單元還包括第二版本號;并且,所述系統(tǒng)還包括至少一個子系統(tǒng),由此,確定性地選擇一變化單元解決方案以確保所述同步團體中的變化單元數(shù)據(jù)的收斂這個元素包括基于來自所述第一版本號與所述第二版本號的比較的所述較低的版本號,來分別選擇第一變化單元、第二變化單元。
14.一種用于使第一計算機系統(tǒng)(P1)與第二計算機系統(tǒng)(P2)之間的變化單元數(shù)據(jù)同步的系統(tǒng),所述第一計算機系統(tǒng)包括所述變化單元的第一復制品(CU1)和對應于所述第一復制品的第一元數(shù)據(jù)(M1),所述元數(shù)據(jù)還包括第一變化版本(CV1)、第一沖突判決版本(CRV1)和第一認識矢量(AV1),并且,所述第二計算機系統(tǒng)包括所述變化單元的第二復制品(CU2)和對應于所述第二復制品的第二元數(shù)據(jù)(M2),所述元數(shù)據(jù)還包括第二變化版本(CV2)、第二沖突判決版本(CRV2)和第二認識矢量(AV2),其特征在于,所述系統(tǒng)包括至少一個子系統(tǒng),用于;將AV1從P1發(fā)送到P2;確定AV1是否包含CV2和CRV2,并且,如果是,則將CU2從P2發(fā)送到P1;將M2從P2發(fā)送到P1;將M2與M1進行比較,完成任何所要求的同步更新,并且判決發(fā)生的任何沖突或特殊處理情況;以及更新CU1和M1,并且,如果已發(fā)生沖突,則進一步更新CRV1和AV1,以反映沖突判決,從而防止發(fā)生發(fā)散狀態(tài)。
15.一種包括計算機可讀指令的計算機可讀介質(zhì),所述計算機可讀指令用于使同步團體中的至少兩個對等計算機系統(tǒng)之間的變化單元數(shù)據(jù)同步,其特征在于,所述計算機可讀指令包括指令,用于使所述至少兩個對等計算機系統(tǒng)之間的所述變化單元數(shù)據(jù)同步;以及通過使用對應于所述變化單元數(shù)據(jù)的元數(shù)據(jù)分量,來確保該同步團體中的所述變化單元數(shù)據(jù)的收斂,所述元數(shù)據(jù)分量包括一沖突判決版本分量。
16.如權(quán)利要求15所述的計算機可讀介質(zhì),其特征在于,所述計算機可讀指令還包括指令,由此,在同步期間使用所述沖突判決分量,以便從包括所述同步團體的所述至少兩個計算機系統(tǒng)之中識別出至少兩個計算機系統(tǒng)中的所述變化單元的發(fā)散狀態(tài)。
17.如權(quán)利要求16所述的計算機可讀介質(zhì),其特征在于,所述計算機可讀指令還包括指令,用于糾正所述變化單元的所述發(fā)散狀態(tài),并在整個同步團體中傳播所述被糾正的變化單元。
18.如權(quán)利要求17所述的計算機可讀介質(zhì),其特征在于,所述計算機可讀指令還包括指令,用于在發(fā)生沖突時自動判決沖突。
19.一種包括計算機可讀指令的計算機可讀介質(zhì),所述計算機可讀指令用于解決同步團體及其成員合伙者計算機系統(tǒng)的對等同步系統(tǒng)中的變化單元數(shù)據(jù)的發(fā)散狀態(tài),所述數(shù)據(jù)包含在第一計算機系統(tǒng)上的第一變化單元中和第二計算機系統(tǒng)上的第二變化單元中,其特征在于,所述計算機可讀指令包括指令,用于跟蹤在第一同步操作期間發(fā)生的沖突判決;在隨后的同步操作期間識別所述第一變化單元與所述第二變化單元之間的變化單元數(shù)據(jù)的發(fā)散狀態(tài);確定性地選擇一變化單元解決方案,以確保所述同步團體中的變化單元數(shù)據(jù)的收斂。
20.如權(quán)利要求19所述的計算機可讀介質(zhì),其特征在于,所述計算機可讀指令還包括指令,由此,所述第一變化單元還包括第一版本號,并且其中,所述第二變化單元還包括第二版本號;并且,所述計算機可讀指令還包括指令,由此,確定地選擇一變化單元解決方案以確保所述同步團體中的變化單元數(shù)據(jù)的收斂這個元素包括,基于來自所述第一版本號與所述第二版本號的比較的所述較低的版本號,來分別選擇第一變化單元、第二變化單元。
21.一種包括計算機可讀指令的計算機可讀介質(zhì),所述計算機可讀指令用于使第一計算機系統(tǒng)(P1)與第二計算機系統(tǒng)(P2)之間的變化單元數(shù)據(jù)同步,所述第一計算機系統(tǒng)包括所述變化單元的第一復制品(CU1)和對應于所述第一復制品的第一元數(shù)據(jù)(M1),所述元數(shù)據(jù)還包括第一變化版本(CV1)、第一沖突判決版本(CRV1)和第一認識矢量(AV1),并且,所述第二計算機系統(tǒng)包括所述變化單元的第二復制品(CU2)和對應于所述第二復制品的第二元數(shù)據(jù)(M2),所述元數(shù)據(jù)還包括第二變化版本(CV2)、第二沖突判決版本(CRV2)和第二認識矢量(AV2),其特征在于,所述計算機可讀指令包括指令,用于將AV1從P1發(fā)送到P2;確定AV1是否包含CV2和CRV2,并且,如果是,則將CU2從P2發(fā)送到P1;將M2從P2發(fā)送到P1;將M2與M1進行比較,完成任何所要求的同步更新,并且解決發(fā)生的任何沖突或特殊處理情況;以及更新CU1和M1,并且,如果已發(fā)生沖突,則進一步更新CRV1和AV1,以反映沖突判決,從而防止發(fā)生發(fā)散狀態(tài)。
22.一種硬件控制設備,用于使同步團體中的至少兩個對等計算機系統(tǒng)之間的變化單元數(shù)據(jù)同步,其特征在于,所述硬件控制設備包括裝置,用于使所述至少兩個對等計算機系統(tǒng)之間的所述變化單元數(shù)據(jù)同步;以及通過使用對應于所述變化單元數(shù)據(jù)的元數(shù)據(jù)分量,來確保該同步團體中的所述變化單元數(shù)據(jù)的收斂,所述元數(shù)據(jù)分量包括一沖突判決版本分量。
23.如權(quán)利要求22所述的硬件控制設備,其特征在于,它還包括裝置,由此,在同步期間使用所述沖突判決分量,以便從包括所述同步團體的所述至少兩個計算機系統(tǒng)之中識別出至少兩個計算機系統(tǒng)中的所述變化單元的發(fā)散狀態(tài)。
24.如權(quán)利要求23所述的硬件控制設備,其特征在于,它還包括裝置,用于糾正所述變化單元中的所述發(fā)散狀態(tài),并在整個同步團體中傳播所述被糾正的變化單元。
25.如權(quán)利要求24所述的硬件控制設備,其特征在于,它還包括裝置,用于在發(fā)生沖突時自動判決沖突。
26.一種硬件控制設備,用于解決同步團體及其成員合伙者計算機系統(tǒng)的的對等同步系統(tǒng)中的變化單元數(shù)據(jù)的發(fā)散狀態(tài),所述數(shù)據(jù)包含在第一計算機系統(tǒng)上的第一變化單元中和第二計算機系統(tǒng)上的第二變化單元中,其特征在于,所述硬件控制設備包括裝置,用于跟蹤在第一同步操作期間發(fā)生的沖突判決;在隨后的同步操作期間識別所述第一變化單元與所述第二變化單元之間的變化單元數(shù)據(jù)的發(fā)散狀態(tài);確定性地選擇一變化單元解決方案,以確保所述同步團體中的變化單元數(shù)據(jù)的收斂。
27.如權(quán)利要求26所述的硬件控制設備,其特征在于,它還包括裝置,由此,所述第一變化單元還包括第一版本號,并且其中,所述第二變化單元還包括第二版本號;并且,所述硬件控制設備還包括裝置,由此,確定性地選擇一變化單元解決方案以確保所述同步團體中的變化單元數(shù)據(jù)的收斂這個元素包括,基于來自所述第一版本號與所述第二版本號的比較的所述較低的版本號,來分別選擇第一變化單元、第二變化單元。
28.一種硬件控制設備,用于使第一計算機系統(tǒng)(P1)與第二計算機系統(tǒng)(P2)之間的變化單元數(shù)據(jù)同步,所述第一計算機系統(tǒng)包括所述變化單元的第一復制品(CU1)和對應于所述第一復制品的第一元數(shù)據(jù)(M1),所述元數(shù)據(jù)還包括第一變化版本(CV1)、第一沖突判決版本(CRV1)和第一認識矢量(AV1),并且,所述第二計算機系統(tǒng)包括所述變化單元的第二復制品(CU2)和對應于所述第二復制品的第二元數(shù)據(jù)(M2),所述元數(shù)據(jù)還包括第二變化版本(CV2)、第二沖突判決版本(CRV2)和第二認識矢量(AV2),其特征在于,所述硬件控制設備包括裝置,用于將AV1從P1發(fā)送到P2;確定AV1是否包含CV2和CRV2,并且,如果是,則將CU2從P2發(fā)送到P1;將M2從P2發(fā)送到P1;將M2與M1進行比較,完成任何所要求的同步更新,并且解決發(fā)生的任何沖突或特殊處理情況;以及更新CU1和M1,并且,如果已發(fā)生沖突,則進一步更新CRV1和AV1,以反映沖突判決,從而防止發(fā)生發(fā)散狀態(tài)。
全文摘要
本發(fā)明的各種實施例針對用于在手動和自動沖突判決操作期間檢測沖突和應用沖突判決的系統(tǒng)和方法。幾個實施例針對防止以下兩點(a)沖突判決的不收斂,其中,合伙者可以結(jié)束于發(fā)散的穩(wěn)定狀態(tài)(即,在缺少顯著沖突的情況下具有不同的數(shù)據(jù));以及(b)合伙者之間的沖突判決的往復轉(zhuǎn)換(會發(fā)生于某些無效率的解決方案,這些解決方案連續(xù)不斷地更新每個沖突判決的元數(shù)據(jù),無休無止)。本發(fā)明的某些特殊實施例針對一種用于維護知識的方法,即使當不同的合伙者應用不同的沖突判決時,它也保證數(shù)據(jù)的收斂。
文檔編號G06F17/30GK1677392SQ200510052969
公開日2005年10月5日 申請日期2005年3月1日 優(yōu)先權(quán)日2004年4月1日
發(fā)明者D·B·特里, I·胡迪斯, L·諾維克, V·J·杰哈弗瑞 申請人:微軟公司