專利名稱:用于分布式設(shè)備數(shù)據(jù)的多主同步的沖突解決的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于分布式設(shè)備之間的數(shù)據(jù)的多主同步的沖突解決。
些旦 冃豕
存在具有彼此共享數(shù)據(jù)的設(shè)備和對(duì)象的各種分布式數(shù)據(jù)系統(tǒng)。例如,音樂
共享系統(tǒng)可在PC、蜂窩電話、游戲控制臺(tái)和MP3播放器之間同步音樂。例如, 電子郵件數(shù)據(jù)可在工作服務(wù)器、客戶PC和便攜式電子郵件設(shè)備之間同步。當(dāng) 今,就這些設(shè)備只要發(fā)生變更就同步以維護(hù)公共信息而言,同步根據(jù)設(shè)備間的 靜態(tài)設(shè)置來進(jìn)行。然而,當(dāng)這些設(shè)備是松耦合的以使其可能斷開彼此之間的通 信時(shí),例如,當(dāng)蜂窩電話在隧道中時(shí),或者當(dāng)將要同步的設(shè)備數(shù)量是動(dòng)態(tài)的時(shí) 候,期望具有供設(shè)備在其彼此重新連接或在其加入網(wǎng)絡(luò)時(shí)確定每一個(gè)其他設(shè)備 需要什么變更的方式。此外,存在諸如在兩個(gè)不同的設(shè)備獨(dú)立地對(duì)同一數(shù)據(jù)的 各個(gè)副本作出變更時(shí)確定對(duì)于向另一設(shè)備傳播或復(fù)制什么數(shù)據(jù)可能存在什么
沖突或歧義的需求。
當(dāng)今,如
圖1所示,存在其中主節(jié)點(diǎn)100以專用方式來與客戶機(jī)節(jié)點(diǎn)110 同步的各種示例,諸如在電子郵件服務(wù)器與專用電子郵件客戶機(jī)同步時(shí)等。由 于兩個(gè)設(shè)備之間的專用同步,用于在這兩個(gè)設(shè)備之間同步的必要知識(shí)102的狀 態(tài)可由主節(jié)點(diǎn)100來跟蹤。這 -知識(shí)102也可任選地由客戶機(jī)節(jié)點(diǎn)IOO來跟蹤。 然而,當(dāng)同步設(shè)備的數(shù)量增加時(shí)以及當(dāng)主節(jié)點(diǎn)IOO和客戶機(jī)節(jié)點(diǎn)IIO之間的連 接有時(shí)可能變?yōu)閿嚅_時(shí),不僅跟蹤跨所有這些設(shè)備的必要知識(shí)變成難題,而且 從同歩觀點(diǎn)來看的沖突數(shù)量也增長。這是因?yàn)椴煌O(shè)備演化獨(dú)立同步的數(shù)據(jù)集 的機(jī)會(huì)在設(shè)備數(shù)量增長時(shí)以及在它們可能變得容易斷開時(shí)增加。
當(dāng)前解決方案的問題在于這些設(shè)備僅將其同步語義基于特定節(jié)點(diǎn)(例如, 電子郵件服務(wù)器)而非任意節(jié)點(diǎn)的時(shí)鐘或邏輯水印。這些系統(tǒng)在單個(gè)連接節(jié)點(diǎn) 或主節(jié)點(diǎn)的情況下能夠運(yùn)行良好。然而,在節(jié)點(diǎn)連接的拓?fù)浣Y(jié)構(gòu)或模式不可預(yù) 見地改變時(shí),這些系統(tǒng)就成問題。此外,隨著一組復(fù)雜設(shè)備可能希望在松耦合網(wǎng)絡(luò)中同步數(shù)據(jù)的情況和情形增加,存在對(duì)這些設(shè)備處理沖突的方式的靈活性 及對(duì)該方式的控制的甚至更大的需求。
對(duì)于多主同步情形中的沖突增長,對(duì)節(jié)點(diǎn)無關(guān)同步知識(shí)和根據(jù)各種解決措 施的沖突處理的需求在拓?fù)浣Y(jié)構(gòu)中的計(jì)算機(jī)可改變其彼此連接的方式時(shí)或者 在計(jì)算機(jī)的數(shù)量增長時(shí)出現(xiàn)。例如,在媒體播放器的情況下,可能期望在多個(gè) 計(jì)算機(jī)和多個(gè)網(wǎng)站之間同步。在大多數(shù)情況下,大多數(shù)應(yīng)用程序只能在幾個(gè)公 知的端點(diǎn)(例如,家庭PC和媒體播放器)之間同步數(shù)據(jù),在這種情況下強(qiáng)制 實(shí)施靜態(tài)沖突解決措施,例如,"家庭PC始終贏得沖突"等。然而,隨著設(shè) 備社區(qū)對(duì)于媒體播放器應(yīng)用程序的用戶隨著時(shí)間而演化,對(duì)針對(duì)供設(shè)備利用的 音樂庫的數(shù)據(jù)同步靈活性以及設(shè)備在以各種次序彼此同步時(shí)處理沖突的靈活 性的需求日益增長。
因此,希望跨多個(gè)松耦合設(shè)備共享公共信息的任何分布式數(shù)據(jù)系統(tǒng)都需要 表示它們知道對(duì)公共信息的什么變更以及它們不知道什么變更的高效方式,并 且需要在它們彼此沖突時(shí)解決對(duì)于這些變更的沖突的方式。為對(duì)該問題作出概 念上的說明,想象各自去看即將上映的電影的非公開預(yù)映的四個(gè)朋友。不幸的 是,電影演播室已決定限制該電影的分發(fā)并且每一個(gè)朋友都被限于觀看僅三十 分鐘的電影片段。當(dāng)這些朋友一起回家時(shí),他們開了個(gè)會(huì)議,其中每一個(gè)人都 從頭到尾地描述他們所觀看的片段以試圖共同將盡可能多的電影拼湊在一起。
然而,如果第四個(gè)朋友意外地?zé)o法參加該會(huì)議,則接著與該第四朋友交談 的前二個(gè)朋友中的一個(gè)(例如,第二個(gè)朋友)將試圖將由前三個(gè)朋友收集的集 體電影知識(shí)添加到第四個(gè)朋友所收集的電影知識(shí)。然而,此時(shí),只有第二和第 四個(gè)朋友了解這四個(gè)朋友之間的電影知識(shí)的完整集合。然后,當(dāng)?shù)谝粋€(gè)朋友或 第三個(gè)朋友中的任一個(gè)遇到第二或第四個(gè)朋友中的任一個(gè)時(shí),該第一或第三個(gè) 朋友將也獲得該集體電影知識(shí)。同步最后在這四個(gè)朋友中的每一個(gè)都了解由這 四個(gè)朋友拼湊的集體電影知識(shí)時(shí)完成。
然而,為了示出沖突的可能性,假設(shè)第一個(gè)朋友在遇到或者第二個(gè)或者第 四個(gè)朋友之前與第五個(gè)朋友交談,該第五個(gè)朋友給出了不同于第二或第四個(gè)朋 友稍后告訴第-個(gè)朋友的對(duì)某些遺漏的電影片段的敘述。該第一個(gè)朋友將不知 道將哪一個(gè)電影敘述當(dāng)作所發(fā)生的真實(shí)版本。通常,該第一個(gè)朋友將執(zhí)行對(duì)哪一個(gè)是最佳敘述的某種試探性猜測(cè)。該第一個(gè)朋友可能在考慮采納哪一個(gè)故 事、丟棄哪一個(gè)故事時(shí)將關(guān)系長度、對(duì)一個(gè)或另一個(gè)朋友的信任歷史等因素考 慮在內(nèi)。在其他情況下,第一個(gè)朋友可能在短時(shí)間內(nèi)記得這兩個(gè)敘述并且在解 決該沖突之前等待附加信息。以類似方式,將由此也期望允許設(shè)備彼此同步并 當(dāng)在松耦合系統(tǒng)中同步數(shù)據(jù)的分布式設(shè)備之間出現(xiàn)沖突時(shí)解決沖突。
在以上示例中,電影類似于將跨設(shè)備共享的公共信息并且朋友類似于松耦 合設(shè)備。就此,當(dāng)朋友/設(shè)備一起回來時(shí),需要用于表示連接的個(gè)人/設(shè)備中的 每一個(gè)知道和不知道什么并且解決這些知識(shí)之間的沖突,即,用于確定"真" 知識(shí)的機(jī)制,從而使得能夠以個(gè)人/設(shè)備的集體知識(shí)所準(zhǔn)許的最大程度來將公共 信息拼湊在一起。設(shè)備節(jié)點(diǎn)的松連接系統(tǒng)因此需要描述其具有的數(shù)據(jù)、它們?cè)?哪里接收到、以及它們需要來自對(duì)話中所涉及的另一節(jié)點(diǎn)的什么數(shù)據(jù)、以及如 何解決設(shè)備之間的沖突的高效方式。
簡(jiǎn)而言之,沖突是雙向多主同步拓?fù)浣Y(jié)構(gòu)所引發(fā)的不可避免的問題。用戶 或應(yīng)用程序在不同的端點(diǎn)上自由地對(duì)同一項(xiàng)目作出并發(fā)修改,從而使得同步解 決方案無法確定要正確地接受哪一個(gè)/哪些變更。如上所述,現(xiàn)有沖突解決策略 允許通過應(yīng)用諸如"最后的寫入者獲勝"等某一預(yù)定策略來自動(dòng)解決沖突。然 而,在不同的終端類型增長的情況下,單個(gè)預(yù)定策略不足以解決已經(jīng)為相應(yīng)數(shù) 量的松耦合設(shè)備間的不斷演化的設(shè)備同步情形標(biāo)識(shí)的大量沖突解決策略。就 此,當(dāng)今未充分解決的難題是使得同步應(yīng)用程序足夠靈活以實(shí)現(xiàn)不同的沖突策 略同時(shí)使其足夠穩(wěn)健以便以推遲或自動(dòng)化的方式存儲(chǔ)、應(yīng)用和回退這些沖突的 平衡動(dòng)作。
當(dāng)前解決方案對(duì)于靈活性和/或穩(wěn)健性而言有所不足。首先,許多解決方 案只提供諸如最后的寫入者獲勝等少量的流行的沖突解決策略。該靈活性的缺 乏將在不同的端點(diǎn)變得流行并且用戶需要同步非傳統(tǒng)類型的數(shù)據(jù)時(shí)很快變得 不可接受。另外,許多應(yīng)用程序不支持應(yīng)用沖突解決策略的能力或不維護(hù)用于 以自動(dòng)化或UI驅(qū)動(dòng)的方式來回退/恢復(fù)與沖突相關(guān)聯(lián)的變更的足夠的沖突元數(shù) 據(jù)。
就此,當(dāng)不存在用于了解設(shè)備集合的集體知識(shí),確定這些知識(shí)中的沖突并 根據(jù)對(duì)于變成連接的設(shè)備的靈活策略來解決這些沖突的機(jī)制時(shí),在試圖在松耦
8合設(shè)備之間同步時(shí)引起混亂。關(guān)于松耦合設(shè)備之間的同步的現(xiàn)有技術(shù)中的這些 和其他缺陷的附加細(xì)節(jié)在描述以下本發(fā)明的各實(shí)施例之后將變得顯而易見。
概述
考慮到上述內(nèi)容,本發(fā)明提供用于雙向多主同步拓?fù)浣Y(jié)構(gòu)的沖突解決。在 一組同步設(shè)備中的各設(shè)備獨(dú)立地演化被同步的信息的情況下,各版本間的同步 沖突可不避免地出現(xiàn)。本發(fā)明提供了供一組設(shè)備在當(dāng)同步時(shí)在同步節(jié)點(diǎn)之間交 換知識(shí)時(shí)從一組沖突解決策略中選擇如何解決沖突的高效且靈活的方式。示例 性沖突解決策略包括(A)"最頻繁更新者"、(B)"優(yōu)先級(jí)"、(C) "%變更"、 (D)"死鎖解決"、(E)"最高程度"以及(F)"最高中心接近度(Highest Centrality Closeness)"。
還可將沖突記錄在沖突日志中以將沖突解決推遲到稍后。另夕卜,用戶或應(yīng) 用程序可將同步狀態(tài)回退至可能已經(jīng)出現(xiàn)沖突之前的時(shí)間,從而使得該用戶或 應(yīng)用程序可撤消該沖突和/或該用戶或應(yīng)用程序可應(yīng)用一組替換沖突解決策略。
此處提供了簡(jiǎn)化概述以幫助能夠?qū)σ韵赂敿?xì)的描述和附圖中的示例性、 非限制性實(shí)施例的各方面有基本或大體的理解。然而,本概述并不旨在作為詳 盡的或窮盡的概觀。相反,本概述的唯一目的是以簡(jiǎn)化的形式來介紹與本發(fā)明 的某些示例性非限制性實(shí)施例相關(guān)的一些概念,作為以下本發(fā)明的各實(shí)施例的 更為詳細(xì)的描述的序言。
附圖簡(jiǎn)述
用于檢測(cè)和解決對(duì)于在多主環(huán)境中共享公共信息的多個(gè)節(jié)點(diǎn)的沖突的系 統(tǒng)和方法將參考各附圖來進(jìn)一步描述,在附圖中
圖1示出了專用同步系統(tǒng),其提供該系統(tǒng)的兩個(gè)明確定義的端點(diǎn)之間的同 歩和沖突解決;
圖2A示出了根據(jù)本發(fā)明的松連接節(jié)點(diǎn)網(wǎng)絡(luò)的兩個(gè)節(jié)點(diǎn)之間的示例性、非 限制性知識(shí)交換和沖突檢測(cè);
圖2B是根據(jù)本發(fā)明的用于執(zhí)行同步?jīng)_突檢測(cè)和解決的設(shè)備的示例性、非 限制性實(shí)現(xiàn)的框圖;圖3示出了根據(jù)本發(fā)明的在松連接節(jié)點(diǎn)網(wǎng)絡(luò)的四個(gè)節(jié)點(diǎn)之間同步的對(duì)象 的示例性、非限制性知識(shí)交換和獨(dú)立演化;
圖4A、 4B、 4C和4D是示出根據(jù)本發(fā)明的一組設(shè)備之間的示例性同步序 列的框圖,其示出了示例性、非限制性同步?jīng)_突生成、檢測(cè)和解決;
圖5A、 5B和5C以及5D是示出根據(jù)本發(fā)明的一組設(shè)備之間的另一同步 序列的框圖,其示出了示例性、非限制性同步?jīng)_突生成、檢測(cè)和解決;
圖6A、 6B、 6C、 6D、 6E和6F是示出根據(jù)本發(fā)明的可由設(shè)備實(shí)現(xiàn)的各種 同步?jīng)_突解決策略的示例性、非限制性框圖7是示出根據(jù)本發(fā)明的可由設(shè)備實(shí)現(xiàn)的基于通信量的同步?jīng)_突解決策 略的示例性、非限制性框圖8是示出根據(jù)本發(fā)明的各實(shí)施例的一組設(shè)備之間的同歩的發(fā)起以及對(duì) 任何沖突的相應(yīng)檢測(cè)和解決的示例性、非限制性流程圖9是表示其中可實(shí)現(xiàn)本發(fā)明的示例性、非限制性網(wǎng)絡(luò)化環(huán)境的框圖;以
及
圖IO是表示其中可實(shí)現(xiàn)本發(fā)明的示例性、非限制性計(jì)算系統(tǒng)或操作環(huán)境 的框圖。
詳細(xì)描述
概覽
如在背景中討論的,不存在對(duì)于未保持彼此專用接觸的一組松耦合設(shè)備高 效地表示同步知識(shí)并且還根據(jù)一組靈活的情況來解決沖突的方式。在可假定專 用接觸的情況下,任何變更可被立即或周期性地推送到應(yīng)接收它們的設(shè)備,并 凡沖突可根據(jù)靜態(tài)策略來解決。然而,在無法假定專用接觸的情況下,在設(shè)備 出現(xiàn)和消失的情況下,期望高效地表示從同步觀點(diǎn)來看這些設(shè)備知道和不知道 什么,并在設(shè)備之間出現(xiàn)沖突時(shí)解決沖突。
因此,本發(fā)明啟用用于數(shù)據(jù)同步系統(tǒng)中的分布式設(shè)備的高效且靈活的沖突 解決。提供了一種高效的機(jī)制以確保只要設(shè)備可訪問松耦合網(wǎng)絡(luò)中的其他同步 設(shè)備,該設(shè)備就將與該其他設(shè)備交換知識(shí)以確定該設(shè)備應(yīng)取得并傳達(dá)給該其他 設(shè)備哪些變更,以及要根據(jù)-組靈活的沖突解決策略作為同步操作的-一部分來解決什么沖突。
以此方式,雖然第一設(shè)備和第三設(shè)備可能永遠(yuǎn)不會(huì)直接通信,但如果每一 個(gè)設(shè)備都能夠連接到第二設(shè)備并解決關(guān)于該第二設(shè)備的沖突,則可跨所有這三 個(gè)設(shè)備實(shí)現(xiàn)知識(shí)的集體無沖突共享,從而以解決所遇到的所有沖突的方式確定 設(shè)備中的每一個(gè)應(yīng)從其他設(shè)備中的每一個(gè)接收什么變更??紤]到共享諸如音 樂、電子郵件、圖片、視頻等數(shù)據(jù)的設(shè)備的增長,有利的是,本發(fā)明的知識(shí)交 換和沖突解決技術(shù)可同時(shí)縮放至任何數(shù)量的設(shè)備以及任何數(shù)量的獨(dú)立知識(shí)庫 (即,不同的公共信息集),即,任一組不斷演化的設(shè)備希望共享數(shù)據(jù)的任何 地方。在分布式系統(tǒng)中表示這些知識(shí)并解決沖突的各實(shí)施例將在以下更詳細(xì)地 描述。
用于知識(shí)交換的沖突解決
在以下描述的各示例性、非限制性實(shí)施例中,知識(shí)在數(shù)據(jù)同步系統(tǒng)中高效 地表不,并且在設(shè)備之間的知識(shí)從同步觀點(diǎn)來看是沖突的情況下,本發(fā)明提供 了用于解決對(duì)于不同的同歩上下文的同歩設(shè)備之間的沖突的各種方法??捎帽?發(fā)明實(shí)現(xiàn)的非限制性益處包括連接的設(shè)備之間的高效知識(shí)交換,該交換從第二 節(jié)點(diǎn)只發(fā)送第一節(jié)點(diǎn)所需的最少數(shù)據(jù)。本發(fā)明包括高效且正確地識(shí)別數(shù)據(jù)狀態(tài) 上的不合,即,第一節(jié)點(diǎn)和第二節(jié)點(diǎn)之間的沖突的能力、同步任意數(shù)量的節(jié)點(diǎn) 的能力以及經(jīng)由任何其他節(jié)點(diǎn)來同步任何節(jié)點(diǎn)的能力,即,在對(duì)等、多主同步 環(huán)境中工作的能力。
圖2A在高層面處示出了根據(jù)本發(fā)明的兩個(gè)設(shè)備200和210之間的知識(shí)交 換以及并發(fā)或后續(xù)沖突檢測(cè)和解決??蓪?duì)將要在兩個(gè)設(shè)備200和210之間共享 的某些信息作出任何數(shù)量的變更。然而,在這兩個(gè)設(shè)備變成連接的任何時(shí)候, 它們可通過交換它們的知識(shí)202和212來變得知道用于重構(gòu)彼此知道和不知道 的內(nèi)容的至少最少量的信息以便于設(shè)備之間的變更。注意,在涉及多于兩個(gè)設(shè) 備的情況下,知識(shí)202和212可能是將要共享的更大信息庫中的不完整的知識(shí), 但隨著在多個(gè)設(shè)備之間共享的知識(shí)越來越多,集體知識(shí)繼續(xù)由設(shè)備在其隨著時(shí) 間連接到其他設(shè)備時(shí)積累。解決沖突并以類似的方式傳播沖突解決。
有利的是,在知識(shí)交換期間,發(fā)生沖突檢測(cè)過程204和/或214以處理關(guān)于跨不同設(shè)備的數(shù)據(jù)演化的沖突。 一旦檢測(cè)到?jīng)_突,設(shè)備200和204就可立即 解決沖突,從而確保設(shè)備200和204維護(hù)無論源自設(shè)備200還是設(shè)備204的相 同數(shù)據(jù)?;蛘撸蓪_突記錄在沖突日志中以供稍后解決。以任一種方式,對(duì) 于檢測(cè)到的任何沖突的沖突解決可經(jīng)由將在以下更詳細(xì)描述的一組靈活的沖 突策略中的任一個(gè)或多個(gè)來處理。
圖2B是根據(jù)本發(fā)明的用于執(zhí)行知識(shí)交換和沖突檢測(cè)和/或解決的設(shè)備 200b的示例性、非限制性實(shí)現(xiàn)的框圖。如圖所示,設(shè)備200b包括同步模塊220, 其執(zhí)行根據(jù)本發(fā)明的用于與另一設(shè)備同步對(duì)象集230的知識(shí)交換技術(shù)。同步模 塊220可包括同步通信模塊,其用于一般根據(jù)知識(shí)交換來發(fā)送和接收數(shù)據(jù)。
同步模塊220可包括同步發(fā)起模塊222a,其可在例如經(jīng)由授權(quán)模塊240 而被授權(quán)并連接到第二設(shè)備的情況下發(fā)起與該第二設(shè)備的同歩。同步模塊還可 包括I/0模塊222b,其通過向第二設(shè)備(未示出)發(fā)送關(guān)于對(duì)象集230的知識(shí) 202b來響應(yīng)同步發(fā)起并且用于接收該第二設(shè)備的返回知識(shí)212b以及源自該第 二設(shè)備的對(duì)該對(duì)象集230作出的變更。進(jìn)而,同步分析模塊224操作以應(yīng)用將 要對(duì)該對(duì)象集230作出的變更并且將來自第二設(shè)備的知識(shí)212b與第一設(shè)備的 知識(shí)202b進(jìn)行比較以確定要發(fā)送給該第二設(shè)備的變更以完成設(shè)備之間的同步。
如圖所不,同步模塊220的同步分析模塊224可包括沖突檢測(cè)和分析模塊 226,其用于根據(jù)為該同步上下文定義的各種沖突解決策略中的任一個(gè)或多個(gè) 來處理沖突。沖突檢測(cè)和分析模塊226可根據(jù)由設(shè)備管理員來定義的,或由同 步應(yīng)用程序來定義的沖突設(shè)置228來自動(dòng)行動(dòng)以滿意地執(zhí)行針對(duì)該同步上下文 的沖突解決。
或者,模塊226可用于在同步時(shí)檢測(cè)沖突并且然后將與沖突相關(guān)聯(lián)的元數(shù) 據(jù)存儲(chǔ)在沖突日志250中。該沖突然后可在稍后,例如,周期性地或以批量格 式,或根據(jù)關(guān)于如何及何時(shí)解決沖突的應(yīng)用程序或用戶輸入來解決。例如,在 一非限制性實(shí)施例中,可向用戶呈現(xiàn)用戶界面(UI,未示出),該用戶界面向 用戶呈現(xiàn)沖突以使得該用戶可選擇如何解決由同步引發(fā)的沖突。
有利的是,本發(fā)明可用于執(zhí)行對(duì)全都對(duì)維護(hù)對(duì)象集的最新版本感興趣的---組設(shè)備執(zhí)行同步,但也允許這些設(shè)備與該對(duì)象集中的其他對(duì)象連接或斷開連 接。只要一設(shè)備經(jīng)由一個(gè)或多個(gè)網(wǎng)絡(luò)來與該組設(shè)備中的其他設(shè)備重新連接,該
12設(shè)備就可重新獲得與用其集體知識(shí)表示的其他設(shè)備一樣新的集體知識(shí),并且根 據(jù)此處所描述的技術(shù)來自動(dòng)解決或記錄沖突。以此方式,即使松連接設(shè)備也可 與一組設(shè)備連接或斷開連接,并且然后通過開始與擁有一組最新集體知識(shí)的任 一組設(shè)備聯(lián)系來重新獲悉遺漏的所有知識(shí),同時(shí)解決或記錄所遇到的任何沖
圖3示出本發(fā)明的知識(shí)交換和沖突解決可被推廣或縮放到任何數(shù)量的設(shè) 備。如圖所示,四個(gè)設(shè)備300、 310、 320和330被示為具有知識(shí)表示302、 312、 322和332,這些知識(shí)表示分別指示每一個(gè)設(shè)備所知道和不知道的關(guān)于將要跨 設(shè)備共享的一組公共信息的內(nèi)容。有利的是,即使在網(wǎng)絡(luò)中的連接變成斷開的 情況下,所有這些設(shè)備300、 310、 320和330仍然能夠獲得一組完整的知識(shí), 只要對(duì)于其他設(shè)備直接或間接存在至少一個(gè)連接。例如,即使設(shè)備330和設(shè)備 300之間的連接以及設(shè)備330和設(shè)備310之間的連接變?yōu)榍袛?,設(shè)備330的知 識(shí)332仍然可經(jīng)由與設(shè)備320的知識(shí)交換,然后經(jīng)由設(shè)備320和310之間的知 識(shí)交換,并且最后經(jīng)由設(shè)備310和300之間的知識(shí)交換來到達(dá)設(shè)備300。
類似地,根據(jù)本發(fā)明,如果在知識(shí)332和知識(shí)302之間存在沖突,則通過 從設(shè)備330到設(shè)備320、到設(shè)備310、到設(shè)備300的相同的知識(shí)傳播,該沖突 將在完成同步時(shí)在所有設(shè)備之間解決。例如,假設(shè)設(shè)備300、 310、 320和330 全都在同步對(duì)象KN。在只有一個(gè)設(shè)備對(duì)對(duì)象KN作出變更并且然后作為同歩 操作的一部分來將該變更傳播到其余設(shè)備的情況下,不存在問題。然而,因?yàn)?允許設(shè)備自主行動(dòng)且獨(dú)立地演化數(shù)據(jù),甚至正在被同步的數(shù)據(jù),所以設(shè)備330 可能變更對(duì)象KN以形成經(jīng)更新的對(duì)象KN1,并且設(shè)備310可能變更KN以形 成不同于KN1的經(jīng)更新的對(duì)象KN2。當(dāng)在所有設(shè)備300、 310、 320和330之 間同步對(duì)象KN時(shí),引起關(guān)于向所有設(shè)備傳播KN的哪個(gè)版本KN1還是KN2 的沖突。本發(fā)明提供了用于處理這些情況的一組靈活的沖突解決策略。
在更多的設(shè)備共享關(guān)于將要共享的公共信息的知識(shí)時(shí),所有設(shè)備都因?yàn)楸?發(fā)明的知識(shí)交換對(duì)該集體知識(shí)來自哪一個(gè)設(shè)備不可知的而受益。與發(fā)明背景中 所描述的其中三個(gè)朋友交換電影知識(shí)并且然后這三個(gè)朋友中的任一個(gè)與第四 個(gè)朋友碰面以拼湊整部電影的情況非常類似,本發(fā)明的設(shè)備各自獨(dú)立操作以試 圖從其連接到的其他設(shè)備的任一個(gè)獲得盡可能多的關(guān)于將要在這些設(shè)備之間共享的信息的知識(shí)。此外,與朋友交換電影知識(shí)非常類似,如果一個(gè)朋友表現(xiàn) 為具有不正確的或其他形式的與集體知識(shí)不一致的信息,則這些朋友將以令所 有人都滿意的方式解決這一不一致性。例如,如果三個(gè)朋友認(rèn)為事件以第一方 式發(fā)生,并且只有一個(gè)朋友感覺該事件不同地發(fā)生,則可能的結(jié)果是面對(duì)更多 證據(jù)的優(yōu)勢(shì),這三個(gè)朋友將不會(huì)采納對(duì)電影發(fā)生方式的唯一敘述。
進(jìn)而,與背景中所描述的其中第二個(gè)朋友首先與第四個(gè)朋友會(huì)面并且其中 結(jié)果只有第二和第四個(gè)朋友共享所有四個(gè)朋友的集體知識(shí)的情況非常類似,第 一和第三個(gè)朋友仍然受益,因?yàn)殡m然不知道該第一個(gè)朋友接著將碰到第二個(gè)朋 友還是第四個(gè)朋友,但該第一個(gè)朋友將從第二和第四個(gè)朋友中的任一個(gè)獲悉集 體知識(shí)。第三個(gè)朋友亦是如此。類似地,本發(fā)明的交換公共信息的連接的設(shè)備 從由任何其他連接的設(shè)備積累的任何其他知識(shí)中受益,因?yàn)橹R(shí)是由交換設(shè)備 中的每一個(gè)先前已與其聯(lián)系的所有其他設(shè)備來收集的。以相同的方式,本發(fā)明 的連接的設(shè)備由于向其余設(shè)備傳播了解決沖突的數(shù)據(jù)而從已由其他設(shè)備執(zhí)行 的任何沖突解決中受益。
在示例性、非限制性細(xì)節(jié)中,更詳細(xì)地描述供兩個(gè)節(jié)點(diǎn)參與對(duì)話并在對(duì)話 結(jié)束時(shí)具有關(guān)于所關(guān)心的數(shù)據(jù)集的等價(jià)知識(shí)的方法。如以上結(jié)合圖2A、 2B和
3所示出的,本發(fā)明可通過為進(jìn)入對(duì)等網(wǎng)絡(luò)的每一個(gè)新設(shè)備創(chuàng)建知識(shí)交換和沖
突解決能力來縮放超過兩個(gè)節(jié)點(diǎn)。
圖4A到4D進(jìn)一步示出了對(duì)因?yàn)樗神詈显O(shè)備周期性地彼此解耦而對(duì)彼此 同歩的松耦合設(shè)備進(jìn)行沖突解決的需求。如圖4A所示,在時(shí)刻T-0,存在四 個(gè)設(shè)備400、 410、 420和430,其分別具有知識(shí)402、 412、 422和432,這些 設(shè)備中的每一個(gè)都具有對(duì)象KN的相同版木的知識(shí)。然而,設(shè)備400和410與 設(shè)備420和430之間的所有連接都變?yōu)榍袛啵?,設(shè)備430是膝上型計(jì)算機(jī) 而設(shè)備420是蜂窩電話,并且這兩個(gè)設(shè)備的擁有者臨時(shí)去到地下,從而中斷到 設(shè)備400和410的連接。
圖4B示出在任何時(shí)刻,例如,卩寸亥纟丁=1>0,設(shè)備420可將知識(shí)422的 對(duì)象KN從KN改為KN'。類似地,在某一時(shí)刻丁 = 2>0,設(shè)備400也可對(duì)知 識(shí)402的對(duì)象KN作出變更,將該對(duì)象從KN改為KN"。在這種情況下,設(shè)備 420和400在它們變?yōu)橹匦逻B接時(shí)呈現(xiàn)沖突,g卩,傳播哪一個(gè)版本,KN'還是KN" 圖4C示出可在沖突解決之前(例如,在時(shí)刻丁 = 3>2且>1)可進(jìn)行 某一有限的同步。例如,因?yàn)樵O(shè)備430連接到設(shè)備420,所以對(duì)象KN'經(jīng)由同 步來傳播到設(shè)備430的知識(shí)432。類似地,因?yàn)樵O(shè)備400連接到設(shè)備410,所 以對(duì)象KN"經(jīng)由同步來傳播到設(shè)備400的知識(shí)402。
如圖4D所示,在時(shí)刻丁 = 4, 一旦設(shè)備400或410中的任一個(gè)變?yōu)樵俅?連接到設(shè)備420或430中的任一個(gè),沖突將自我呈現(xiàn)。在同步期間將不清楚要 傳播的正確知識(shí)是什么KN'還是KN"。因此,必須提供沖突解決機(jī)制以解決 該沖突。如上所述, 一旦檢測(cè)到?jīng)_突,就可立即根據(jù)針對(duì)該同步上下文所采用 的沖突解決策略來解決沖突,或者可記錄該沖突以供稍后解決(例如,批量沖 突解決、手動(dòng)解決、為了等待用于幫助決定的附加信息的延遲解決等)。
盡管為了避免疑惑,圖5A到5D示出了多主同步情況的兩個(gè)節(jié)點(diǎn)之間的 更具體的序列,但本發(fā)明適用于可以按松耦合方式同步的任何數(shù)量的設(shè)備。如 圖5所示,具有任何數(shù)量的節(jié)點(diǎn)的對(duì)等網(wǎng)絡(luò)中的節(jié)點(diǎn)500想要與節(jié)點(diǎn)510交換 數(shù)據(jù)。在所示示例中,設(shè)備或節(jié)點(diǎn)的示例性知識(shí)通過用字母標(biāo)識(shí)符來標(biāo)記將要 在設(shè)備之間共享的每一個(gè)對(duì)象,并且然后尾號(hào)表示該對(duì)象的最新版本來表示。 在時(shí)刻t = 1 ,節(jié)點(diǎn)500和節(jié)點(diǎn)510分別具有同步的知識(shí)KN500和KN510,這 兩個(gè)知識(shí)由包括A的第5個(gè)版本、B的第4個(gè)版本、C的第7個(gè)版本和D的第 1個(gè)版本的對(duì)象組成。在交換其知識(shí)后,節(jié)點(diǎn)500和510處于同步無沖突狀態(tài)。
然而,在1 = 2,節(jié)點(diǎn)500和510獨(dú)立地演化對(duì)象A。為了表示簡(jiǎn)便起見, 節(jié)點(diǎn)500創(chuàng)建A的第6個(gè)版本,而節(jié)點(diǎn)510創(chuàng)建了 A的第7個(gè)版本(或相反)。 在時(shí)刻1 = 3,由于后續(xù)同步過程,不清楚是應(yīng)將第6個(gè)還是第7個(gè)版本作為節(jié) 點(diǎn)500和節(jié)點(diǎn)510之間的公共對(duì)象來保存。由此,需要沖突解決機(jī)制。
另外,對(duì)于任何知識(shí)交換,存在節(jié)點(diǎn)500的知識(shí)KN500到節(jié)點(diǎn)510的傳 送,并且還存在節(jié)點(diǎn)510的知識(shí)KN510到節(jié)點(diǎn)500的傳送。然而,如圖5D所 示,出于沖突檢測(cè)的目的,可在僅一個(gè)方向上的一次知識(shí)傳送后檢測(cè)沖突。因 此,在本發(fā)明的一個(gè)實(shí)施例中,不必在發(fā)起沖突檢測(cè)和解決之前完成整個(gè)知識(shí) 交換。如圖5D所示,如果節(jié)點(diǎn)500將知識(shí)KN500發(fā)送到節(jié)點(diǎn)510,則節(jié)點(diǎn)510 可檢測(cè)到在源自節(jié)點(diǎn)500的對(duì)象A5和源自節(jié)點(diǎn)510上的對(duì)象A6之間存在沖 突。如果然后節(jié)點(diǎn)510解決了該沖突,則這可使節(jié)點(diǎn)500免予執(zhí)行相同的沖突
15檢測(cè),因?yàn)楣?jié)點(diǎn)510可向節(jié)點(diǎn)500指示對(duì)象A的正確版本是什么?;蛘?,可能 期望每一個(gè)設(shè)備不同地執(zhí)行沖突解決,在這種情況下節(jié)點(diǎn)500和節(jié)點(diǎn)510兩者 都可執(zhí)行獨(dú)立的沖突檢測(cè)和解決。
用于知識(shí)交換的沖突解決
可結(jié)合分布式多主同步環(huán)境中的各節(jié)點(diǎn)之間的知識(shí)交換來實(shí)現(xiàn)的示例性 沖突解決策略在圖6A到6E的流程圖中示出。在圖6A到6E中的每一張附圖 中,枚舉了反映不同的同步上下文的不同策略。當(dāng)不同的設(shè)備是松耦合的,并 且在這些設(shè)備之間同步不同類型的數(shù)據(jù)的時(shí)候,可認(rèn)為各種選擇對(duì)于給定上下 文可能是有意義的以便解決沖突。
例如,如圖6A所示,設(shè)備600和設(shè)備610最初分別將KN表示為知識(shí)602 和612的一部分。然后,如演化流程所示,設(shè)備600上的對(duì)象KN的副本發(fā)生 變更以將該對(duì)象KN演化為KN',然后再次演化為KN"并且再次演化為KN'"。 同時(shí),設(shè)備610將對(duì)象KN演化為Kn。由此,當(dāng)設(shè)備600再次與610同步時(shí), 設(shè)備600上的版本KN"'和設(shè)備610上的版本Kn之間存在沖突。按照根據(jù)本 發(fā)明的可實(shí)現(xiàn)以解決沖突的一個(gè)策略,選擇自從上一次同步時(shí)間以來最頻繁的 更新者"贏得"該沖突。在這種情況下,節(jié)點(diǎn)600相比于在設(shè)備610處發(fā)生以 達(dá)到Kn的僅一次變更,更新了對(duì)象KN三次以達(dá)到KN"'。因此,在自從先 前同歩以來的最多更新用于解決針對(duì)給定上下文的沖突的情況下,這是一個(gè)易 于實(shí)現(xiàn)的策略。例如,在正經(jīng)由同步處理文檔協(xié)作,并且一個(gè)用戶已經(jīng)在許多 不同的時(shí)刻對(duì)一文檔作出了許多變更,而另 一協(xié)作者對(duì)該文檔僅作出了 一個(gè)變 更的情況下,使由最頻繁的更新者作出的變更來解決該沖突可能是有意義的。
圖6B示出了根據(jù)本發(fā)明的解決沖突的另一種方式。考慮圖6A的相同情 況,其中設(shè)備600在三次單獨(dú)變更之后將對(duì)象KN演化為KN"'并且其中設(shè)備 610將該數(shù)據(jù)從對(duì)象KN演化為Kn,應(yīng)用"較高優(yōu)先級(jí)獲勝"的策略。在這種 情況下,設(shè)備610被分配優(yōu)先級(jí)1而設(shè)備600被分配優(yōu)先級(jí)2。因?yàn)閮?yōu)先級(jí)1 高于優(yōu)先級(jí)2,所以設(shè)備610所作出的變更解決該沖突。例如,這在數(shù)據(jù)項(xiàng)的 不可侵犯性(sanctity)從設(shè)備擁有者的觀點(diǎn)來看是命令性的情況下可能是有用 的,在這種情況下該設(shè)備擁有者不想使第三方變更能夠勝過該設(shè)備擁有者的變更。該設(shè)備擁有者將被分配最高優(yōu)先級(jí)而第三方設(shè)備將被分配較低的優(yōu)先級(jí)。 為了避免疑惑,可想象可能也使得向一組分布式設(shè)備中的不同設(shè)備分配不同的 優(yōu)先級(jí)的多種其他情況。
圖6C示出了根據(jù)本發(fā)明的解決沖突的另一種方式。在這種情況下,設(shè)備
600將對(duì)象KN演化為版本KFZ而設(shè)備610將對(duì)象KN演化為版本Kn。在該 實(shí)施例中,本發(fā)明確定各個(gè)對(duì)象所發(fā)生的變更的量或百分比以解決沖突。然后 應(yīng)用偏愛量最大的變更的策略。例如,從KN到KFZ的變更是比從KN到Kn 的變更更大的變更。因此,設(shè)備600的變更解決該沖突。這一策略在沒有其他 策略支配沖突解決的情況下對(duì)于解決沖突是有用的。例如,在一文檔在一個(gè)設(shè) 備上從其原始形式變更了 90%,而在另一設(shè)備上只有1%的情況下,偏愛更大 的變更可能是有意義的,因?yàn)樗鼈兏y以在沖突解決中發(fā)生錯(cuò)誤的情況下恢 復(fù)。同樣,可應(yīng)用將根據(jù)最高百分比變更來指示同歩沖突解決的其他上下文。
圖6D示出了本發(fā)明的沖突解決的又一實(shí)施例,其中仲裁者620解決KFZ 和Kn之間的沖突。仲裁者620可作為用于解決沖突的第三方組件來提供,或 者它可被結(jié)合到設(shè)備600和/或設(shè)備610中。仲裁者620可根據(jù)任何策略和參數(shù) 來判定,并且可基于當(dāng)前條件或同歩狀態(tài)來動(dòng)態(tài)地判定。仲裁者620對(duì)于其中 需要靈活性的同步上下文可能是有用的。
可根據(jù)本發(fā)明來應(yīng)用的用于沖突解決的又-"策略在圖6E中示出。在這種 情況下,存在四個(gè)設(shè)備600、 610、 630和640,它們具有知識(shí)602、 612、 632 和642。在這種情況下,根據(jù)最高親和性(affinity)同步節(jié)點(diǎn)(即,連接到最 多數(shù)量的其他節(jié)點(diǎn)的節(jié)點(diǎn))來解決沖突。這一策略相比于與較多數(shù)量的節(jié)點(diǎn)同 步的節(jié)點(diǎn)不偏愛與僅僅一個(gè)或幾個(gè)不同節(jié)點(diǎn)同步的端點(diǎn)。例如,如圖6E所示, 兩個(gè)節(jié)點(diǎn)600和610獨(dú)立演化對(duì)象KN的副本,將其分別同步為KFZ和Kn。 因?yàn)樵O(shè)備610與三個(gè)設(shè)備600、 630和640同步而設(shè)備600只與一個(gè)其他設(shè)備 610同歩,所以根據(jù)該策略,關(guān)于對(duì)象KN的沖突以有利于設(shè)備610的方式來 解決。這一最高親和性度量可用于衡量與端點(diǎn)相關(guān)聯(lián)的重要性。
根據(jù)本發(fā)明的用于在知識(shí)交換期間解決沖突的再一示例性、非限制性實(shí)施 例在圖6F中參考節(jié)點(diǎn)Nl、 N2、 N3、 N4、 N5、 N6、 N7、 N8、 N9和N10的同 步網(wǎng)絡(luò)來示出。為了根據(jù)該情形來解決沖突,應(yīng)用最高中心接近度的原則,其中測(cè)量端點(diǎn)接近跨一組設(shè)備的所有同步關(guān)系的所有其他端點(diǎn)的程度。最高中心 接近度標(biāo)識(shí)具有較大信息網(wǎng)絡(luò)的端點(diǎn)并且可通過取端點(diǎn)和所有其他端點(diǎn)的最 短路徑的總和的倒數(shù)來計(jì)算。總體上,設(shè)備越接近所有其他端點(diǎn),則在解決沖 突時(shí)就向該設(shè)備應(yīng)用更大的權(quán)重或優(yōu)先級(jí)。例如,假設(shè)節(jié)點(diǎn)N3和節(jié)點(diǎn)N9需
要沖突解決。在這種情況下,N3僅直接連接到兩個(gè)其他節(jié)點(diǎn)N2和N4,而節(jié) 點(diǎn)N9連接到三個(gè)節(jié)點(diǎn)N4、N5和N10。按照結(jié)合圖6E描述的最高親和性原則, 節(jié)點(diǎn)N9將被選為沖突獲勝者。然而,結(jié)果在應(yīng)用最高中心接近度時(shí)改變,因 為可在甚至不執(zhí)行計(jì)算的情況下觀察到節(jié)點(diǎn)N3比節(jié)點(diǎn)N9更接近所有其他節(jié) 點(diǎn)。該中心接近度的示例性、非限制性測(cè)量可如下執(zhí)行。
對(duì)于節(jié)點(diǎn)N3,到節(jié)點(diǎn)Nl的距離是2個(gè)節(jié)點(diǎn)遠(yuǎn),到節(jié)點(diǎn)N2的距離是1個(gè) 節(jié)點(diǎn)遠(yuǎn),到節(jié)點(diǎn)N4的距離是1個(gè)節(jié)點(diǎn)遠(yuǎn),到節(jié)點(diǎn)N5的距離是2個(gè)節(jié)點(diǎn)遠(yuǎn), 到節(jié)點(diǎn)N6的距離是2個(gè)節(jié)點(diǎn)遠(yuǎn),到節(jié)點(diǎn)N7的距離是2個(gè)節(jié)點(diǎn)遠(yuǎn),到節(jié)點(diǎn)N8 的距離是2個(gè)節(jié)點(diǎn)遠(yuǎn),到節(jié)點(diǎn)N9的距離是2個(gè)節(jié)點(diǎn)遠(yuǎn),并且到節(jié)點(diǎn)N10的距 離是3個(gè)節(jié)點(diǎn)遠(yuǎn)。將這些距離加在一起產(chǎn)生到所有其他節(jié)點(diǎn)的18個(gè)節(jié)點(diǎn)的總 距離。對(duì)于節(jié)點(diǎn)N9,執(zhí)行相同的計(jì)算,到節(jié)點(diǎn)N1的距離是4個(gè)節(jié)點(diǎn)遠(yuǎn),到節(jié) 點(diǎn)N2的距離是3個(gè)節(jié)點(diǎn)遠(yuǎn),到節(jié)點(diǎn)N3的距離是2個(gè)節(jié)點(diǎn)遠(yuǎn),到節(jié)點(diǎn)N4的足巨 離是1個(gè)節(jié)點(diǎn)遠(yuǎn),到節(jié)點(diǎn)N5的距離是1個(gè)節(jié)點(diǎn)遠(yuǎn),到節(jié)點(diǎn)N6的距離是4個(gè) 節(jié)點(diǎn)遠(yuǎn),到節(jié)點(diǎn)N7的距離是2個(gè)節(jié)點(diǎn)遠(yuǎn),到節(jié)點(diǎn)N8的距離是2個(gè)節(jié)點(diǎn)遠(yuǎn), 并且到節(jié)點(diǎn)N10的距離是1個(gè)節(jié)點(diǎn)遠(yuǎn)。將這些距離加在一起產(chǎn)生20個(gè)節(jié)點(diǎn)的 總距離。因此,N3勝過N9贏得該沖突。也可應(yīng)用對(duì)最高中心接近度的其他度 量或代理。例如,為了節(jié)省測(cè)量時(shí)間,可只考慮處于網(wǎng)絡(luò)邊緣的節(jié)點(diǎn),這在圖 6F中包括N1、 N6、 N7、 N8和N10,即,只連接到一個(gè)其他節(jié)點(diǎn)的設(shè)備。
圖7示出了根據(jù)基于通信量的策略的處理沖突的再一種方式,即,以最小 化網(wǎng)絡(luò)上的通信量的方式來解決沖突。例如,在圖7的示例中,存在五個(gè)設(shè)備 700、 710、 720、 730和740,它們分別具有知識(shí)702、 712、 722、 732和742, 這五個(gè)設(shè)備根據(jù)所示拓?fù)浣Y(jié)構(gòu)來同步。在該示例中,設(shè)備700將對(duì)象KN演化 為KFZ并且設(shè)備740和710獨(dú)立地將對(duì)象KN演化為Kn。在該實(shí)施例中,執(zhí) 行基于通信量的分析,由此確定是選擇KFZ還是選擇Kn解決該沖突且對(duì)網(wǎng)絡(luò) 通信量影響最小。在該示例中,以有利于版本Kn的方式解決該沖突牽涉較少
18的同步通信量,因?yàn)樽兏恍璞粋鞑サ饺齻€(gè)不同的設(shè)備700、 720和730而采 用版本KFZ需要傳播到所有其他設(shè)備。
圖8是示出根據(jù)本發(fā)明的一組設(shè)備之間的同步發(fā)起以及相應(yīng)的沖突檢測(cè) 和解決的示例性、非限制性流程圖。在800,在一組同步節(jié)點(diǎn)中的節(jié)點(diǎn)A和B 之間發(fā)起同步。在810,比較兩個(gè)節(jié)點(diǎn)A和B的知識(shí)。在820,檢測(cè)在同步期 間發(fā)現(xiàn)的任何沖突。在830,可任選地將沖突存儲(chǔ)在沖突日志中以供稍后解決 和/或?qū)⒆兏蜎_突解決回退到較早時(shí)間。如果未記錄以供稍后解決,則在830, 根據(jù)由同步設(shè)備(例如,用戶或應(yīng)用程序)選擇的一個(gè)或多個(gè)沖突解決策略來 解決沖突。在840,可任選地將沖突解決回退到較早的時(shí)間點(diǎn)。在850,可向 前應(yīng)用替換沖突解決策略。
由此,根據(jù)本發(fā)明,可單獨(dú)或組合應(yīng)用各種沖突解決策略以確定在發(fā)生沖 突的情況下哪一個(gè)節(jié)點(diǎn)勝過另一個(gè)節(jié)點(diǎn)。如果獨(dú)立版本化(versioning)是可以 的或者是所期望的,則沒有沖突解決是另一選擇。
總而言之,新端點(diǎn)和不止電子郵件的被同步的數(shù)據(jù)類型的增長將需要對(duì)于 不斷演化的同步情形足夠靈活的新沖突解決策略。此處所標(biāo)識(shí)的某些沖突解決 策略包括(A)"最頻繁更新者",其中自從上一次同歩以來執(zhí)行最多更新的 端點(diǎn)獲勝;(B)"優(yōu)先級(jí)",其中端點(diǎn)被分配優(yōu)先級(jí)并且這些優(yōu)先級(jí)用于確定 獲勝者;(C) "%變更",其中具有最高百分比的變更的副本獲勝;(D)"死鎖 解決",其中選擇仲裁者來確定無法解決的沖突的獲勝者;(E)"最高程度", 其中參與最多數(shù)量的同步關(guān)系的端點(diǎn)獲勝;以及(F)"最高中心接近度",其中 測(cè)量端點(diǎn)接近跨所有同步關(guān)系的所有其他端點(diǎn)的程度。
以上所提到的解決策略中的某一些是非傳統(tǒng)的,并且假設(shè)使用本發(fā)明的同 步能力的應(yīng)用程序遵循一組模式,能夠在不損失利用本發(fā)明所提供的沖突解決 特征的能力的情況下應(yīng)用這些策略中的任一個(gè)。具體而言,允許應(yīng)用程序推遲 沖突解決或使用所提供的策略來自動(dòng)解決沖突。在推遲的情況下,將給予客戶 機(jī)沖突信息以供存儲(chǔ),該信息在一個(gè)示例性、非限制性實(shí)施例中包括將在將要 應(yīng)用變更的情況下獲悉的項(xiàng)目版本、數(shù)據(jù)和知識(shí)向量。然后,客戶機(jī)能夠在稍 后枚舉這些沖突。因此,有利的是,本發(fā)明啟用對(duì)與沖突存儲(chǔ)在一起的每一個(gè) 項(xiàng)目知識(shí)的所存儲(chǔ)的沖突的枚舉以及應(yīng)用自定義沖突解決策略的能力。本發(fā)明的用于解決沖突的系統(tǒng)和方法也可應(yīng)用于在同一提供者上解決存 儲(chǔ)器中數(shù)據(jù)的上下文。在這一上下文中,存儲(chǔ)器中數(shù)據(jù)可能不由物理存儲(chǔ)來備 份,例如,該存儲(chǔ)器中數(shù)據(jù)可在CPU上的圖形解算機(jī)中用于同步節(jié)點(diǎn)。本發(fā) 明還可在景物圖的上下文中應(yīng)用,尤其在這些景物圖變得更多地分布在多核體 系結(jié)構(gòu)上并且直接向諸如體積紋理等存儲(chǔ)器中數(shù)據(jù)結(jié)構(gòu)寫入計(jì)算時(shí)。
示例性網(wǎng)絡(luò)化和分布式環(huán)境
本領(lǐng)域普通技術(shù)人員可以理解,本發(fā)明可以結(jié)合可作為計(jì)算機(jī)網(wǎng)絡(luò)的一部 分來部署的任何計(jì)算機(jī)或其它客戶機(jī)或服務(wù)器設(shè)備來實(shí)現(xiàn),或可在連接至任何 種類的數(shù)據(jù)存儲(chǔ)的分布式計(jì)算環(huán)境中實(shí)現(xiàn)。在這一點(diǎn)上,本發(fā)明涉及任何計(jì)算 機(jī)系統(tǒng)或環(huán)境,其具有任意數(shù)目的存儲(chǔ)器或存儲(chǔ)單元,以及發(fā)生在任意數(shù)目的 存儲(chǔ)單元或巻上的任意數(shù)目的應(yīng)用程序和進(jìn)程,它們可結(jié)合根據(jù)本發(fā)明的檢測(cè) 和解決同步?jīng)_突來使用。本發(fā)明可應(yīng)用于具有部署在具有遠(yuǎn)程或本地存儲(chǔ)的網(wǎng) 絡(luò)環(huán)境或分布式計(jì)算環(huán)境中的服務(wù)器計(jì)算機(jī)和客戶計(jì)算機(jī)的環(huán)境。本發(fā)明也可 應(yīng)用于具有用于結(jié)合遠(yuǎn)程或本地服務(wù)和進(jìn)程來生成、接收和發(fā)送信息的編程語 言功能、解釋和執(zhí)行能力的獨(dú)立計(jì)算設(shè)備。
分布式計(jì)算通過計(jì)算設(shè)備和系統(tǒng)之間的交換提供了計(jì)算機(jī)資源和服務(wù)的 共享。這些資源和服務(wù)包括信息的交換、對(duì)于諸如文件等對(duì)象的高速緩存存儲(chǔ) 和盤存儲(chǔ)。分布式計(jì)算利用網(wǎng)絡(luò)連接,從而允許客戶機(jī)利用它們的集體力量來 使整個(gè)企業(yè)受益。在這一點(diǎn)上,各種設(shè)備可具有可包含根據(jù)本發(fā)明的用于檢測(cè) 和解決同步?jīng)_突的系統(tǒng)和方法的應(yīng)用程序、對(duì)象或資源。
圖9提供了示例性的網(wǎng)絡(luò)化或分布式計(jì)算環(huán)境的示意圖。該分布式計(jì)算環(huán)
境包括計(jì)算對(duì)象910a、 910b等,以及計(jì)算對(duì)象或設(shè)備920a、 920b、 920c、 920d、 920e等。這些對(duì)象可包括程序、方法、數(shù)據(jù)存儲(chǔ)、可編程邏輯等等。這些對(duì)象 可包括諸如PDA、音頻/視頻設(shè)備、MP3播放器、個(gè)人計(jì)算機(jī)等相同或不同設(shè) 備的各部分。每一對(duì)象可通過通信網(wǎng)絡(luò)940與另一對(duì)象通信。該網(wǎng)絡(luò)本身可以 包括向圖9的系統(tǒng)提供服務(wù)的其它計(jì)算對(duì)象和計(jì)算設(shè)備,且其本身可以表示多 個(gè)互連的網(wǎng)絡(luò)。根據(jù)本發(fā)明的一方面,每一對(duì)象910a、 910b等,或920a、 920b、 920c、 920d、 920e等可包含可利用適用于根據(jù)本發(fā)明的用于檢測(cè)和解決同歩沖突的系統(tǒng)和方法的API、或其它對(duì)象、軟件、固件和/或硬件的應(yīng)用程序。
還可以理解,諸如920c等對(duì)象可以主存在另一計(jì)算設(shè)備910a、 910b等或 920a、 920b、 920c、 920d、 920e等上。因此,盡管所示的物理環(huán)境可以將所連 接的設(shè)備示為計(jì)算機(jī),但是這樣的圖示僅是示例性的,并且該物理環(huán)境可以被 替換地描述或描繪成包括諸如PDA、電視機(jī)、MP3播放器等的各種數(shù)字設(shè)備,
它們中的任何一個(gè)可采用各種有線和無線服務(wù)、諸如接口、 COM對(duì)象等軟件 對(duì)象,等等。
存在支持分布式計(jì)算環(huán)境的各種系統(tǒng)、組件和網(wǎng)絡(luò)配置。例如,計(jì)算系統(tǒng) 可以通過有線或無線系統(tǒng)、本地網(wǎng)絡(luò)或廣泛分布的網(wǎng)絡(luò)連接在一起。當(dāng)前,許 多網(wǎng)絡(luò)被耦合至因特網(wǎng),后者為廣泛分布的計(jì)算提供了基礎(chǔ)結(jié)構(gòu)并包含許多不 同的網(wǎng)絡(luò)。任何基礎(chǔ)架構(gòu)都可用于與根據(jù)本發(fā)明的對(duì)同步?jīng)_突的檢測(cè)和解決有 關(guān)的示例性通信。
在家庭網(wǎng)絡(luò)環(huán)境中,有至少四個(gè)全異的網(wǎng)絡(luò)傳輸介質(zhì),其每一個(gè)可支持一 種唯一的協(xié)議,這些介質(zhì)諸如電力線、數(shù)據(jù)(無線和有線)、語音(如,電話) 和娛樂媒體。諸如電燈開關(guān)和電器設(shè)備等大多數(shù)家庭控制設(shè)備可使用電力線來 連接。數(shù)據(jù)服務(wù)可通過寬帶(如,DSL或電纜調(diào)制解調(diào)器)進(jìn)入家庭,并可在 家庭內(nèi)使用無線(如,HomeRF或802.11B)或有線(如,家庭PNA、 Cat 5、 以太網(wǎng)、甚至是電力線)連接來訪問。語音話務(wù)可通過有線(如,Cat3)或無 線(如,蜂窩電話)進(jìn)入家庭,并可在家庭中使用Cat 3連線來分布。娛樂媒 體或其它圖形數(shù)據(jù)可通過衛(wèi)星或電纜進(jìn)入家庭,并通常在家庭中使用同軸電纜 來分布。IEEE 1394和DVI也是用于媒體設(shè)備群集的數(shù)字互聯(lián)。可作為協(xié)議標(biāo) 準(zhǔn)浮現(xiàn)或己經(jīng)浮現(xiàn)的所有這些網(wǎng)絡(luò)環(huán)境和其它環(huán)境可被互聯(lián)來形成可通過諸 如因特網(wǎng)等廣域網(wǎng)連接到外部世界的網(wǎng)絡(luò),諸如內(nèi)聯(lián)網(wǎng)。簡(jiǎn)言之,對(duì)數(shù)據(jù)的存 儲(chǔ)和傳輸存在各種不同的源,因此本發(fā)明的任何計(jì)算設(shè)備可按照任何現(xiàn)有方式 共享和傳輸數(shù)據(jù),且在本文實(shí)施例中描述的方式不旨在是限制性的。
因特網(wǎng)通常指使用傳輸控制協(xié)議/網(wǎng)際協(xié)議(TCP/IP)協(xié)議套件的網(wǎng)絡(luò)和 網(wǎng)關(guān)的集合,該協(xié)議在計(jì)算機(jī)聯(lián)網(wǎng)領(lǐng)域中是公知的。因特網(wǎng)可被描述為由執(zhí)行 允許用戶通過網(wǎng)絡(luò)交互和共享信息的聯(lián)網(wǎng)協(xié)議的計(jì)算機(jī)互連的地理上分布的 遠(yuǎn)程計(jì)算機(jī)網(wǎng)絡(luò)的系統(tǒng)。由亍這類廣泛分布信息的共享,諸如因特網(wǎng)等遠(yuǎn)程網(wǎng)
21絡(luò)至今發(fā)展成一種開放式系統(tǒng),開發(fā)者可用該開放式系統(tǒng)設(shè)計(jì)用于執(zhí)行專用操 作或服務(wù)的軟件應(yīng)用程序而基本上沒有限制。
由此,該網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)允許諸如客戶機(jī)/服務(wù)器、對(duì)等或混合體系結(jié)構(gòu)等 大量網(wǎng)絡(luò)拓樸結(jié)構(gòu)。"客戶機(jī)"是使用與它無關(guān)的另一類或組的服務(wù)的一個(gè)類 或組中的成員。就此,在計(jì)算時(shí),客戶機(jī)是進(jìn)程,g卩,粗略而言是一組請(qǐng)求由 另一程序提供的服務(wù)的指令或任務(wù)??蛻魴C(jī)進(jìn)程利用所請(qǐng)求的服務(wù),而不必"知 道"有關(guān)其它程序或服務(wù)本身的任何工作細(xì)節(jié)。在客戶機(jī)/服務(wù)器體系結(jié)構(gòu)中, 尤其在網(wǎng)絡(luò)化系統(tǒng)中,客戶機(jī)通常是訪問由例如服務(wù)器等另一計(jì)算機(jī)提供的共
享的網(wǎng)絡(luò)資源的計(jì)算機(jī)。在圖9的圖示中,作為示例,計(jì)算機(jī)920a、 920b、 920c、 920d、 920e等可以被認(rèn)為是客戶機(jī),而計(jì)算機(jī)910a、 910b等可以被認(rèn)為是服 務(wù)器,其中服務(wù)器910a、 910b等維護(hù)隨后被復(fù)制到客戶機(jī)計(jì)算機(jī)920a、 920b、 920c、 920d、 920e等的數(shù)據(jù),然而取決于環(huán)境,任何計(jì)算機(jī)都可被認(rèn)為是客戶 機(jī)、服務(wù)器或這兩者。這些計(jì)算設(shè)備中的任一個(gè)都可處理數(shù)據(jù)或請(qǐng)求可包含根 據(jù)本發(fā)明的對(duì)同步?jīng)_突的檢測(cè)和解決的服務(wù)或任務(wù)。
服務(wù)器通常是可通過諸如因特網(wǎng)或無線網(wǎng)絡(luò)基礎(chǔ)架構(gòu)等遠(yuǎn)程網(wǎng)絡(luò)或本地 網(wǎng)絡(luò)訪問的遠(yuǎn)程計(jì)算機(jī)系統(tǒng)??蛻魴C(jī)進(jìn)程可以在第--計(jì)算機(jī)系統(tǒng)中活動(dòng),而服 務(wù)器進(jìn)程可以在第二計(jì)算機(jī)系統(tǒng)中活動(dòng),它們通過各種通信介質(zhì)中的任一種彼 此通信,從而提供分布式功能并允許多個(gè)客戶機(jī)利用服務(wù)器的信息收集能力。 根據(jù)本發(fā)明的用于檢測(cè)和解決同步?jīng)_突的技術(shù)所使用的任何軟件對(duì)象可分布 在多個(gè)計(jì)算設(shè)備或?qū)ο笊稀?br>
客戶機(jī)和服務(wù)器利用由協(xié)議層提供的功能來彼此通信。例如,超文本傳輸 協(xié)議(HTTP)是結(jié)合萬維網(wǎng)(WWW),即"Web"使用的常見協(xié)議。通常, 諸如網(wǎng)際協(xié)議(IP)地址等計(jì)算機(jī)網(wǎng)絡(luò)地址或諸如統(tǒng)一資源定位器(URL)等 其它引用可以用于彼此標(biāo)識(shí)服務(wù)器或客戶計(jì)算機(jī)。網(wǎng)絡(luò)地址可以被稱為URL 地址??梢酝ㄟ^通信介質(zhì)來提供通信,例如客戶機(jī)和服務(wù)器可以通過TCP/IP 連接來彼此耦合以進(jìn)行大容量通信。
由此,圖9示出了其中可采用本發(fā)明的、服務(wù)器通過網(wǎng)絡(luò)/總線與客戶計(jì) 算機(jī)通信的示例性聯(lián)網(wǎng)或分布式環(huán)境。更詳細(xì)而言,根據(jù)本發(fā)明,多個(gè)服務(wù)器 91 Oa、 91 Ob等經(jīng)由通信網(wǎng)絡(luò)/總線940與多個(gè)客戶機(jī)或遠(yuǎn)程計(jì)算設(shè)備920a、 920b 、920c、 9200d、 920e等互連,通信網(wǎng)絡(luò)/總線940可以是LAN、 WAN、內(nèi)聯(lián)網(wǎng)、 GSM網(wǎng)絡(luò)、因特網(wǎng)等,客戶機(jī)或遠(yuǎn)程計(jì)算設(shè)備如便攜式計(jì)算機(jī)、手持式計(jì)算 機(jī)、瘦客戶機(jī)、聯(lián)網(wǎng)設(shè)備或其它設(shè)備,如VCR、 TV、烤箱、燈、加熱器等等。 因此,構(gòu)想了本發(fā)明可應(yīng)用于對(duì)于其期望與一組聯(lián)網(wǎng)設(shè)備中的一個(gè)或多個(gè)設(shè)備 同步數(shù)據(jù)的任何計(jì)算設(shè)備。
例如,在其中通信網(wǎng)絡(luò)/總線940是因特網(wǎng)的網(wǎng)絡(luò)環(huán)境中,服務(wù)器910a、 910b等可以是客戶機(jī)920a、 920b、 920c、 920d、 920e等通過諸如HTTP等多 種已知協(xié)議中的任一種與其通信的web服務(wù)器。服務(wù)器910a、 910b等也可擔(dān) 當(dāng)客戶機(jī)920a、 920b、 920c、 920d、 920e等,這是分布式計(jì)算環(huán)境的特性。
同樣,通信可以是有線或無線的,或者是兩者的適當(dāng)組合??蛻魴C(jī)設(shè)備 920a、 920b、 920c、 920d、 920e等可以通過或不通過通信網(wǎng)絡(luò)/總線14通信, 并可具有與其相關(guān)聯(lián)的獨(dú)立通信。例如,在TV或VCR的情況下,可能存在 或不存在其控制的網(wǎng)絡(luò)化方面。每一客戶計(jì)算機(jī)920a、 920b、 920c、 920d、 920e 等以及服務(wù)器計(jì)算機(jī)910a、 910b等可以具備各種應(yīng)用程序模塊或?qū)ο?35a、 135b、 135c等,并具有對(duì)各種類型的存儲(chǔ)元件或?qū)ο蟮倪B接或訪問,在這些存 儲(chǔ)元件或?qū)ο笊峡蓛?chǔ)存文件或數(shù)據(jù)流,或者可向其下載、傳送或遷移文件或數(shù) 據(jù)流的各部分。計(jì)算機(jī)910a、 910b、 920a、 920b、 920c、 920d、 920e等中的任 何一個(gè)或多個(gè)可負(fù)責(zé)維護(hù)并更新數(shù)據(jù)庫930或其它存儲(chǔ)元件,如用于儲(chǔ)存根據(jù) 本發(fā)明處理或保存的數(shù)據(jù)的數(shù)據(jù)庫或存儲(chǔ)器930。由此,本發(fā)明可以用于具有 可訪問計(jì)算機(jī)網(wǎng)絡(luò)/總線940并與其交互的客戶計(jì)算機(jī)920a、 920b、 920c、 920d、 920e等,和可與客戶機(jī)計(jì)算機(jī)920a、 920b、 920c、 920d、 920e等以及其它類 似的設(shè)備交互的服務(wù)器計(jì)算機(jī)910a、 910b等,以及數(shù)據(jù)庫930的計(jì)算機(jī)網(wǎng)絡(luò) 環(huán)境中。
示例性計(jì)算設(shè)備
如上所述,本發(fā)明適用于其中可能期望跨一組設(shè)備同步數(shù)據(jù)的任何設(shè)備。 因此,應(yīng)當(dāng)理解,構(gòu)想了結(jié)合本發(fā)明使用的所有種類的手持式、便攜式和其它 計(jì)算設(shè)備和計(jì)算對(duì)象,即,在設(shè)備可同步數(shù)據(jù)或以其它方式接收、處理或存儲(chǔ) 同步數(shù)據(jù)的任何地方。因此,在下面的圖10中描述的以下通用遠(yuǎn)程計(jì)算機(jī)僅是一個(gè)示例,且本發(fā)明可用具有網(wǎng)絡(luò)/總線互操作性和交互的任何客戶機(jī)來實(shí) 現(xiàn)。由此,本發(fā)明可在其中蘊(yùn)含了極少或最小客戶機(jī)資源的聯(lián)網(wǎng)的托管服務(wù)的 環(huán)境,例如其中客戶機(jī)設(shè)備僅用作到網(wǎng)絡(luò)/總線的接口 (如置于電器中的對(duì)象) 的聯(lián)網(wǎng)環(huán)境中實(shí)現(xiàn)。
盡管并不是必需的,但本發(fā)明可以部分地經(jīng)由操作系統(tǒng)來實(shí)現(xiàn),以供設(shè)備 或?qū)ο蟮姆?wù)開發(fā)者使用,和/或被包括在結(jié)合本發(fā)明的組件操作的應(yīng)用軟件 中。軟件可以在由諸如客戶機(jī)工作站、服務(wù)器或其它設(shè)備等一個(gè)或多個(gè)計(jì)算機(jī) 執(zhí)行的諸如程序模塊等計(jì)算機(jī)可執(zhí)行指令的通用上下文中描述。本領(lǐng)域的技術(shù) 人員可以理解,本發(fā)明可以用其它計(jì)算機(jī)系統(tǒng)配置和協(xié)議來實(shí)施。
圖10由此示出其中可實(shí)現(xiàn)本發(fā)明的合適的計(jì)算系統(tǒng)環(huán)境1000a的- -個(gè)示
例,但如以上清楚地描述的,計(jì)算系統(tǒng)環(huán)境1000a僅為用于媒體設(shè)備的合適的 計(jì)算環(huán)境的一個(gè)示例,并非旨在對(duì)本發(fā)明的使用范圍或功能提出任何局限。也 不應(yīng)將計(jì)算系統(tǒng)1000a解釋為對(duì)示例性操作環(huán)境1000a中示出的任一組件或其 組合具有任何依賴性或需求。
參見圖10,用于實(shí)現(xiàn)本發(fā)明的示例性遠(yuǎn)程設(shè)備包括計(jì)算機(jī)1010a形式的 通用計(jì)算設(shè)備。計(jì)算機(jī)1010a的組件可以包括,但不限于,處理單元1020a、 系統(tǒng)存儲(chǔ)器1030a、和將包括系統(tǒng)存儲(chǔ)器在內(nèi)的各種系統(tǒng)組件耦合至處理單元 1020a的系統(tǒng)總線1021a。系統(tǒng)總線1021a可以是若干種類型的總線結(jié)構(gòu)中的 任一種,包括存儲(chǔ)器總線或存儲(chǔ)控制器、外圍總線、以及使用各種總線體系結(jié) 構(gòu)中的任一種的局部總線。
計(jì)算機(jī)1010a通常包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是可由 計(jì)算機(jī)1010a訪問的任何可用介質(zhì)。作為示例而非限制,計(jì)算機(jī)可讀介質(zhì)可包 括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以用于存儲(chǔ)諸如計(jì)算機(jī)可 讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的任何方法或技術(shù)實(shí)現(xiàn)的易失 性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括但不限于,RAM、 ROM、 EEPROM、閃存或其它存儲(chǔ)器技術(shù)、CDROM、數(shù)字多功能盤(DVD) 或其它光盤存儲(chǔ)、磁盒、磁帶、磁盤存儲(chǔ)或其它磁存儲(chǔ)設(shè)備、或可以用來儲(chǔ)存 所需信息并可由計(jì)算機(jī)1010a訪問的任何其它介質(zhì)。通信介質(zhì)通常以諸如載波 或其它傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號(hào)來體現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),并包括任意信息傳送介質(zhì)。
系統(tǒng)存儲(chǔ)器1030a可以包括諸如只讀存儲(chǔ)器(ROM)和/或隨機(jī)存取存儲(chǔ)器 (RAM)等易失性和/或非易失性存儲(chǔ)器形式的計(jì)算機(jī)存儲(chǔ)介質(zhì)?;据斎?輸出 系統(tǒng)(BIOS)可被存儲(chǔ)在存儲(chǔ)器1030a中,它包含幫助在諸如啟動(dòng)期間在計(jì)算 機(jī)1010a內(nèi)的元件之間傳遞信息的基本例程。存儲(chǔ)器1030a通常還包含處理單 元1020a可以立即訪問和/或目前正在操作的數(shù)據(jù)和/或程序模塊。作為示例而 非局限,存儲(chǔ)器1030a還可以包括操作系統(tǒng)、應(yīng)用程序、其它程序模塊、和程 序數(shù)據(jù)。
計(jì)算機(jī)1010a也可以包括其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī) 存儲(chǔ)介質(zhì)。例如,計(jì)算機(jī)1010a可以包括對(duì)不可移動(dòng)、非易失性磁介質(zhì)進(jìn)行讀 寫的硬盤驅(qū)動(dòng)器,對(duì)可移動(dòng)、非易失性磁盤進(jìn)行讀寫的磁盤驅(qū)動(dòng)器,和/或?qū)χT 如CD-ROM或其它光學(xué)介質(zhì)等可移動(dòng)、非易失性光盤進(jìn)行讀寫的光盤驅(qū)動(dòng)器。 可以在示例性操作環(huán)境中使用的其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算 機(jī)存儲(chǔ)介質(zhì)包括但不限于,磁帶盒、閃存卡、數(shù)字多功能盤、數(shù)字錄像帶、固 態(tài)RAM、固態(tài)ROM等等。硬盤驅(qū)動(dòng)器通常由諸如接口等不可移動(dòng)存儲(chǔ)器接 口連接至系統(tǒng)總線1021a,而磁盤驅(qū)動(dòng)器或光盤驅(qū)動(dòng)器通常由諸如接口等可移 動(dòng)存儲(chǔ)器接口連接至系統(tǒng)總線1021a。
用戶可以通過輸入設(shè)備,如鍵盤和定點(diǎn)設(shè)備(通常指鼠標(biāo)、跟蹤球或觸摸 板)向計(jì)算機(jī)1010a輸入命令和信息。其它輸入設(shè)備可以包括話筒、操縱桿、 游戲手柄、圓盤式衛(wèi)星天線、掃描儀等等。這些和其它輸入設(shè)備通常由耦合至 系統(tǒng)總線1021a的用戶輸入1040a和相關(guān)聯(lián)的接口連接到處理單元1020a,但 是也可由諸如并行端口、游戲端口或通用串行總線(USB)之類的其它接口和 總線結(jié)構(gòu)連接。圖形子系統(tǒng)也可以被連接到系統(tǒng)總線1021a。監(jiān)視器或其它類 型的顯示設(shè)備也通過接口,如輸出接口 1050a連接至系統(tǒng)總線1021a,而輸出 接口 1050a又與視頻存儲(chǔ)器通信。除監(jiān)視器之外,計(jì)算機(jī)還可以包括其它外圍 輸出設(shè)備,如揚(yáng)聲器和打印機(jī),它們可以通過輸出接口 1050a連接。
計(jì)算機(jī)1010a可使用至諸如遠(yuǎn)程計(jì)算機(jī)1070a等的一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī) 的邏輯連接在網(wǎng)絡(luò)化或分布式環(huán)境中操作,遠(yuǎn)程計(jì)算機(jī)1070a又可以具有與設(shè) 備1010a不同的媒體能力。遠(yuǎn)程計(jì)算機(jī)1070a可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路
25由器、網(wǎng)絡(luò)PC、對(duì)等設(shè)備或其它常見的網(wǎng)絡(luò)節(jié)點(diǎn)、或任何其它遠(yuǎn)程媒體消費(fèi) 或傳輸設(shè)備,并且可以包括上面關(guān)于計(jì)算機(jī)1010a所描述的任何或全部元件。 圖IO所示的邏輯連接包括諸如局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)等的網(wǎng)絡(luò)1071a, 但也可以包括其它網(wǎng)絡(luò)/總線。這樣的聯(lián)網(wǎng)環(huán)境在家庭、辦公室、企業(yè)范圍計(jì)算 機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中是常見的。
當(dāng)在LAN聯(lián)網(wǎng)環(huán)境中使用時(shí),計(jì)算機(jī)1010a通過網(wǎng)絡(luò)接口或適配器連接 至LAN1071a。當(dāng)在WAN聯(lián)網(wǎng)環(huán)境中使用時(shí),計(jì)算機(jī)1010a通常包括通信組 件,諸如調(diào)制解調(diào)器或用于通過諸如因特網(wǎng)等的WAN建立通信的其它裝置。 諸如調(diào)制解調(diào)器等通信組件可以是內(nèi)置或外置的,它可以通過輸入1040a的用 戶輸入接口或其它適當(dāng)?shù)臋C(jī)制連接至系統(tǒng)總線1021a。在網(wǎng)絡(luò)化環(huán)境中,相對(duì) 于計(jì)算機(jī)1010a所描述的程序模塊或其部分可被儲(chǔ)存在遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備 中??梢岳斫?,所示和所述的網(wǎng)絡(luò)連接是示例性的,且可以使用在計(jì)算機(jī)之間 建立通信鏈路的其它手段。
示例性分布式計(jì)算體系結(jié)構(gòu)
鑒子個(gè)人計(jì)算和因特網(wǎng)的交匯,已經(jīng)開發(fā)且正在開發(fā)各種分布式計(jì)算框 架。個(gè)人和企業(yè)用戶同樣地配備用于應(yīng)用程序和計(jì)算設(shè)備的無縫互操作和啟用 web的接口 ,使得計(jì)算活動(dòng)越來越面向web瀏覽器和網(wǎng)絡(luò)。
例如,MICROSOFT⑧的托管代碼平臺(tái),即.NET,包括服務(wù)器、諸如基于 web的數(shù)據(jù)存儲(chǔ)等構(gòu)件塊服務(wù)、以及可下載設(shè)備軟件。 一般而言,.NET平臺(tái) 提供(1)令整個(gè)范圍的計(jì)算設(shè)備共同工作并在所有設(shè)備上自動(dòng)更新并同步用 戶信息的能力,(2)提高的網(wǎng)頁交互能力,通過大量使用XML而不是HTML 來實(shí)現(xiàn),(3)以從用于管理諸如電子郵件等各種應(yīng)用程序或諸如Office.NET 等軟件的中央起點(diǎn)到用戶的產(chǎn)品和服務(wù)的定制訪問和傳送為特點(diǎn)的在線服務(wù),
(4)集中式數(shù)據(jù)存儲(chǔ),將增加對(duì)信息訪問以及用戶和設(shè)備間的信息同步的效 率和簡(jiǎn)易性,(5)集成各種通信媒體,如電子郵件、傳真和電話的能力,(6) 對(duì)開發(fā)人員來說,創(chuàng)建可重用模塊的能力,由此提高生產(chǎn)力并降低編程差錯(cuò)的 數(shù)量,以及(7)許多其它跨平臺(tái)和語言綜合特性。
盡管此處的某些示例性實(shí)施例是結(jié)合諸如應(yīng)用程序編程接口 (API)等駐留在計(jì)算設(shè)備上的軟件來描述的,但本發(fā)明的一個(gè)或多個(gè)部分也可以通過操作 系統(tǒng)、或"中間人"對(duì)象、控制對(duì)象、硬件、固件、中間語言指令或?qū)ο蟮葋?實(shí)現(xiàn),使得由諸如.NET代碼等托管代碼啟用的所有語言和服務(wù)以及其它分布 式計(jì)算框架可包括、支持或可經(jīng)由它們來訪問根據(jù)本發(fā)明的用于檢測(cè)和解決同 步?jīng)_突的方法。
有多種實(shí)現(xiàn)本發(fā)明的方法,例如適當(dāng)?shù)腁PI、工具箱、驅(qū)動(dòng)程序代碼、操 作系統(tǒng)、控件、獨(dú)立或可下載軟件對(duì)象等,它們使得應(yīng)用程序和服務(wù)能夠使用 根據(jù)本發(fā)明的用于檢測(cè)和解決同步?jīng)_突的系統(tǒng)和方法。本發(fā)明從API (或其它 軟件對(duì)象)的觀點(diǎn)以及從執(zhí)行根據(jù)本發(fā)明的同步操作的軟件或硬件對(duì)象的觀點(diǎn) 構(gòu)想了對(duì)本發(fā)明的使用。由此,此處描述的本發(fā)明的各種實(shí)現(xiàn)都可以具有完全 采用硬件、部分采用硬件并且部分采用軟件、以及采用軟件的方面。
在本文中使用的詞語"示例性"意味著用作示例、實(shí)例或說明。為避免疑 惑,本文公開的主題不受限于這樣的示例。此外,本文描述為"示例性"的任 何方面或設(shè)計(jì)不必解釋成優(yōu)于其它方面或設(shè)計(jì)或比其它方面或設(shè)計(jì)有利,它也 不旨在排除本領(lǐng)域的普通技術(shù)人員所知的等效示例性結(jié)構(gòu)和技術(shù)。而且,就術(shù) 語"包括"、"具有"、"包含"和其它類似的詞語在詳細(xì)描述或權(quán)利要求書 中的使用而言,為避免疑惑,這樣的術(shù)語旨在以類似于術(shù)語"包括"作為開放 的過渡詞的方式解釋而不排除任何附加或其它元素。
如上所述,盡管結(jié)合各種計(jì)算設(shè)備和網(wǎng)絡(luò)體系結(jié)構(gòu)描述了本發(fā)明的示例性 實(shí)施例,但底層概念可被應(yīng)用于其中期望在 組松耦合設(shè)備之間同步的任何計(jì) 算設(shè)備或系統(tǒng)。例如,根據(jù)本發(fā)明的對(duì)同步?jīng)_突的檢測(cè)和解決可被應(yīng)用于計(jì)算 設(shè)備的操作系統(tǒng),可作為設(shè)備上的獨(dú)立對(duì)象、作為另一對(duì)象的一部分、作為可 重復(fù)使用的控件、作為可從服務(wù)器下載的對(duì)象、作為設(shè)備或?qū)ο蠛途W(wǎng)絡(luò)之間的 "中間人"、作為分布式對(duì)象、作為硬件、在存儲(chǔ)器中、以上各項(xiàng)的任何組合 等來提供。盡管此處選擇了示例性編程語言、名稱和示例來表示各種選擇,但 這些語言、名稱和示例并不旨在是限制性的。本領(lǐng)域的普通技術(shù)人員將認(rèn)識(shí)到, 有多種方法來提供實(shí)現(xiàn)本發(fā)明的各實(shí)施例所實(shí)現(xiàn)的相同、相似或等效的功能的 目標(biāo)代碼和命名法。
如上所述,此處所述的各種技術(shù)可結(jié)合硬件或軟件,或在適當(dāng)時(shí)以兩者的組合來實(shí)現(xiàn)。如在此所使用的,術(shù)語"組件"、"系統(tǒng)"等同樣指的是計(jì)算機(jī) 相關(guān)實(shí)體,或者是硬件、硬件和軟件的組合、軟件或執(zhí)行中的軟件。例如,組 件可以是,但不限于是,在處理器上運(yùn)行的進(jìn)程、處理器、對(duì)象、可執(zhí)行碼、 執(zhí)行的線程、程序和/或計(jì)算機(jī)。作為說明,運(yùn)行在計(jì)算機(jī)上的應(yīng)用程序和計(jì)算 機(jī)本身都可以是計(jì)算機(jī)組件。一個(gè)或多個(gè)組件可以駐留在進(jìn)程和/或執(zhí)行的線程 中,并且組件可以位于一個(gè)計(jì)算機(jī)內(nèi)和/或分布在兩個(gè)或更多的計(jì)算機(jī)之間。
由此,本發(fā)明的方法和裝置或其特定方面或部分可采取包含在諸如軟盤、 CD-ROM、硬盤驅(qū)動(dòng)器或任何其它機(jī)器可讀存儲(chǔ)介質(zhì)等有形介質(zhì)中的程序代碼 (即,指令)的形式,其中當(dāng)程序代碼被加載到諸如計(jì)算機(jī)等機(jī)器內(nèi)并由其執(zhí) 行時(shí),該機(jī)器成為用于實(shí)現(xiàn)本發(fā)明的裝置。在程序代碼在可編程計(jì)算機(jī)上執(zhí)行 的情況下,計(jì)算設(shè)備通常包括處理器、該處理器可讀的存儲(chǔ)介質(zhì)(包括易失性 和非易失性的存儲(chǔ)器和/或存儲(chǔ)元件)、至少一個(gè)輸入設(shè)備、以及至少一個(gè)輸出 設(shè)備??衫缤ㄟ^使用數(shù)據(jù)處理API、可重用控件等來實(shí)現(xiàn)或利用本發(fā)明的同 歩和沖突解決能力的一個(gè)或多個(gè)程序較佳地用高級(jí)過程語言或面向?qū)ο蟮木?程語言來實(shí)現(xiàn)以與計(jì)算機(jī)系統(tǒng)通信。然而,如果需要,程序可以用匯編語言或 機(jī)器語言來實(shí)現(xiàn)。在任何情形中,語言可以是編譯語言或解釋語言,且與硬件 實(shí)現(xiàn)相結(jié)合。
本發(fā)明的方法和裝置也可以經(jīng)由以通過某種傳輸介質(zhì)傳輸?shù)某绦虼a的 形式體現(xiàn)的通信來實(shí)現(xiàn),比如通過電線或電纜、通過光纖或經(jīng)由任何其它傳輸 形式,其中,當(dāng)程序代碼由諸如EPROM、門陣列、可編程邏輯器件(PLD)、 客戶計(jì)算機(jī)等機(jī)器接收、加載并執(zhí)行時(shí),該機(jī)器成為用于實(shí)現(xiàn)本發(fā)明的裝置。 當(dāng)在通用處理器上實(shí)現(xiàn)時(shí),程序代碼與處理器相結(jié)合來提供一種用于調(diào)用本發(fā) 明的功能的獨(dú)特裝置。另外,結(jié)合本發(fā)明使用的任何存儲(chǔ)技術(shù)總是可以是硬件 和軟件的組合。
此外,所公開的主題可以使用產(chǎn)生軟件、固件、硬件或其任意組合的標(biāo)準(zhǔn) 編程和/或工程技術(shù)實(shí)現(xiàn)為用于控制基于計(jì)算機(jī)或處理器的設(shè)備以實(shí)現(xiàn)在此所 詳述的諸方面的系統(tǒng)、方法、裝置或制品。此處所用的術(shù)語"制品"(或作為 替換,"計(jì)算機(jī)程序產(chǎn)品")旨在涵蓋可從任何計(jì)算機(jī)可讀設(shè)備、載體或介質(zhì) 訪問的計(jì)算機(jī)程序。例如,計(jì)算機(jī)可讀介質(zhì)可包括但不限于,磁存儲(chǔ)設(shè)備(例
28如,硬盤、軟盤、磁帶……)、光盤(例如,緊致盤(CD)、數(shù)字多功能盤 (DVD)……)、智能卡、以及閃存設(shè)備(例如,卡、棒)。另外,已知可以 采用載波來承載計(jì)算機(jī)可讀電子數(shù)據(jù),例如那些用于發(fā)送和接收電子郵件或用 于訪問如因特網(wǎng)或局域網(wǎng)(LAN)等網(wǎng)絡(luò)的數(shù)據(jù)。
已經(jīng)關(guān)于若干組件之間的交互描述了前述系統(tǒng)。應(yīng)該理解,這樣的系統(tǒng)和 組件可以包括那些組件或指定的子組件、指定的組件或子組件中的某一些、和 /或另外的組件,并根據(jù)前述的各種排列和組合。子組件也可以被實(shí)現(xiàn)為通信耦 合至其它組件而非被包括在父組件(分層)內(nèi)的組件。另外,應(yīng)注意到一個(gè)或 多個(gè)組件可被組合成提供聚集功能的單個(gè)組件,或被分成若干單獨(dú)的子組件, 且諸如管理層等任何一個(gè)或多個(gè)中間層可被設(shè)置成通信耦合到這樣的子組件 以便提供集成功能。此處描述的任何組件也可以與在此未具體描述但本領(lǐng)域的 技術(shù)人員公知的一個(gè)或多個(gè)其它組件交互。
考慮到以上描述的示例性系統(tǒng),參考圖2A、 3、 4A、 4B、 4C、 4D、 5A、 5B、 5C、 5D、 6A、 6B、 6C、 6D、 6E、 6F、 7和8的流程圖將可以更好地理解 可根據(jù)所公開的主題來實(shí)現(xiàn)的方法。盡管出于說明簡(jiǎn)單的目的,各方法被顯示 和描述為一系列框,但應(yīng)該理解和領(lǐng)會(huì),所要求保護(hù)的主題不受框次序的限制, 因?yàn)橐恍┛蚰軌蛞圆煌拇涡蚝?或與在此描繪和描述的其它框同時(shí)發(fā)生。盡管 經(jīng)由流程圖示出了非順序或分支的流程,但可以理解,可實(shí)現(xiàn)達(dá)成相同或類似 結(jié)果的各種其它分支、流程路徑和框次序。而且,并非所有示出的框都是實(shí)現(xiàn) 以下描述的方法所必需的。
此外,應(yīng)該明白以上公開的系統(tǒng)以及以下方法的不同部分可以包括或包含 人工智能或基于知識(shí)或規(guī)則的組件、子組件、進(jìn)程、裝置、方法或機(jī)制(例如, 支持向量機(jī)、神經(jīng)網(wǎng)絡(luò)、專家系統(tǒng)、貝葉斯置信網(wǎng)絡(luò)、模糊邏輯、數(shù)據(jù)融合引 擎、分類器等)。這樣的組件和其它組件可以自動(dòng)化所執(zhí)行的某些機(jī)制或進(jìn)程, 由此使得系統(tǒng)和方法的各部分更為自適應(yīng)、高效及智能。
盡管結(jié)合各附圖的優(yōu)選實(shí)施例描述了本發(fā)明,但是可以理解,可以使用其 它類似的實(shí)施例,或可以對(duì)所述實(shí)施例進(jìn)行修改或添加來執(zhí)行本發(fā)明的相同功 能而不背離本發(fā)明。例如,盡管在諸如對(duì)等聯(lián)網(wǎng)環(huán)境等聯(lián)網(wǎng)環(huán)境的上下文中描 述了本發(fā)明的示例性網(wǎng)絡(luò)環(huán)境,但是本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,本發(fā)明不限于此,并且本申請(qǐng)中所描述的方法可應(yīng)用于任何計(jì)算設(shè)備或環(huán)境,諸如游戲控 制臺(tái)、手持式計(jì)算機(jī)、便攜式計(jì)算機(jī)等等,不論其是有線還是無線的,并且該 方法可應(yīng)用于經(jīng)由通信網(wǎng)絡(luò)連接并通過網(wǎng)絡(luò)交互的任意數(shù)量的此類計(jì)算設(shè)備。 此外,應(yīng)當(dāng)強(qiáng)調(diào),構(gòu)想了包括手持式設(shè)備操作系統(tǒng)和其它專用操作系統(tǒng)的各種 計(jì)算機(jī)平臺(tái),尤其是在無線聯(lián)網(wǎng)設(shè)備的數(shù)量持續(xù)增長時(shí)。
雖然各示例性實(shí)施例涉及在特定編程語言構(gòu)造的上下文中利用本發(fā)明,但 是本發(fā)明不限于此,而是可用任何語言實(shí)現(xiàn)以提供根據(jù)本發(fā)明的用于檢測(cè)和解
決沖突的方法。而且,本發(fā)明可以在多個(gè)處理芯片或設(shè)備中實(shí)現(xiàn)或跨多個(gè)處理 芯片或設(shè)備實(shí)現(xiàn),且存儲(chǔ)可以類似地跨多個(gè)設(shè)備來實(shí)現(xiàn)。因此,本發(fā)明不應(yīng)限 于任何單個(gè)實(shí)施例,而是應(yīng)該根據(jù)所附權(quán)利要求書的廣度和范圍來解釋。
權(quán)利要求
1.一種用于在可經(jīng)由一個(gè)或多個(gè)網(wǎng)絡(luò)來連接的多個(gè)節(jié)點(diǎn)中的第一節(jié)點(diǎn)和第二節(jié)點(diǎn)之間同步對(duì)象集的方法,包括發(fā)起所述第一節(jié)點(diǎn)和所述第二節(jié)點(diǎn)之間的所述對(duì)象集的同步800;將所述第二節(jié)點(diǎn)的關(guān)于所述對(duì)象集的知識(shí)與所述第一節(jié)點(diǎn)的關(guān)于所述對(duì)象集的知識(shí)進(jìn)行比較810,包括確定對(duì)于由所述第一和第二節(jié)點(diǎn)維護(hù)的對(duì)象集中的至少一個(gè)對(duì)象的各自版本存在沖突820;以及通過參考來自一組沖突解決策略的、可由所述第一和/或第二節(jié)點(diǎn)來配置的至少一個(gè)沖突解決策略,選擇所述版本中要傳播到所述多個(gè)節(jié)點(diǎn)的一個(gè)版本,來解決所述沖突830。
2. 如權(quán)利要求1所述的方法,其特征在于,所述確定820包括從所述第二 節(jié)點(diǎn)和所述第一節(jié)點(diǎn)的知識(shí)中檢測(cè)所述對(duì)象集中的對(duì)象是否獨(dú)立地在所述第 一節(jié)點(diǎn)和所述第二節(jié)點(diǎn)上演化。
3. 如權(quán)利要求1所述的方法,其特征在于,所述解決830包括通過參考一 沖突解決策略選擇所述版本中要傳播到所述多個(gè)節(jié)點(diǎn)的一個(gè)版本,來解決所述 沖突,該沖突解決策略偏愛源自自從上一次同步時(shí)間以來執(zhí)行最多更新的節(jié)點(diǎn) 的版本。
4. 如權(quán)利要求1所述的方法,其特征在于,所述解決830包括通過參考一 沖突解決策略選擇所述版本中要傳播到所述多個(gè)節(jié)點(diǎn)的一個(gè)版本,來解決所述 沖突,該沖突解決策略偏愛源自具有最高優(yōu)先級(jí)的節(jié)點(diǎn)的版本。
5. 如權(quán)利要求1所述的方法,其特征在于,所述解決830包括通過參考一 沖突解決策略選擇所述版本中要傳播到所述多個(gè)節(jié)點(diǎn)的一個(gè)版本,來解決所述 沖突,該沖突解決策略偏愛源自對(duì)所述至少一個(gè)對(duì)象作出最高百分比的變更的 節(jié)點(diǎn)的版本。
6. 如權(quán)利要求1所述的方法,其特征在于,所述解決830包括通過參考一 仲裁者選擇所述版本中要傳播到所述多個(gè)節(jié)點(diǎn)的一個(gè)版本,來解決所述沖突, 該仲裁者代表所述第一和第二節(jié)點(diǎn)來確定要傳播的版本。
7. 如權(quán)利要求1所述的方法,其特征在于,所述解決830包括通過參考一 沖突解決策略選擇所述版本中要傳播到所述多個(gè)節(jié)點(diǎn)的一個(gè)版本,來解決所述沖突,該沖突解決策略偏愛源自參與較多數(shù)量的與所述多個(gè)節(jié)點(diǎn)的同步關(guān)系的 節(jié)點(diǎn)的版本。
8. 如權(quán)利要求1所述的方法,其特征在于,所述解決830包括通過參考一沖突解決策略選擇所述版本中要傳播到所述多個(gè)節(jié)點(diǎn)的一個(gè)版本,來解決所述 沖突,該沖突解決策略偏愛源自跨所述多個(gè)節(jié)點(diǎn)的所有同步關(guān)系所測(cè)得的最接 近所有其他節(jié)點(diǎn)的節(jié)點(diǎn)的版本。
9. 如權(quán)利要求1所述的方法,其特征在于,還包括 由所述第一節(jié)點(diǎn)或所述第二節(jié)點(diǎn)來發(fā)起與第三節(jié)點(diǎn)的同步800; 將所述第三節(jié)點(diǎn)的關(guān)于所述對(duì)象集的知識(shí)與所述第一節(jié)點(diǎn)或所述第二節(jié)點(diǎn)的關(guān)于所述對(duì)象集的知識(shí)進(jìn)行比較810,包括確定對(duì)于由所述第三節(jié)點(diǎn)和所述第一或第二節(jié)點(diǎn)維護(hù)的對(duì)象集中的至少一個(gè)對(duì)象的各自版本存在第二沖突820;以及通過參考可由所述第三節(jié)點(diǎn)和/或所述第一節(jié)點(diǎn)或所述第二節(jié)點(diǎn)從多個(gè)沖 突解決策略中選擇的至少一個(gè)沖突解決策略,選擇所述版本中要傳播到所述多個(gè)節(jié)點(diǎn)的一個(gè)版本,來解決所述第二沖突830。
10. —種包括用于執(zhí)行如權(quán)利要求1所述的方法的計(jì)算機(jī)可執(zhí)行指令的 計(jì)算機(jī)可讀介質(zhì)。
11. 一種可經(jīng)由一個(gè)或多個(gè)網(wǎng)絡(luò)來連接的多個(gè)節(jié)點(diǎn)中的第一節(jié)點(diǎn),所述 第一節(jié)點(diǎn)在所述第一節(jié)點(diǎn)和所述多個(gè)節(jié)點(diǎn)中的任一第二節(jié)點(diǎn)之間同步對(duì)象集,所述第一節(jié)點(diǎn)包括同歩組件220,其在所述第一節(jié)點(diǎn)和所述多個(gè)節(jié)點(diǎn)中的任一第二節(jié)點(diǎn)之間 同歩所述對(duì)象集,并且檢測(cè)對(duì)于由所述第一和任一第二節(jié)點(diǎn)維護(hù)的對(duì)象集中的至少一個(gè)對(duì)象的各自版本是否存在至少一個(gè)沖突;沖突日志存儲(chǔ)250,其存儲(chǔ)表示所述至少一個(gè)沖突的信息; 同步?jīng)_突解決組件226,其允許通過參考由所述第一節(jié)點(diǎn)從多個(gè)沖突解決策略中選擇的至少一個(gè)沖突解決策略,選擇所述版本中要傳播到所述第二節(jié)點(diǎn)的一個(gè)版本,來解決所述至少一個(gè)沖突;以及同步時(shí)間控制組件224,其允許所述第一節(jié)點(diǎn)的應(yīng)用程序或用戶將所述至少--個(gè)對(duì)象還原到檢測(cè)到所述至少一個(gè)沖突之間的時(shí)間。
12. 如權(quán)利要求11所述的第一節(jié)點(diǎn),其特征在于,所述同步時(shí)間控制組件224允許所述應(yīng)用程序或用戶將所述第一節(jié)點(diǎn)的對(duì)象集還原到指定時(shí)間 點(diǎn),由此回退所述同步?jīng)_突解決組件226在所述指定時(shí)間點(diǎn)之后對(duì)所述對(duì)象集 執(zhí)行的任何沖突解決。
13. 如權(quán)利要求12所述的第一節(jié)點(diǎn),其特征在于,所述同步時(shí)間控制 組件224允許所述應(yīng)用程序或用戶在所述指定時(shí)間點(diǎn)應(yīng)用所述多個(gè)沖突解決策 略中的至少一個(gè)不同的沖突解決策略,從而參考所述至少一個(gè)不同的沖突解決 策略來解決自從所述指定時(shí)間點(diǎn)以來的任何沖突。
14. 如權(quán)利要求11所述的方法,其特征在于,所述同步?jīng)_突解決組件 224通過參考一沖突解決策略選擇所述版本中要傳播到所述第二節(jié)點(diǎn)的一個(gè)版 本,來解決所述至少一個(gè)沖突,該沖突解決策略偏愛源自自從上一次同步以來 執(zhí)行最多更新的節(jié)點(diǎn)的版本。
15. 如權(quán)利要求11所述的方法,其特征在于,所述同步?jīng)_突解決組件 224通過參考一沖突解決策略選擇所述版本中要傳播到所述第二節(jié)點(diǎn)的一個(gè)版 本,來解決所述至少一個(gè)沖突,該沖突解決策略偏愛源自具有最高優(yōu)先級(jí)的節(jié) 點(diǎn)的版本。
16. 如權(quán)利耍求11所述的方法,其特征在于,所述同步?jīng)_突解決組件 224通過參考一沖突解決策略選擇所述版本中要傳播到所述第二節(jié)點(diǎn)的一個(gè)版 本,來解決所述至少一個(gè)沖突,該沖突解決策略偏愛源自對(duì)所述至少一個(gè)對(duì)象 作出最高百分比的變更的節(jié)點(diǎn)的版本。
17. 如權(quán)利要求11所述的方法,其特征在于,所述同步?jīng)_突解決組件 224通過參考一仲裁者選擇所述版本中要傳播到所述第二節(jié)點(diǎn)的一個(gè)版本,來 解決所述至少一個(gè)沖突,該仲裁者代表所述第一和第二節(jié)點(diǎn)來確定要傳播的版 本。
18. 如權(quán)利要求11所述的方法,其特征在于,所述同步?jīng)_突解決組件 224通過參考一沖突解決策略選擇所述版本中要傳播到所述第二節(jié)點(diǎn)的一個(gè)版 本,來解決所述至少一個(gè)沖突,該沖突解決策略偏愛源自參與較多數(shù)量的與所 述多個(gè)節(jié)點(diǎn)的同歩關(guān)系的節(jié)點(diǎn)的版本。
19. 如權(quán)利要求11所述的方法,其特征在于,所述同歩沖突解決組件224通過參考一沖突解決策略選擇所述版本中要傳播到所述第二節(jié)點(diǎn)的一個(gè)版本,來解決所述至少一個(gè)沖突,該沖突解決策略偏愛源自跨所述多個(gè)節(jié)點(diǎn)的所 有同步關(guān)系所測(cè)得的最接近所有其他節(jié)點(diǎn)的節(jié)點(diǎn)的版本。
20. 如權(quán)利要求11所述的方法,其特征在于,所述同步?jīng)_突解決組件 224通過參考一沖突解決策略選擇所述版本中要傳播到所述第二節(jié)點(diǎn)的一個(gè)版 本,來解決所述至少一個(gè)沖突,該沖突解決策略最小化跨全部所述多個(gè)節(jié)點(diǎn)的 網(wǎng)絡(luò)通信量的度量。
21. —種可經(jīng)由一個(gè)或多個(gè)網(wǎng)絡(luò)來連接的多個(gè)節(jié)點(diǎn)中的第一節(jié)點(diǎn),所述 第一節(jié)點(diǎn)在所述第一節(jié)點(diǎn)和所述多個(gè)節(jié)點(diǎn)中的任一第二節(jié)點(diǎn)之間同步對(duì)象集,所述第一節(jié)點(diǎn)包括同步組件220,其通過將所述第二節(jié)點(diǎn)的關(guān)于所述對(duì)象集的知識(shí)與所述第一節(jié)點(diǎn)的關(guān)于所述對(duì)象集的知識(shí)進(jìn)行比較,來在所述第一節(jié)點(diǎn)和所述多個(gè)節(jié)點(diǎn)中的任一第二節(jié)點(diǎn)之間同步所述對(duì)象集,其中所述同歩組件220確定對(duì)于由所述第一和任-第二節(jié)點(diǎn)維護(hù)的對(duì)象集中的至少一個(gè)對(duì)象的各自版本是否存在 至少一個(gè)沖突;以及沖突日志存儲(chǔ)250,其存儲(chǔ)表示所述至少一個(gè)沖突的信息以使得所述第一 節(jié)點(diǎn)能夠?qū)⒔鉀Q所述第一和任一第二節(jié)點(diǎn)之間的至少一個(gè)沖突推遲到稍后時(shí) 間。
全文摘要
提供了供松耦合設(shè)備根據(jù)各種不同的同步情形來實(shí)現(xiàn)的各種靈活的沖突解決策略。選擇諸如“最頻繁更新者”、“優(yōu)先級(jí)”、“百分比變更”、“仲裁者死鎖解決”等沖突解決策略使得設(shè)備能夠選擇如何以及何時(shí)解決這些同步?jīng)_突。另外,參考沖突日志,用戶或同步應(yīng)用程序可將同步狀態(tài)回退到可能已經(jīng)出現(xiàn)沖突之前的時(shí)間,從而使得該用戶或應(yīng)用程序可撤消對(duì)沖突的解決和/或該用戶或應(yīng)用程序可從該時(shí)間向前應(yīng)用替換沖突解決策略。
文檔編號(hào)H04L12/54GK101627581SQ200880004358
公開日2010年1月13日 申請(qǐng)日期2008年2月7日 優(yōu)先權(quán)日2007年2月9日
發(fā)明者J-T·普芬寧, L·諾維克, M·R·克拉克, M·S·貝克曼, M·克斯拉維, S·M·凱利 申請(qǐng)人:微軟公司