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