用于分布式设备数据的多主同步的冲突解决 【技术领域】
本发明涉及用于分布式设备之间的数据的多主同步的冲突解决。
背景
存在具有彼此共享数据的设备和对象的各种分布式数据系统。例如,音乐共享系统可在PC、蜂窝电话、游戏控制台和MP3播放器之间同步音乐。例如,电子邮件数据可在工作服务器、客户PC和便携式电子邮件设备之间同步。当今,就这些设备只要发生变更就同步以维护公共信息而言,同步根据设备间的静态设置来进行。然而,当这些设备是松耦合的以使其可能断开彼此之间的通信时,例如,当蜂窝电话在隧道中时,或者当将要同步的设备数量是动态的时候,期望具有供设备在其彼此重新连接或在其加入网络时确定每一个其他设备需要什么变更的方式。此外,存在诸如在两个不同的设备独立地对同一数据的各个副本作出变更时确定对于向另一设备传播或复制什么数据可能存在什么冲突或歧义的需求。
当今,如图1所示,存在其中主节点100以专用方式来与客户机节点110同步的各种示例,诸如在电子邮件服务器与专用电子邮件客户机同步时等。由于两个设备之间的专用同步,用于在这两个设备之间同步的必要知识102的状态可由主节点100来跟踪。这一知识102也可任选地由客户机节点100来跟踪。然而,当同步设备的数量增加时以及当主节点100和客户机节点110之间的连接有时可能变为断开时,不仅跟踪跨所有这些设备的必要知识变成难题,而且从同步观点来看的冲突数量也增长。这是因为不同设备演化独立同步的数据集的机会在设备数量增长时以及在它们可能变得容易断开时增加。
当前解决方案的问题在于这些设备仅将其同步语义基于特定节点(例如,电子邮件服务器)而非任意节点的时钟或逻辑水印。这些系统在单个连接节点或主节点的情况下能够运行良好。然而,在节点连接的拓扑结构或模式不可预见地改变时,这些系统就成问题。此外,随着一组复杂设备可能希望在松耦合网络中同步数据的情况和情形增加,存在对这些设备处理冲突的方式的灵活性及对该方式的控制的甚至更大的需求。
对于多主同步情形中的冲突增长,对节点无关同步知识和根据各种解决措施的冲突处理的需求在拓扑结构中的计算机可改变其彼此连接的方式时或者在计算机的数量增长时出现。例如,在媒体播放器的情况下,可能期望在多个计算机和多个网站之间同步。在大多数情况下,大多数应用程序只能在几个公知的端点(例如,家庭PC和媒体播放器)之间同步数据,在这种情况下强制实施静态冲突解决措施,例如,“家庭PC始终赢得冲突”等。然而,随着设备社区对于媒体播放器应用程序的用户随着时间而演化,对针对供设备利用的音乐库的数据同步灵活性以及设备在以各种次序彼此同步时处理冲突的灵活性的需求日益增长。
因此,希望跨多个松耦合设备共享公共信息的任何分布式数据系统都需要表示它们知道对公共信息的什么变更以及它们不知道什么变更的高效方式,并且需要在它们彼此冲突时解决对于这些变更的冲突的方式。为对该问题作出概念上的说明,想象各自去看即将上映的电影的非公开预映的四个朋友。不幸的是,电影演播室已决定限制该电影的分发并且每一个朋友都被限于观看仅三十分钟的电影片段。当这些朋友一起回家时,他们开了个会议,其中每一个人都从头到尾地描述他们所观看的片段以试图共同将尽可能多地电影拼凑在一起。
然而,如果第四个朋友意外地无法参加该会议,则接着与该第四朋友交谈的前三个朋友中的一个(例如,第二个朋友)将试图将由前三个朋友收集的集体电影知识添加到第四个朋友所收集的电影知识。然而,此时,只有第二和第四个朋友了解这四个朋友之间的电影知识的完整集合。然后,当第一个朋友或第三个朋友中的任一个遇到第二或第四个朋友中的任一个时,该第一或第三个朋友将也获得该集体电影知识。同步最后在这四个朋友中的每一个都了解由这四个朋友拼凑的集体电影知识时完成。
然而,为了示出冲突的可能性,假设第一个朋友在遇到或者第二个或者第四个朋友之前与第五个朋友交谈,该第五个朋友给出了不同于第二或第四个朋友稍后告诉第一个朋友的对某些遗漏的电影片段的叙述。该第一个朋友将不知道将哪一个电影叙述当作所发生的真实版本。通常,该第一个朋友将执行对哪一个是最佳叙述的某种试探性猜测。该第一个朋友可能在考虑采纳哪一个故事、丢弃哪一个故事时将关系长度、对一个或另一个朋友的信任历史等因素考虑在内。在其他情况下,第一个朋友可能在短时间内记得这两个叙述并且在解决该冲突之前等待附加信息。以类似方式,将由此也期望允许设备彼此同步并当在松耦合系统中同步数据的分布式设备之间出现冲突时解决冲突。
在以上示例中,电影类似于将跨设备共享的公共信息并且朋友类似于松耦合设备。就此,当朋友/设备一起回来时,需要用于表示连接的个人/设备中的每一个知道和不知道什么并且解决这些知识之间的冲突,即,用于确定“真”知识的机制,从而使得能够以个人/设备的集体知识所准许的最大程度来将公共信息拼凑在一起。设备节点的松连接系统因此需要描述其具有的数据、它们在哪里接收到、以及它们需要来自对话中所涉及的另一节点的什么数据、以及如何解决设备之间的冲突的高效方式。
简而言之,冲突是双向多主同步拓扑结构所引发的不可避免的问题。用户或应用程序在不同的端点上自由地对同一项目作出并发修改,从而使得同步解决方案无法确定要正确地接受哪一个/哪些变更。如上所述,现有冲突解决策略允许通过应用诸如“最后的写入者获胜”等某一预定策略来自动解决冲突。然而,在不同的终端类型增长的情况下,单个预定策略不足以解决已经为相应数量的松耦合设备间的不断演化的设备同步情形标识的大量冲突解决策略。就此,当今未充分解决的难题是使得同步应用程序足够灵活以实现不同的冲突策略同时使其足够稳健以便以推迟或自动化的方式存储、应用和回退这些冲突的平衡动作。
当前解决方案对于灵活性和/或稳健性而言有所不足。首先,许多解决方案只提供诸如最后的写入者获胜等少量的流行的冲突解决策略。该灵活性的缺乏将在不同的端点变得流行并且用户需要同步非传统类型的数据时很快变得不可接受。另外,许多应用程序不支持应用冲突解决策略的能力或不维护用于以自动化或UI驱动的方式来回退/恢复与冲突相关联的变更的足够的冲突元数据。
就此,当不存在用于了解设备集合的集体知识,确定这些知识中的冲突并根据对于变成连接的设备的灵活策略来解决这些冲突的机制时,在试图在松耦合设备之间同步时引起混乱。关于松耦合设备之间的同步的现有技术中的这些和其他缺陷的附加细节在描述以下本发明的各实施例之后将变得显而易见。
概述
考虑到上述内容,本发明提供用于双向多主同步拓扑结构的冲突解决。在一组同步设备中的各设备独立地演化被同步的信息的情况下,各版本间的同步冲突可不避免地出现。本发明提供了供一组设备在当同步时在同步节点之间交换知识时从一组冲突解决策略中选择如何解决冲突的高效且灵活的方式。示例性冲突解决策略包括(A)“最频繁更新者”、(B)“优先级”、(C)“%变更”、(D)“死锁解决”、(E)“最高程度”以及(F)“最高中心接近度(Highest CentralityCloseness)”。
还可将冲突记录在冲突日志中以将冲突解决推迟到稍后。另外,用户或应用程序可将同步状态回退至可能已经出现冲突之前的时间,从而使得该用户或应用程序可撤消该冲突和/或该用户或应用程序可应用一组替换冲突解决策略。
此处提供了简化概述以帮助能够对以下更详细的描述和附图中的示例性、非限制性实施例的各方面有基本或大体的理解。然而,本概述并不旨在作为详尽的或穷尽的概观。相反,本概述的唯一目的是以简化的形式来介绍与本发明的某些示例性非限制性实施例相关的一些概念,作为以下本发明的各实施例的更为详细的描述的序言。
附图简述
用于检测和解决对于在多主环境中共享公共信息的多个节点的冲突的系统和方法将参考各附图来进一步描述,在附图中:
图1示出了专用同步系统,其提供该系统的两个明确定义的端点之间的同步和冲突解决;
图2A示出了根据本发明的松连接节点网络的两个节点之间的示例性、非限制性知识交换和冲突检测;
图2B是根据本发明的用于执行同步冲突检测和解决的设备的示例性、非限制性实现的框图;
图3示出了根据本发明的在松连接节点网络的四个节点之间同步的对象的示例性、非限制性知识交换和独立演化;
图4A、4B、4C和4D是示出根据本发明的一组设备之间的示例性同步序列的框图,其示出了示例性、非限制性同步冲突生成、检测和解决;
图5A、5B和5C以及5D是示出根据本发明的一组设备之间的另一同步序列的框图,其示出了示例性、非限制性同步冲突生成、检测和解决;
图6A、6B、6C、6D、6E和6F是示出根据本发明的可由设备实现的各种同步冲突解决策略的示例性、非限制性框图;
图7是示出根据本发明的可由设备实现的基于通信量的同步冲突解决策略的示例性、非限制性框图;
图8是示出根据本发明的各实施例的一组设备之间的同步的发起以及对任何冲突的相应检测和解决的示例性、非限制性流程图;
图9是表示其中可实现本发明的示例性、非限制性网络化环境的框图;以及
图10是表示其中可实现本发明的示例性、非限制性计算系统或操作环境的框图。
详细描述
概览
如在背景中讨论的,不存在对于未保持彼此专用接触的一组松耦合设备高效地表示同步知识并且还根据一组灵活的情况来解决冲突的方式。在可假定专用接触的情况下,任何变更可被立即或周期性地推送到应接收它们的设备,并且冲突可根据静态策略来解决。然而,在无法假定专用接触的情况下,在设备出现和消失的情况下,期望高效地表示从同步观点来看这些设备知道和不知道什么,并在设备之间出现冲突时解决冲突。
因此,本发明启用用于数据同步系统中的分布式设备的高效且灵活的冲突解决。提供了一种高效的机制以确保只要设备可访问松耦合网络中的其他同步设备,该设备就将与该其他设备交换知识以确定该设备应取得并传达给该其他设备哪些变更,以及要根据一组灵活的冲突解决策略作为同步操作的一部分来解决什么冲突。
以此方式,虽然第一设备和第三设备可能永远不会直接通信,但如果每一个设备都能够连接到第二设备并解决关于该第二设备的冲突,则可跨所有这三个设备实现知识的集体无冲突共享,从而以解决所遇到的所有冲突的方式确定设备中的每一个应从其他设备中的每一个接收什么变更。考虑到共享诸如音乐、电子邮件、图片、视频等数据的设备的增长,有利的是,本发明的知识交换和冲突解决技术可同时缩放至任何数量的设备以及任何数量的独立知识库(即,不同的公共信息集),即,任一组不断演化的设备希望共享数据的任何地方。在分布式系统中表示这些知识并解决冲突的各实施例将在以下更详细地描述。
用于知识交换的冲突解决
在以下描述的各示例性、非限制性实施例中,知识在数据同步系统中高效地表示,并且在设备之间的知识从同步观点来看是冲突的情况下,本发明提供了用于解决对于不同的同步上下文的同步设备之间的冲突的各种方法。可用本发明实现的非限制性益处包括连接的设备之间的高效知识交换,该交换从第二节点只发送第一节点所需的最少数据。本发明包括高效且正确地识别数据状态上的不合,即,第一节点和第二节点之间的冲突的能力、同步任意数量的节点的能力以及经由任何其他节点来同步任何节点的能力,即,在对等、多主同步环境中工作的能力。
图2A在高层面处示出了根据本发明的两个设备200和210之间的知识交换以及并发或后续冲突检测和解决。可对将要在两个设备200和210之间共享的某些信息作出任何数量的变更。然而,在这两个设备变成连接的任何时候,它们可通过交换它们的知识202和212来变得知道用于重构彼此知道和不知道的内容的至少最少量的信息以便于设备之间的变更。注意,在涉及多于两个设备的情况下,知识202和212可能是将要共享的更大信息库中的不完整的知识,但随着在多个设备之间共享的知识越来越多,集体知识继续由设备在其随着时间连接到其他设备时积累。解决冲突并以类似的方式传播冲突解决。
有利的是,在知识交换期间,发生冲突检测过程204和/或214以处理关于跨不同设备的数据演化的冲突。一旦检测到冲突,设备200和204就可立即解决冲突,从而确保设备200和204维护无论源自设备200还是设备204的相同数据。或者,可将冲突记录在冲突日志中以供稍后解决。以任一种方式,对于检测到的任何冲突的冲突解决可经由将在以下更详细描述的一组灵活的冲突策略中的任一个或多个来处理。
图2B是根据本发明的用于执行知识交换和冲突检测和/或解决的设备200b的示例性、非限制性实现的框图。如图所示,设备200b包括同步模块220,其执行根据本发明的用于与另一设备同步对象集230的知识交换技术。同步模块220可包括同步通信模块,其用于一般根据知识交换来发送和接收数据。
同步模块220可包括同步发起模块222a,其可在例如经由授权模块240而被授权并连接到第二设备的情况下发起与该第二设备的同步。同步模块还可包括I/O模块222b,其通过向第二设备(未示出)发送关于对象集230的知识202b来响应同步发起并且用于接收该第二设备的返回知识212b以及源自该第二设备的对该对象集230作出的变更。进而,同步分析模块224操作以应用将要对该对象集230作出的变更并且将来自第二设备的知识212b与第一设备的知识202b进行比较以确定要发送给该第二设备的变更以完成设备之间的同步。
如图所示,同步模块220的同步分析模块224可包括冲突检测和分析模块226,其用于根据为该同步上下文定义的各种冲突解决策略中的任一个或多个来处理冲突。冲突检测和分析模块226可根据由设备管理员来定义的,或由同步应用程序来定义的冲突设置228来自动行动以满意地执行针对该同步上下文的冲突解决。
或者,模块226可用于在同步时检测冲突并且然后将与冲突相关联的元数据存储在冲突日志250中。该冲突然后可在稍后,例如,周期性地或以批量格式,或根据关于如何及何时解决冲突的应用程序或用户输入来解决。例如,在一非限制性实施例中,可向用户呈现用户界面(UI,未示出),该用户界面向用户呈现冲突以使得该用户可选择如何解决由同步引发的冲突。
有利的是,本发明可用于执行对全都对维护对象集的最新版本感兴趣的一组设备执行同步,但也允许这些设备与该对象集中的其他对象连接或断开连接。只要一设备经由一个或多个网络来与该组设备中的其他设备重新连接,该设备就可重新获得与用其集体知识表示的其他设备一样新的集体知识,并且根据此处所描述的技术来自动解决或记录冲突。以此方式,即使松连接设备也可与一组设备连接或断开连接,并且然后通过开始与拥有一组最新集体知识的任一组设备联系来重新获悉遗漏的所有知识,同时解决或记录所遇到的任何冲突。
图3示出本发明的知识交换和冲突解决可被推广或缩放到任何数量的设备。如图所示,四个设备300、310、320和330被示为具有知识表示302、312、322和332,这些知识表示分别指示每一个设备所知道和不知道的关于将要跨设备共享的一组公共信息的内容。有利的是,即使在网络中的连接变成断开的情况下,所有这些设备300、310、320和330仍然能够获得一组完整的知识,只要对于其他设备直接或间接存在至少一个连接。例如,即使设备330和设备300之间的连接以及设备330和设备310之间的连接变为切断,设备330的知识332仍然可经由与设备320的知识交换,然后经由设备320和310之间的知识交换,并且最后经由设备310和300之间的知识交换来到达设备300。
类似地,根据本发明,如果在知识332和知识302之间存在冲突,则通过从设备330到设备320、到设备310、到设备300的相同的知识传播,该冲突将在完成同步时在所有设备之间解决。例如,假设设备300、310、320和330全都在同步对象KN。在只有一个设备对对象KN作出变更并且然后作为同步操作的一部分来将该变更传播到其余设备的情况下,不存在问题。然而,因为允许设备自主行动且独立地演化数据,甚至正在被同步的数据,所以设备330可能变更对象KN以形成经更新的对象KN1,并且设备310可能变更KN以形成不同于KN1的经更新的对象KN2。当在所有设备300、310、320和330之间同步对象KN时,引起关于向所有设备传播KN的哪个版本:KN1还是KN2?的冲突。本发明提供了用于处理这些情况的一组灵活的冲突解决策略。
在更多的设备共享关于将要共享的公共信息的知识时,所有设备都因为本发明的知识交换对该集体知识来自哪一个设备不可知的而受益。与发明背景中所描述的其中三个朋友交换电影知识并且然后这三个朋友中的任一个与第四个朋友碰面以拼凑整部电影的情况非常类似,本发明的设备各自独立操作以试图从其连接到的其他设备的任一个获得尽可能多的关于将要在这些设备之间共享的信息的知识。此外,与朋友交换电影知识非常类似,如果一个朋友表现为具有不正确的或其他形式的与集体知识不一致的信息,则这些朋友将以令所有人都满意的方式解决这一不一致性。例如,如果三个朋友认为事件以第一方式发生,并且只有一个朋友感觉该事件不同地发生,则可能的结果是面对更多证据的优势,这三个朋友将不会采纳对电影发生方式的唯一叙述。
进而,与背景中所描述的其中第二个朋友首先与第四个朋友会面并且其中结果只有第二和第四个朋友共享所有四个朋友的集体知识的情况非常类似,第一和第三个朋友仍然受益,因为虽然不知道该第一个朋友接着将碰到第二个朋友还是第四个朋友,但该第一个朋友将从第二和第四个朋友中的任一个获悉集体知识。第三个朋友亦是如此。类似地,本发明的交换公共信息的连接的设备从由任何其他连接的设备积累的任何其他知识中受益,因为知识是由交换设备中的每一个先前已与其联系的所有其他设备来收集的。以相同的方式,本发明的连接的设备由于向其余设备传播了解决冲突的数据而从已由其他设备执行的任何冲突解决中受益。
在示例性、非限制性细节中,更详细地描述供两个节点参与对话并在对话结束时具有关于所关心的数据集的等价知识的方法。如以上结合图2A、2B和3所示出的,本发明可通过为进入对等网络的每一个新设备创建知识交换和冲突解决能力来缩放超过两个节点。
图4A到4D进一步示出了对因为松耦合设备周期性地彼此解耦而对彼此同步的松耦合设备进行冲突解决的需求。如图4A所示,在时刻T=0,存在四个设备400、410、420和430,其分别具有知识402、412、422和432,这些设备中的每一个都具有对象KN的相同版本的知识。然而,设备400和410与设备420和430之间的所有连接都变为切断,例如,设备430是膝上型计算机而设备420是蜂窝电话,并且这两个设备的拥有者临时去到地下,从而中断到设备400和410的连接。
图4B示出在任何时刻,例如,时刻T=1>0,设备420可将知识422的对象KN从KN改为KN’。类似地,在某一时刻T=2>0,设备400也可对知识402的对象KN作出变更,将该对象从KN改为KN”。在这种情况下,设备420和400在它们变为重新连接时呈现冲突,即,传播哪一个版本,KN’还是KN”?图4C示出可在冲突解决之前(例如,在时刻T=3>2且>1)可进行某一有限的同步。例如,因为设备430连接到设备420,所以对象KN’经由同步来传播到设备430的知识432。类似地,因为设备400连接到设备410,所以对象KN”经由同步来传播到设备400的知识402。
如图4D所示,在时刻T=4,一旦设备400或410中的任一个变为再次连接到设备420或430中的任一个,冲突将自我呈现。在同步期间将不清楚要传播的正确知识是什么:KN’还是KN”。因此,必须提供冲突解决机制以解决该冲突。如上所述,一旦检测到冲突,就可立即根据针对该同步上下文所采用的冲突解决策略来解决冲突,或者可记录该冲突以供稍后解决(例如,批量冲突解决、手动解决、为了等待用于帮助决定的附加信息的延迟解决等)。
尽管为了避免疑惑,图5A到5D示出了多主同步情况的两个节点之间的更具体的序列,但本发明适用于可以按松耦合方式同步的任何数量的设备。如图5所示,具有任何数量的节点的对等网络中的节点500想要与节点510交换数据。在所示示例中,设备或节点的示例性知识通过用字母标识符来标记将要在设备之间共享的每一个对象,并且然后尾号表示该对象的最新版本来表示。在时刻t=1,节点500和节点510分别具有同步的知识KN500和KN510,这两个知识由包括A的第5个版本、B的第4个版本、C的第7个版本和D的第1个版本的对象组成。在交换其知识后,节点500和510处于同步无冲突状态。
然而,在t=2,节点500和510独立地演化对象A。为了表示简便起见,节点500创建A的第6个版本,而节点510创建了A的第7个版本(或相反)。在时刻t=3,由于后续同步过程,不清楚是应将第6个还是第7个版本作为节点500和节点510之间的公共对象来保存。由此,需要冲突解决机制。
另外,对于任何知识交换,存在节点500的知识KN500到节点510的传送,并且还存在节点510的知识KN510到节点500的传送。然而,如图5D所示,出于冲突检测的目的,可在仅一个方向上的一次知识传送后检测冲突。因此,在本发明的一个实施例中,不必在发起冲突检测和解决之前完成整个知识交换。如图5D所示,如果节点500将知识KN500发送到节点510,则节点510可检测到在源自节点500的对象A5和源自节点510上的对象A6之间存在冲突。如果然后节点510解决了该冲突,则这可使节点500免予执行相同的冲突检测,因为节点510可向节点500指示对象A的正确版本是什么。或者,可能期望每一个设备不同地执行冲突解决,在这种情况下节点500和节点510两者都可执行独立的冲突检测和解决。
用于知识交换的冲突解决
可结合分布式多主同步环境中的各节点之间的知识交换来实现的示例性冲突解决策略在图6A到6E的流程图中示出。在图6A到6E中的每一张附图中,枚举了反映不同的同步上下文的不同策略。当不同的设备是松耦合的,并且在这些设备之间同步不同类型的数据的时候,可认为各种选择对于给定上下文可能是有意义的以便解决冲突。
例如,如图6A所示,设备600和设备610最初分别将KN表示为知识602和612的一部分。然后,如演化流程所示,设备600上的对象KN的副本发生变更以将该对象KN演化为KN’,然后再次演化为KN”并且再次演化为KN’”。同时,设备610将对象KN演化为Kn。由此,当设备600再次与610同步时,设备600上的版本KN’”和设备610上的版本Kn之间存在冲突。按照根据本发明的可实现以解决冲突的一个策略,选择自从上一次同步时间以来最频繁的更新者“赢得”该冲突。在这种情况下,节点600相比于在设备610处发生以达到Kn的仅一次变更,更新了对象KN三次以达到KN’”。因此,在自从先前同步以来的最多更新用于解决针对给定上下文的冲突的情况下,这是一个易于实现的策略。例如,在正经由同步处理文档协作,并且一个用户已经在许多不同的时刻对一文档作出了许多变更,而另一协作者对该文档仅作出了一个变更的情况下,使由最频繁的更新者作出的变更来解决该冲突可能是有意义的。
图6B示出了根据本发明的解决冲突的另一种方式。考虑图6A的相同情况,其中设备600在三次单独变更之后将对象KN演化为KN’”并且其中设备610将该数据从对象KN演化为Kn,应用“较高优先级获胜”的策略。在这种情况下,设备610被分配优先级1而设备600被分配优先级2。因为优先级1高于优先级2,所以设备610所作出的变更解决该冲突。例如,这在数据项的不可侵犯性(sanctity)从设备拥有者的观点来看是命令性的情况下可能是有用的,在这种情况下该设备拥有者不想使第三方变更能够胜过该设备拥有者的变更。该设备拥有者将被分配最高优先级而第三方设备将被分配较低的优先级。为了避免疑惑,可想象可能也使得向一组分布式设备中的不同设备分配不同的优先级的多种其他情况。
图6C示出了根据本发明的解决冲突的另一种方式。在这种情况下,设备600将对象KN演化为版本KFZ而设备610将对象KN演化为版本Kn。在该实施例中,本发明确定各个对象所发生的变更的量或百分比以解决冲突。然后应用偏爱量最大的变更的策略。例如,从KN到KFZ的变更是比从KN到Kn的变更更大的变更。因此,设备600的变更解决该冲突。这一策略在没有其他策略支配冲突解决的情况下对于解决冲突是有用的。例如,在一文档在一个设备上从其原始形式变更了90%,而在另一设备上只有1%的情况下,偏爱更大的变更可能是有意义的,因为它们更难以在冲突解决中发生错误的情况下恢复。同样,可应用将根据最高百分比变更来指示同步冲突解决的其他上下文。
图6D示出了本发明的冲突解决的又一实施例,其中仲裁者620解决KFZ和Kn之间的冲突。仲裁者620可作为用于解决冲突的第三方组件来提供,或者它可被结合到设备600和/或设备610中。仲裁者620可根据任何策略和参数来判定,并且可基于当前条件或同步状态来动态地判定。仲裁者620对于其中需要灵活性的同步上下文可能是有用的。
可根据本发明来应用的用于冲突解决的又一策略在图6E中示出。在这种情况下,存在四个设备600、610、630和640,它们具有知识602、612、632和642。在这种情况下,根据最高亲和性(affinity)同步节点(即,连接到最多数量的其他节点的节点)来解决冲突。这一策略相比于与较多数量的节点同步的节点不偏爱与仅仅一个或几个不同节点同步的端点。例如,如图6E所示,两个节点600和610独立演化对象KN的副本,将其分别同步为KFZ和Kn。因为设备610与三个设备600、630和640同步而设备600只与一个其他设备610同步,所以根据该策略,关于对象KN的冲突以有利于设备610的方式来解决。这一最高亲和性度量可用于衡量与端点相关联的重要性。
根据本发明的用于在知识交换期间解决冲突的再一示例性、非限制性实施例在图6F中参考节点N1、N2、N3、N4、N5、N6、N7、N8、N9和N10的同步网络来示出。为了根据该情形来解决冲突,应用最高中心接近度的原则,其中测量端点接近跨一组设备的所有同步关系的所有其他端点的程度。最高中心接近度标识具有较大信息网络的端点并且可通过取端点和所有其他端点的最短路径的总和的倒数来计算。总体上,设备越接近所有其他端点,则在解决冲突时就向该设备应用更大的权重或优先级。例如,假设节点N3和节点N9需要冲突解决。在这种情况下,N3仅直接连接到两个其他节点N2和N4,而节点N9连接到三个节点N4、N5和N10。按照结合图6E描述的最高亲和性原则,节点N9将被选为冲突获胜者。然而,结果在应用最高中心接近度时改变,因为可在甚至不执行计算的情况下观察到节点N3比节点N9更接近所有其他节点。该中心接近度的示例性、非限制性测量可如下执行。
对于节点N3,到节点N1的距离是2个节点远,到节点N2的距离是1个节点远,到节点N4的距离是1个节点远,到节点N5的距离是2个节点远,到节点N6的距离是2个节点远,到节点N7的距离是2个节点远,到节点N8的距离是2个节点远,到节点N9的距离是2个节点远,并且到节点N10的距离是3个节点远。将这些距离加在一起产生到所有其他节点的18个节点的总距离。对于节点N9,执行相同的计算,到节点N1的距离是4个节点远,到节点N2的距离是3个节点远,到节点N3的距离是2个节点远,到节点N4的距离是1个节点远,到节点N5的距离是1个节点远,到节点N6的距离是4个节点远,到节点N7的距离是2个节点远,到节点N8的距离是2个节点远,并且到节点N10的距离是1个节点远。将这些距离加在一起产生20个节点的总距离。因此,N3胜过N9赢得该冲突。也可应用对最高中心接近度的其他度量或代理。例如,为了节省测量时间,可只考虑处于网络边缘的节点,这在图6F中包括N1、N6、N7、N8和N10,即,只连接到一个其他节点的设备。
图7示出了根据基于通信量的策略的处理冲突的再一种方式,即,以最小化网络上的通信量的方式来解决冲突。例如,在图7的示例中,存在五个设备700、710、720、730和740,它们分别具有知识702、712、722、732和742,这五个设备根据所示拓扑结构来同步。在该示例中,设备700将对象KN演化为KFZ并且设备740和710独立地将对象KN演化为Kn。在该实施例中,执行基于通信量的分析,由此确定是选择KFZ还是选择Kn解决该冲突且对网络通信量影响最小。在该示例中,以有利于版本Kn的方式解决该冲突牵涉较少的同步通信量,因为变更只需被传播到三个不同的设备700、720和730而采用版本KFZ需要传播到所有其他设备。
图8是示出根据本发明的一组设备之间的同步发起以及相应的冲突检测和解决的示例性、非限制性流程图。在800,在一组同步节点中的节点A和B之间发起同步。在810,比较两个节点A和B的知识。在820,检测在同步期间发现的任何冲突。在830,可任选地将冲突存储在冲突日志中以供稍后解决和/或将变更和冲突解决回退到较早时间。如果未记录以供稍后解决,则在830,根据由同步设备(例如,用户或应用程序)选择的一个或多个冲突解决策略来解决冲突。在840,可任选地将冲突解决回退到较早的时间点。在850,可向前应用替换冲突解决策略。
由此,根据本发明,可单独或组合应用各种冲突解决策略以确定在发生冲突的情况下哪一个节点胜过另一个节点。如果独立版本化(versioning)是可以的或者是所期望的,则没有冲突解决是另一选择。
总而言之,新端点和不止电子邮件的被同步的数据类型的增长将需要对于不断演化的同步情形足够灵活的新冲突解决策略。此处所标识的某些冲突解决策略包括::(A)“最频繁更新者”,其中自从上一次同步以来执行最多更新的端点获胜;(B)“优先级”,其中端点被分配优先级并且这些优先级用于确定获胜者;(C)“%变更”,其中具有最高百分比的变更的副本获胜;(D)“死锁解决”,其中选择仲裁者来确定无法解决的冲突的获胜者;(E)“最高程度”,其中参与最多数量的同步关系的端点获胜;以及(F)“最高中心接近度”,其中测量端点接近跨所有同步关系的所有其他端点的程度。
以上所提到的解决策略中的某一些是非传统的,并且假设使用本发明的同步能力的应用程序遵循一组模式,能够在不损失利用本发明所提供的冲突解决特征的能力的情况下应用这些策略中的任一个。具体而言,允许应用程序推迟冲突解决或使用所提供的策略来自动解决冲突。在推迟的情况下,将给予客户机冲突信息以供存储,该信息在一个示例性、非限制性实施例中包括将在将要应用变更的情况下获悉的项目版本、数据和知识向量。然后,客户机能够在稍后枚举这些冲突。因此,有利的是,本发明启用对与冲突存储在一起的每一个项目知识的所存储的冲突的枚举以及应用自定义冲突解决策略的能力。
本发明的用于解决冲突的系统和方法也可应用于在同一提供者上解决存储器中数据的上下文。在这一上下文中,存储器中数据可能不由物理存储来备份,例如,该存储器中数据可在CPU上的图形解算机中用于同步节点。本发明还可在景物图的上下文中应用,尤其在这些景物图变得更多地分布在多核体系结构上并且直接向诸如体积纹理等存储器中数据结构写入计算时。
示例性网络化和分布式环境
本领域普通技术人员可以理解,本发明可以结合可作为计算机网络的一部分来部署的任何计算机或其它客户机或服务器设备来实现,或可在连接至任何种类的数据存储的分布式计算环境中实现。在这一点上,本发明涉及任何计算机系统或环境,其具有任意数目的存储器或存储单元,以及发生在任意数目的存储单元或卷上的任意数目的应用程序和进程,它们可结合根据本发明的检测和解决同步冲突来使用。本发明可应用于具有部署在具有远程或本地存储的网络环境或分布式计算环境中的服务器计算机和客户计算机的环境。本发明也可应用于具有用于结合远程或本地服务和进程来生成、接收和发送信息的编程语言功能、解释和执行能力的独立计算设备。
分布式计算通过计算设备和系统之间的交换提供了计算机资源和服务的共享。这些资源和服务包括信息的交换、对于诸如文件等对象的高速缓存存储和盘存储。分布式计算利用网络连接,从而允许客户机利用它们的集体力量来使整个企业受益。在这一点上,各种设备可具有可包含根据本发明的用于检测和解决同步冲突的系统和方法的应用程序、对象或资源。
图9提供了示例性的网络化或分布式计算环境的示意图。该分布式计算环境包括计算对象910a、910b等,以及计算对象或设备920a、920b、920c、920d、920e等。这些对象可包括程序、方法、数据存储、可编程逻辑等等。这些对象可包括诸如PDA、音频/视频设备、MP3播放器、个人计算机等相同或不同设备的各部分。每一对象可通过通信网络940与另一对象通信。该网络本身可以包括向图9的系统提供服务的其它计算对象和计算设备,且其本身可以表示多个互连的网络。根据本发明的一方面,每一对象910a、910b等,或920a、920b、920c、920d、920e等可包含可利用适用于根据本发明的用于检测和解决同步冲突的系统和方法的API、或其它对象、软件、固件和/或硬件的应用程序。
还可以理解,诸如920c等对象可以主存在另一计算设备910a、910b等或920a、920b、920c、920d、920e等上。因此,尽管所示的物理环境可以将所连接的设备示为计算机,但是这样的图示仅是示例性的,并且该物理环境可以被替换地描述或描绘成包括诸如PDA、电视机、MP3播放器等的各种数字设备,它们中的任何一个可采用各种有线和无线服务、诸如接口、COM对象等软件对象,等等。
存在支持分布式计算环境的各种系统、组件和网络配置。例如,计算系统可以通过有线或无线系统、本地网络或广泛分布的网络连接在一起。当前,许多网络被耦合至因特网,后者为广泛分布的计算提供了基础结构并包含许多不同的网络。任何基础架构都可用于与根据本发明的对同步冲突的检测和解决有关的示例性通信。
在家庭网络环境中,有至少四个全异的网络传输介质,其每一个可支持一种唯一的协议,这些介质诸如电力线、数据(无线和有线)、语音(如,电话)和娱乐媒体。诸如电灯开关和电器设备等大多数家庭控制设备可使用电力线来连接。数据服务可通过宽带(如,DSL或电缆调制解调器)进入家庭,并可在家庭内使用无线(如,HomeRF或802.11B)或有线(如,家庭PNA、Cat 5、以太网、甚至是电力线)连接来访问。语音话务可通过有线(如,Cat 3)或无线(如,蜂窝电话)进入家庭,并可在家庭中使用Cat 3连线来分布。娱乐媒体或其它图形数据可通过卫星或电缆进入家庭,并通常在家庭中使用同轴电缆来分布。IEEE 1394和DVI也是用于媒体设备群集的数字互联。可作为协议标准浮现或已经浮现的所有这些网络环境和其它环境可被互联来形成可通过诸如因特网等广域网连接到外部世界的网络,诸如内联网。简言之,对数据的存储和传输存在各种不同的源,因此本发明的任何计算设备可按照任何现有方式共享和传输数据,且在本文实施例中描述的方式不旨在是限制性的。
因特网通常指使用传输控制协议/网际协议(TCP/IP)协议套件的网络和网关的集合,该协议在计算机联网领域中是公知的。因特网可被描述为由执行允许用户通过网络交互和共享信息的联网协议的计算机互连的地理上分布的远程计算机网络的系统。由于这类广泛分布信息的共享,诸如因特网等远程网络至今发展成一种开放式系统,开发者可用该开放式系统设计用于执行专用操作或服务的软件应用程序而基本上没有限制。
由此,该网络基础结构允许诸如客户机/服务器、对等或混合体系结构等大量网络拓朴结构。“客户机”是使用与它无关的另一类或组的服务的一个类或组中的成员。就此,在计算时,客户机是进程,即,粗略而言是一组请求由另一程序提供的服务的指令或任务。客户机进程利用所请求的服务,而不必“知道”有关其它程序或服务本身的任何工作细节。在客户机/服务器体系结构中,尤其在网络化系统中,客户机通常是访问由例如服务器等另一计算机提供的共享的网络资源的计算机。在图9的图示中,作为示例,计算机920a、920b、920c、920d、920e等可以被认为是客户机,而计算机910a、910b等可以被认为是服务器,其中服务器910a、910b等维护随后被复制到客户机计算机920a、920b、920c、920d、920e等的数据,然而取决于环境,任何计算机都可被认为是客户机、服务器或这两者。这些计算设备中的任一个都可处理数据或请求可包含根据本发明的对同步冲突的检测和解决的服务或任务。
服务器通常是可通过诸如因特网或无线网络基础架构等远程网络或本地网络访问的远程计算机系统。客户机进程可以在第一计算机系统中活动,而服务器进程可以在第二计算机系统中活动,它们通过各种通信介质中的任一种彼此通信,从而提供分布式功能并允许多个客户机利用服务器的信息收集能力。根据本发明的用于检测和解决同步冲突的技术所使用的任何软件对象可分布在多个计算设备或对象上。
客户机和服务器利用由协议层提供的功能来彼此通信。例如,超文本传输协议(HTTP)是结合万维网(WWW),即“Web”使用的常见协议。通常,诸如网际协议(IP)地址等计算机网络地址或诸如统一资源定位器(URL)等其它引用可以用于彼此标识服务器或客户计算机。网络地址可以被称为URL地址。可以通过通信介质来提供通信,例如客户机和服务器可以通过TCP/IP连接来彼此耦合以进行大容量通信。
由此,图9示出了其中可采用本发明的、服务器通过网络/总线与客户计算机通信的示例性联网或分布式环境。更详细而言,根据本发明,多个服务器910a、910b等经由通信网络/总线940与多个客户机或远程计算设备920a、920b、920c、9200d、920e等互连,通信网络/总线940可以是LAN、WAN、内联网、GSM网络、因特网等,客户机或远程计算设备如便携式计算机、手持式计算机、瘦客户机、联网设备或其它设备,如VCR、TV、烤箱、灯、加热器等等。因此,构想了本发明可应用于对于其期望与一组联网设备中的一个或多个设备同步数据的任何计算设备。
例如,在其中通信网络/总线940是因特网的网络环境中,服务器910a、910b等可以是客户机920a、920b、920c、920d、920e等通过诸如HTTP等多种已知协议中的任一种与其通信的web服务器。服务器910a、910b等也可担当客户机920a、920b、920c、920d、920e等,这是分布式计算环境的特性。
同样,通信可以是有线或无线的,或者是两者的适当组合。客户机设备920a、920b、920c、920d、920e等可以通过或不通过通信网络/总线14通信,并可具有与其相关联的独立通信。例如,在TV或VCR的情况下,可能存在或不存在其控制的网络化方面。每一客户计算机920a、920b、920c、920d、920e等以及服务器计算机910a、910b等可以具备各种应用程序模块或对象135a、135b、135c等,并具有对各种类型的存储元件或对象的连接或访问,在这些存储元件或对象上可储存文件或数据流,或者可向其下载、传送或迁移文件或数据流的各部分。计算机910a、910b、920a、920b、920c、920d、920e等中的任何一个或多个可负责维护并更新数据库930或其它存储元件,如用于储存根据本发明处理或保存的数据的数据库或存储器930。由此,本发明可以用于具有可访问计算机网络/总线940并与其交互的客户计算机920a、920b、920c、920d、920e等,和可与客户机计算机920a、920b、920c、920d、920e等以及其它类似的设备交互的服务器计算机910a、910b等,以及数据库930的计算机网络环境中。
示例性计算设备
如上所述,本发明适用于其中可能期望跨一组设备同步数据的任何设备。因此,应当理解,构想了结合本发明使用的所有种类的手持式、便携式和其它计算设备和计算对象,即,在设备可同步数据或以其它方式接收、处理或存储同步数据的任何地方。因此,在下面的图10中描述的以下通用远程计算机仅是一个示例,且本发明可用具有网络/总线互操作性和交互的任何客户机来实现。由此,本发明可在其中蕴含了极少或最小客户机资源的联网的托管服务的环境,例如其中客户机设备仅用作到网络/总线的接口(如置于电器中的对象)的联网环境中实现。
尽管并不是必需的,但本发明可以部分地经由操作系统来实现,以供设备或对象的服务开发者使用,和/或被包括在结合本发明的组件操作的应用软件中。软件可以在由诸如客户机工作站、服务器或其它设备等一个或多个计算机执行的诸如程序模块等计算机可执行指令的通用上下文中描述。本领域的技术人员可以理解,本发明可以用其它计算机系统配置和协议来实施。
图10由此示出其中可实现本发明的合适的计算系统环境1000a的一个示例,但如以上清楚地描述的,计算系统环境1000a仅为用于媒体设备的合适的计算环境的一个示例,并非旨在对本发明的使用范围或功能提出任何局限。也不应将计算系统1000a解释为对示例性操作环境1000a中示出的任一组件或其组合具有任何依赖性或需求。
参见图10,用于实现本发明的示例性远程设备包括计算机1010a形式的通用计算设备。计算机1010a的组件可以包括,但不限于,处理单元1020a、系统存储器1030a、和将包括系统存储器在内的各种系统组件耦合至处理单元1020a的系统总线1021a。系统总线1021a可以是若干种类型的总线结构中的任一种,包括存储器总线或存储控制器、外围总线、以及使用各种总线体系结构中的任一种的局部总线。
计算机1010a通常包括各种计算机可读介质。计算机可读介质可以是可由计算机1010a访问的任何可用介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CDROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储设备、或可以用来储存所需信息并可由计算机1010a访问的任何其它介质。通信介质通常以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并包括任意信息传送介质。
系统存储器1030a可以包括诸如只读存储器(ROM)和/或随机存取存储器(RAM)等易失性和/或非易失性存储器形式的计算机存储介质。基本输入/输出系统(BIOS)可被存储在存储器1030a中,它包含帮助在诸如启动期间在计算机1010a内的元件之间传递信息的基本例程。存储器1030a通常还包含处理单元1020a可以立即访问和/或目前正在操作的数据和/或程序模块。作为示例而非局限,存储器1030a还可以包括操作系统、应用程序、其它程序模块、和程序数据。
计算机1010a也可以包括其它可移动/不可移动、易失性/非易失性计算机存储介质。例如,计算机1010a可以包括对不可移动、非易失性磁介质进行读写的硬盘驱动器,对可移动、非易失性磁盘进行读写的磁盘驱动器,和/或对诸如CD-ROM或其它光学介质等可移动、非易失性光盘进行读写的光盘驱动器。可以在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器通常由诸如接口等不可移动存储器接口连接至系统总线1021a,而磁盘驱动器或光盘驱动器通常由诸如接口等可移动存储器接口连接至系统总线1021a。
用户可以通过输入设备,如键盘和定点设备(通常指鼠标、跟踪球或触摸板)向计算机1010a输入命令和信息。其它输入设备可以包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通常由耦合至系统总线1021a的用户输入1040a和相关联的接口连接到处理单元1020a,但是也可由诸如并行端口、游戏端口或通用串行总线(USB)之类的其它接口和总线结构连接。图形子系统也可以被连接到系统总线1021a。监视器或其它类型的显示设备也通过接口,如输出接口1050a连接至系统总线1021a,而输出接口1050a又与视频存储器通信。除监视器之外,计算机还可以包括其它外围输出设备,如扬声器和打印机,它们可以通过输出接口1050a连接。
计算机1010a可使用至诸如远程计算机1070a等的一个或多个远程计算机的逻辑连接在网络化或分布式环境中操作,远程计算机1070a又可以具有与设备1010a不同的媒体能力。远程计算机1070a可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点、或任何其它远程媒体消费或传输设备,并且可以包括上面关于计算机1010a所描述的任何或全部元件。图10所示的逻辑连接包括诸如局域网(LAN)或广域网(WAN)等的网络1071a,但也可以包括其它网络/总线。这样的联网环境在家庭、办公室、企业范围计算机网络、内联网和因特网中是常见的。
当在LAN联网环境中使用时,计算机1010a通过网络接口或适配器连接至LAN 1071a。当在WAN联网环境中使用时,计算机1010a通常包括通信组件,诸如调制解调器或用于通过诸如因特网等的WAN建立通信的其它装置。诸如调制解调器等通信组件可以是内置或外置的,它可以通过输入1040a的用户输入接口或其它适当的机制连接至系统总线1021a。在网络化环境中,相对于计算机1010a所描述的程序模块或其部分可被储存在远程存储器存储设备中。可以理解,所示和所述的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其它手段。
示例性分布式计算体系结构
鉴于个人计算和因特网的交汇,已经开发且正在开发各种分布式计算框架。个人和企业用户同样地配备用于应用程序和计算设备的无缝互操作和启用web的接口,使得计算活动越来越面向web浏览器和网络。
例如,MICROSOFT的托管代码平台,即.NET,包括服务器、诸如基于web的数据存储等构件块服务、以及可下载设备软件。一般而言,.NET平台提供(1)令整个范围的计算设备共同工作并在所有设备上自动更新并同步用户信息的能力,(2)提高的网页交互能力,通过大量使用XML而不是HTML来实现,(3)以从用于管理诸如电子邮件等各种应用程序或诸如Office.NET等软件的中央起点到用户的产品和服务的定制访问和传送为特点的在线服务,(4)集中式数据存储,将增加对信息访问以及用户和设备间的信息同步的效率和简易性,(5)集成各种通信媒体,如电子邮件、传真和电话的能力,(6)对开发人员来说,创建可重用模块的能力,由此提高生产力并降低编程差错的数量,以及(7)许多其它跨平台和语言综合特性。
尽管此处的某些示例性实施例是结合诸如应用程序编程接口(API)等驻留在计算设备上的软件来描述的,但本发明的一个或多个部分也可以通过操作系统、或“中间人”对象、控制对象、硬件、固件、中间语言指令或对象等来实现,使得由诸如.NET代码等托管代码启用的所有语言和服务以及其它分布式计算框架可包括、支持或可经由它们来访问根据本发明的用于检测和解决同步冲突的方法。
有多种实现本发明的方法,例如适当的API、工具箱、驱动程序代码、操作系统、控件、独立或可下载软件对象等,它们使得应用程序和服务能够使用根据本发明的用于检测和解决同步冲突的系统和方法。本发明从API(或其它软件对象)的观点以及从执行根据本发明的同步操作的软件或硬件对象的观点构想了对本发明的使用。由此,此处描述的本发明的各种实现都可以具有完全采用硬件、部分采用硬件并且部分采用软件、以及采用软件的方面。
在本文中使用的词语“示例性”意味着用作示例、实例或说明。为避免疑惑,本文公开的主题不受限于这样的示例。此外,本文描述为“示例性”的任何方面或设计不必解释成优于其它方面或设计或比其它方面或设计有利,它也不旨在排除本领域的普通技术人员所知的等效示例性结构和技术。而且,就术语“包括”、“具有”、“包含”和其它类似的词语在详细描述或权利要求书中的使用而言,为避免疑惑,这样的术语旨在以类似于术语“包括”作为开放的过渡词的方式解释而不排除任何附加或其它元素。
如上所述,尽管结合各种计算设备和网络体系结构描述了本发明的示例性实施例,但底层概念可被应用于其中期望在一组松耦合设备之间同步的任何计算设备或系统。例如,根据本发明的对同步冲突的检测和解决可被应用于计算设备的操作系统,可作为设备上的独立对象、作为另一对象的一部分、作为可重复使用的控件、作为可从服务器下载的对象、作为设备或对象和网络之间的“中间人”、作为分布式对象、作为硬件、在存储器中、以上各项的任何组合等来提供。尽管此处选择了示例性编程语言、名称和示例来表示各种选择,但这些语言、名称和示例并不旨在是限制性的。本领域的普通技术人员将认识到,有多种方法来提供实现本发明的各实施例所实现的相同、相似或等效的功能的目标代码和命名法。
如上所述,此处所述的各种技术可结合硬件或软件,或在适当时以两者的组合来实现。如在此所使用的,术语“组件”、“系统”等同样指的是计算机相关实体,或者是硬件、硬件和软件的组合、软件或执行中的软件。例如,组件可以是,但不限于是,在处理器上运行的进程、处理器、对象、可执行码、执行的线程、程序和/或计算机。作为说明,运行在计算机上的应用程序和计算机本身都可以是计算机组件。一个或多个组件可以驻留在进程和/或执行的线程中,并且组件可以位于一个计算机内和/或分布在两个或更多的计算机之间。
由此,本发明的方法和装置或其特定方面或部分可采取包含在诸如软盘、CD-ROM、硬盘驱动器或任何其它机器可读存储介质等有形介质中的程序代码(即,指令)的形式,其中当程序代码被加载到诸如计算机等机器内并由其执行时,该机器成为用于实现本发明的装置。在程序代码在可编程计算机上执行的情况下,计算设备通常包括处理器、该处理器可读的存储介质(包括易失性和非易失性的存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备。可例如通过使用数据处理API、可重用控件等来实现或利用本发明的同步和冲突解决能力的一个或多个程序较佳地用高级过程语言或面向对象的编程语言来实现以与计算机系统通信。然而,如果需要,程序可以用汇编语言或机器语言来实现。在任何情形中,语言可以是编译语言或解释语言,且与硬件实现相结合。
本发明的方法和装置也可以经由以通过某种传输介质传输的程序代码的形式体现的通信来实现,比如通过电线或电缆、通过光纤或经由任何其它传输形式,其中,当程序代码由诸如EPROM、门阵列、可编程逻辑器件(PLD)、客户计算机等机器接收、加载并执行时,该机器成为用于实现本发明的装置。当在通用处理器上实现时,程序代码与处理器相结合来提供一种用于调用本发明的功能的独特装置。另外,结合本发明使用的任何存储技术总是可以是硬件和软件的组合。
此外,所公开的主题可以使用产生软件、固件、硬件或其任意组合的标准编程和/或工程技术实现为用于控制基于计算机或处理器的设备以实现在此所详述的诸方面的系统、方法、装置或制品。此处所用的术语“制品”(或作为替换,“计算机程序产品”)旨在涵盖可从任何计算机可读设备、载体或介质访问的计算机程序。例如,计算机可读介质可包括但不限于,磁存储设备(例如,硬盘、软盘、磁带……)、光盘(例如,紧致盘(CD)、数字多功能盘(DVD)……)、智能卡、以及闪存设备(例如,卡、棒)。另外,已知可以采用载波来承载计算机可读电子数据,例如那些用于发送和接收电子邮件或用于访问如因特网或局域网(LAN)等网络的数据。
已经关于若干组件之间的交互描述了前述系统。应该理解,这样的系统和组件可以包括那些组件或指定的子组件、指定的组件或子组件中的某一些、和/或另外的组件,并根据前述的各种排列和组合。子组件也可以被实现为通信耦合至其它组件而非被包括在父组件(分层)内的组件。另外,应注意到一个或多个组件可被组合成提供聚集功能的单个组件,或被分成若干单独的子组件,且诸如管理层等任何一个或多个中间层可被设置成通信耦合到这样的子组件以便提供集成功能。此处描述的任何组件也可以与在此未具体描述但本领域的技术人员公知的一个或多个其它组件交互。
考虑到以上描述的示例性系统,参考图2A、3、4A、4B、4C、4D、5A、5B、5C、5D、6A、6B、6C、6D、6E、6F、7和8的流程图将可以更好地理解可根据所公开的主题来实现的方法。尽管出于说明简单的目的,各方法被显示和描述为一系列框,但应该理解和领会,所要求保护的主题不受框次序的限制,因为一些框能够以不同的次序和/或与在此描绘和描述的其它框同时发生。尽管经由流程图示出了非顺序或分支的流程,但可以理解,可实现达成相同或类似结果的各种其它分支、流程路径和框次序。而且,并非所有示出的框都是实现以下描述的方法所必需的。
此外,应该明白以上公开的系统以及以下方法的不同部分可以包括或包含人工智能或基于知识或规则的组件、子组件、进程、装置、方法或机制(例如,支持向量机、神经网络、专家系统、贝叶斯置信网络、模糊逻辑、数据融合引擎、分类器等)。这样的组件和其它组件可以自动化所执行的某些机制或进程,由此使得系统和方法的各部分更为自适应、高效及智能。
尽管结合各附图的优选实施例描述了本发明,但是可以理解,可以使用其它类似的实施例,或可以对所述实施例进行修改或添加来执行本发明的相同功能而不背离本发明。例如,尽管在诸如对等联网环境等联网环境的上下文中描述了本发明的示例性网络环境,但是本领域的技术人员将认识到,本发明不限于此,并且本申请中所描述的方法可应用于任何计算设备或环境,诸如游戏控制台、手持式计算机、便携式计算机等等,不论其是有线还是无线的,并且该方法可应用于经由通信网络连接并通过网络交互的任意数量的此类计算设备。此外,应当强调,构想了包括手持式设备操作系统和其它专用操作系统的各种计算机平台,尤其是在无线联网设备的数量持续增长时。
虽然各示例性实施例涉及在特定编程语言构造的上下文中利用本发明,但是本发明不限于此,而是可用任何语言实现以提供根据本发明的用于检测和解决冲突的方法。而且,本发明可以在多个处理芯片或设备中实现或跨多个处理芯片或设备实现,且存储可以类似地跨多个设备来实现。因此,本发明不应限于任何单个实施例,而是应该根据所附权利要求书的广度和范围来解释。