CN101689164B - 服务器辅助的对等同步 - Google Patents
服务器辅助的对等同步 Download PDFInfo
- Publication number
- CN101689164B CN101689164B CN200880021302XA CN200880021302A CN101689164B CN 101689164 B CN101689164 B CN 101689164B CN 200880021302X A CN200880021302X A CN 200880021302XA CN 200880021302 A CN200880021302 A CN 200880021302A CN 101689164 B CN101689164 B CN 101689164B
- Authority
- CN
- China
- Prior art keywords
- agglomerate
- end points
- metadata
- service
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1061—Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
- H04L67/1063—Discovery through centralising entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1074—Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L7/00—Arrangements for synchronising receiver with transmitter
Abstract
公开了用于使用集中和分散同步系统和通信拓扑的各元素来在端点之间同步数据的系统和方法。这些系统和方法在某些情况下可与集中端点同步数据的某一子集,而数据的另一子集以分散方式直接与其它端点同步。这些系统和方法可包括各种协作功能以辅助端点之间的数据同步。
Description
背景
数据可以按各种各样的方式并使用各种各样的连接拓扑来在不同端点,如在不同计算设备之间同步。例如,某些系统或技术可依赖于端点与诸如计算服务器等单个(或多个)集中端点同步。在其它系统或技术中,端点可能按各种方式,包括在一个或多个分散或对等拓扑中直接彼此通信。
端点和不同通信拓扑的不同安排可各自具有其自己的优点和缺点。仅作为一个示例,其中端点可能在不使用集中或“服务器”端点而直接彼此同步数据的系统可具有各种优点。例如,在这一系统中,端点可能能够与物理上或逻辑上“接近”的其它端点通信并同步数据,而无需首先(或曾经)与可能位于比同步端点更远之处的中央服务器同步数据。作为另一示例,如果端点能够与各种其它端点通信,则可消除如当需要集中服务器端点时可能存在的单个故障点。作为另一示例,在某些实现中,如果例如对等同步系统的建立不需要配置具有诸如始终需要可用于服务来自其它端点的请求或能够伸缩以提供附加容量等特定要求的一个或多个服务器,则至少此类对等同步系统的建立或配置可能更为容易。
然而,分散系统也可具有缺点,包括在某些情况下可在使用一个或多个集中端点的拓扑中纠正或预防的至少某些缺点。例如,对等端点可能并不始终可用于或能够同步数据(这与至少某些“服务器”端点形成对比,后者可能被配置成“始终可用”),并且缺少可用端点有时可能意味着数据直到或除非特定端点可用才能被同步。另一可能的缺点可涉及确定如何在可能以任意拓扑连接的一组端点之间高效地同步数据,尤其是大量数据。在至少某些情况下,确定哪些端点应与其它端点同步、应同步什么数据等并不是微不足道的问题,并且要找到解决方案可能要高强度的计算,这些解决方案可能不是最优的(这进而可导致诸如传送比需要的更多数据等问题),等等。分散系统的另一可能的缺点在于关于端点的系统的信息,如端点的特性、特定或所有端点所传送的数据的整体视图等,在没有一个端点或端点子集必要地同步或能够访问全部或至少相当大量的同步数据的时候可能更难以收集。还有一个可能的缺点可涉及应用安全策略或其它安全相关功能而无需能够完全信任任何特定对等机器;这些安全问题中的至少某一些在某些实现中可由于一个或多个集中且可能可信的端点的存在而得到改善。
概述
下面提供本发明的简要概述以便向读者提供基本的理解。本概述不是本发明的详尽概观,并且既不标识本发明的关键或重要元素,也不描绘本发明的范围。其唯一目的是以简化形式提供在此公开一些概念作为稍后提供的更详细描述的序言。
此处所描述的是针对使用集中和分散同步系统和通信拓扑的各元素来在端点之间同步数据的各种技术和方法。在至少某些实现中,同步数据的某一子集可被传送到集中端点,而该同步数据的另一子集可用分散或对等方式直接与其它端点传送。另外,在某些实现中,可在特定端点,包括在集中端点上实现各种协作且可能有益的功能以辅助端点之间的数据同步。
附图描述
图1示出了其中数据可以用集中和对等两种拓扑来同步和共享的示例性系统。
图2示出了示例性概括操作流程,其包括当变更同步的数据并使得这一变更对其它端点可用时由包括设备端点在内的端点执行的各种操作。
图3示出了示例性概括操作流程,其包括在同步来自另一端点的数据时由包括设备端点在内的端点执行的各种操作。
图4示出了示例性概括操作流程,其包括可被执行来检索或下载团块的各种操作。
图5示出了示例性概括操作流程,其包括可在维护和提供元数据时执行的各种操作。
图6示出了示例性概括操作流程,其包括可在存储和提供与元数据所引用的团块相关联的位置和定位符时执行的各种操作。
图7示出了示例性概括操作流程,其包括可在将团块存储在高速缓存中并从高速缓存提供团块时执行的各种操作。
图8示出了示例性概括操作流程,其包括可在将团块存储在云存储中并从运存储提供团块时执行的各种操作。
图9示出了示例性概括操作流程,其包括可在不使用示例性服务器端点提供的完整元数据或至少某些功能的情况下检索团块时执行的各种操作。
图10示出了在其中可以实现此处所描述的各种技术的示例性计算环境。
详细描述
此处所描述的是针对使用集中和分散同步系统和通信拓扑的各元素来在端点之间同步数据的各种技术和方法。更具体地,在至少某些实现中,同步数据的某一子集可被传送到集中端点,而该同步数据的另一子集可用分散或对等方式直接与其它端点传送。另外,在某些实现中,可在特定端点,包括在集中端点上实现各种协作且可能有益的功能以辅助端点之间的数据同步。
现在转向图1,所示是其中数据可以用集中和对等两种拓扑来同步和共享的示例性系统100。示例性系统100包含服务器端点110、设备端点A 160、设备端点B 170以及设备端点C 180。示例性服务器端点110被示为包含存储服务120、团块(blob)查找服务125、团块高速缓存服务130、云存储服务135、通知服务140、知识存储模块145、以及团块下载模块150。示例性设备端点A160被示为包含团块下载模块162。图1的此描述可参考其它服务来进行。然而,应当理解,参考图1所描述的各元素并不旨在限于用于参考其它附图所描述的元素。另外,尽管图1中的示例性图示表明特定元素,但在某些实现中,并非这些元素全部都存在,并且在某些实现中,可存在其它元素。
一般而言,在至少某些实现中,数据可在任何两个或更多端点之间同步。例如,但非限制,如图1所示,数据可在设备端点A 160和服务器端点110之间同步。同一或其它数据然后可在服务器端点和设备端点B 170之间同步。在某些情况下,设备端点B然后又可与设备端点C 180同步数据。在某些实现中,特点端点仅可与特定其它端点同步,而在其它实现中,端点可以与各种各样的端点同步,包括在某些实现中与所有其它端点同步。
尽管存在并且可使用各种各样的同步技术,但在至少某些实现中,至少某些数据可使用诸如简单共享扩展(SSE)等技术来在端点之间同步。SSE一般可被描述为包含用于使用对诸如RSS(“真正简单聚合”或“丰富站点概要”)或Atom文档等订阅源文档的(相对)简单数据添加来在端点之间共享和同步数据的数据格式和过程。在某些情况下,包括SSE信息的订阅源可被称为“SSE订阅源”。
采用此类实现,或采用至少某些其它实现,端点可通过提供既包括SSE信息又包括同步数据的至少一部分的订阅源文档来使得数据可供其它端点进行同步。要向其同步信息的端点可获得该订阅源文档,并使用用于将来自订阅源的信息与一个或多个数据存储中的信息合并的SSE过程以及其它技术来解释其内容。作为该过程的一部分,要向其同步信息的端点一般可更新该同步数据的其自己的副本或版本,并且由此完成数据从第一端点到第二端点的同步。仅作为一个具体示例,设备端点A 160可使得包括SSE信息的RSS订阅源对服务器端点110可用,以使由该设备端点A维护或访问的信息可被同步到服务器端点。服务器端点可获得该订阅源,并且可能使用“SSE合并”来将该订阅源的内容与服务器端点所维护的数据合并。在这一合并之后,设备端点A提供的数据中的至少某一些可被并入服务器端点所维护的数据中。此外,在设备端点A上所做出的对数据的附加变更也可用类似的方式同步到服务器端点:该附加变更可在设备端点A上做出,设备端点A可更新其提供的订阅源以包括该附加变更,然后服务器端点可处理该更新的订阅源并并入该附加变更。
以上的解释描述了如何可在一个方向上,即从第一端点到第二端点同步数据和变更。包括SSE在内的各种同步技术也使得变更可在“其它方向”,即本示例中从第二端点到第一端点来同步变得可能。例如,当在前一示例中将SSE用于设备端点A 160和服务器端点110时,服务器端点也可使得其自己的(至少最初)包括由设备端点A提供的相同信息的SSE订阅源可用。然后,在该订阅源所包含的信息中的某一些在服务器端点上被更新时,服务器端点进而可更新其自己的订阅源以同时包括该变更或更新的数据以及对该订阅源中的SSE信息的相应更新两者。包括设备端点A在内的同步来自服务器端点的此信息的另一端点然后可获得该订阅源,并合并变更(可能执行服务器端点所执行来并入来自设备端点A的变更的相同或相似的合并处理)。概括而言,采用某些同步技术,两个端点可彼此同步相同的数据,使得任一端点可例如通过各自使得数据可用并通过各自在另一端点提供的数据变更时更新其自己的本地数据来做出对该数据的变更。
此外,多个端点能够使用包括SSE在内的诸如至少某些同步技术所描述的那些技术来与单个(或多个)端点同步。例如,设备端点B 170可同步在设备端点A 160和服务器端点110之间同步的相同(或某一其它)数据。当使用SSE订阅源时,设备端点可通过检索由服务器端点所提供的订阅源,在某些情况下包括设备端点A所检索的同一订阅源,并并入该订阅源所表示的数据或变更,来同步相同的数据。设备端点B还可使得订阅源对服务器端点可用,以使服务器端点可包括由设备端点B对该数据做出的变更。
尽管在某些情况下数据可通过另一端点在设备之间同步,如在先前的其中由设备端点A 160做出的变更可通过服务器端点110同步到设备端点B 170的示例性描述中那样,但在至少某些情况下,并且在至少使用特定同步技术的时候,其它同步技术也是可用的。例如,在某些情况下,包括SSE在内的同步技术或协议可提供既通过可能像服务器端点110那样的集中服务器来同步又直接与其它端点同步的能力。例如,设备端点A在某些实现中可能能够或者通过经由服务器端点110来同步,或者通过直接与设备端点B同步(如由图1中设备端点A和设备端点B之间的虚线所示)来将数据同步到设备端点B。在同一或其它实现中,设备端点B可直接与设备端点C 180同步数据。例如,这一直接同步可在设备端点A和设备端点B之间,或在设备端点B和设备端点C之间,通过交换SSE订阅源文档并合并包括在所交换的订阅源中的数据来实现。此外,在某些实现中,甚至可能不要求存在服务器端点。例如,在某些实现中,在某些情况下元数据和团块数据可直接在知道其它设备端点的位置的设备端点之间传送,而无需一个或多个服务器端点的介入或其提供的辅助。
在至少某些实现中,可在端点之间同步各种各样类型的数据。例如,两个端点可同步包括各种各样信息的文本信息;可同步诸如音频或视频文件或编译的可执行代码等“二进制”信息;或可同步任何其它类型或格式的数据。
所同步的数据可用各种各样方式来表示。在某些实现中,此类数据可被包括在端点之间同步的信息中,包括通过使用如上所述的步骤来同步的信息。例如,在使用SSE的实现中,此类数据可被包括在端点之间交换的SSE订阅源中。然而,在同一或其它实现中,在端点之间传送的信息可能不包括最终可在端点之间同步或传送的全部数据。在某些此类情况下,在端点之间传送的信息可改为或还包括对要同步的其它数据的引用。这一引用可用各种方式来提供,如可能通过使用RSS或Atom订阅源中包括引用资源的URL的“enclosure(附件)”元素。引用所标识的数据然后可使用各种手段来访问或存储。
如此处所使用的,术语“元数据”可被解释为指在端点之间传送的、标识(并且在某些实现中可包括)同步或传送的数据的信息。例如,在某些实现中,元数据可由为每一条同步数据包括一“项目”的文档或订阅源来包含。每一项目在某些示例性实现中进而可包括“同步数据”部分和“项目数据”部分。在这些情况下,同步数据可以与关于特定项目的同步的信息相关联,而项目数据可以与要同步的信息相关联。例如,同步数据可包括诸如与项目相关联的版本号或该项目如何或何时被更新的历史等信息,而项目数据可包括项目本身,或至少与该项目相关联的信息。
在某些情况下,所有项目数据可被包括在元数据中,而在其它情况下,元数据可能不包括全部项目数据并且可改为包括对项目数据的一个或多个引用。使用引用可使得元数据能够保持(相对)小,尤其是在有大量项目数据的情况下。例如,代替在元数据本身的项目数据部分中包括全部大音频或视频文件,项目数据元素可改为包括引用、标识大音频或视频文件或以其它方式辅助该文件的检索的某种类型的引用或标识符。诸如由元数据来引用的这一信息或数据可与元数据分开存储或访问,并且在某些情况下可被称为数据的“团块”或简称为“团块”或“附件”。(在某些情况下,至少部分同步数据也可不包括在元数据中而改为从元数据引用)。
在使用SSE的实现中,在某些情况下元数据可由SSE订阅源来包含。例如,包括SSE信息的RSS订阅源可被具体化为包括诸如针对每一条数据的“item(项目)”元素等常见RSS XML元素的XML文档。每一“item”元素进而可包括同步数据和项目数据,并且可包括关于项目的信息或项目本身,同步数据在至少某些实现中可由名为“sync(同步)”的XML元素来包含,而项目数据在至少某些实现中可由名为“item”的XML元素来包含。
一般而言,项目数据或项目数据元素可包括任何类型的数据。在采用RSS文档的简单情况下,项目数据可包括如“title(标题)”和“description(描述)”等标准RSS元素。在同一或其它情况下,项目数据可包括例如可能使用如hCard等格式来编码的联系人信息或其它数据。在又一个或相同的实现中,项目数据可包括对位于别处的信息,包括未包括在元数据或RSS订阅源中的信息的一个或多个引用。当元数据使用RSS时,这些引用可使用如RSS“enclosure”元素等元素来包含。
应当注意,在至少某些情况下,元数据可包括同步的所有信息。即,在端点之间同步的元数据可能并不总是引用或标识其它信息。例如,如果元数据包括如与联系人相关联的全部信息,则包括订阅源或文档在内的包括该联系人信息的同步数据可能仍被统称为元数据。
尽管许多同步技术在同一时刻一起或使用相同的端点传输关于要传输的数据的信息(即,元数据)以及该信息本身(包括元数据所引用的数据的团块),则将元数据和团块分开处理会有某些好处,如由此处所描述的至少某些技术所完成的。在至少某些实现中,例如,元数据的量可能并不像所引用的数据或团块数据的量那样大,并且因此在一个方向上且在特定端点之间传送元数据,而在另一方向上且可能在不同一组端点之间传送团块数据是有利的。在一个这样的安排中,元数据可以被传送到服务器端点110并通过使用服务器端点110来传送,而团块数据在至少某些情况下可以直接在设备端点之间传送。此外,尽管部分或全部元数据可以在同步数据的所有端点之间传输,但是团块数据可以不必在每一端点之间传送。例如,在例如团块被特别地请求或要求时,团块可以只在端点之间传送。
此外,在某些实现中,取决于各种特性可以生成团块数据的一个或多个替换表示并在端点之间传送。例如,仅使用相对慢地传送信息的通信机制连接到一个或多个其它端点的端点可能期望或检索在某些情况下小于可被至少某些其它端点检索的团块的团块。在一个具体示例中,使用相对低带宽数据网络连接的移动电话可获得被转码或转换以使图像或视频以较少量空间来表示(可能通过减小图像的大小,通过使用更积极的压缩设置等)的图像或视频文件。其它种类的替换表示也是可能的,或可由至少某些实现来支持。例如,某些端点可以检索例如音频或视频文件的剪辑而非整个音频或视频文件,等等。
在至少某些此类实现中,一个或多个特定端点可具有生成或提供特定替换表示的能力。例如,在某些实现中,“替换表示服务”或“转码服务”可存在于服务器端点110(图1中未示出)上,并且可参与存储在服务器端点或其它端点上的团块的至少某些替换表示的生成。在同一或其它实现中,诸如一个或多个设备端点等至少某些特定其它端点还可或改为具有提供团块的替换表示的能力。与替换表示的生成和提供有关的其它模块、服务或过程也在本文别处进一步描述。
服务器端点的一个示例性实现可包括各种功能,包括图1示为示例性服务器端点110的一部分的一个或多个服务或模块。如上所述,并非所有服务器端点都可包括所有示出的模块和服务,而其它服务器端点可包括附加模块和服务。此外,尽管某些模块和服务可被描述为以特定方式彼此通信,但一般而言,许多模块和服务可与其它模块或服务通信,包括与位于服务器端点以及其它端点上的模块和服务通信,并包括与其中未具体描述这一通信的模块和服务通信。例如,知识存储模块145可被描述为以一种或多种特定方式与例如团块高速缓存服务130一起使用,但这一描述并不将知识存储模块限于仅与团块高速缓存服务或与其中具体描述了该通信的其它模块或服务通信;知识存储模块在至少某些实现中还可与各种其它模块或服务通信。此外,尽管未在图1中示出,但在某些实现中,可存在多于单个服务器端点。在至少某些这样的实现中,至少某些服务器端点可以与其它服务器端点通信并参与不同端点之间的数据同步。这多个服务器端点中的每一个可以仅包括部分或可能包括全部图1所示的示例性服务和模块,作为示例性服务器端点110的一部分。
示例性存储服务120一般可存储元数据并为其它端点提供与服务器端点110同步元数据的能力。示例性设备端点A 160例如可做出本地变更并且更新其维护的元数据以使该元数据包括该变更,然后将经更新的元数据传送到存储服务。存储服务然后可将从设备端点A传送来的元数据中的变更与存储服务所管理的同一元数据的某一表示合并。存储服务然后可使其自己的合并的或经更新的元数据对其它端点可用(这又可使其它端点能够检索存储服务所提供的元数据并且然后并入最初由设备端点A做出的变更)。存储服务可存储并提供多条单独的元数据,如在至少某些实现中的多个SSE订阅源,并且每一条元数据可以标识不同(或相同)的数据集。可由示例性存储服务120执行的至少某些操作可以在下文中尤其参考图5来更详细描述。
在包括使用SSE的实现在内的某些实现中,存储服务可以接受(或检索,或以某种方式获得)由其它端点变得可用的SSE订阅源。存储服务然后可将所获得的订阅源中的变更与该存储服务可用各种方式(包括作为文件本身、作为数据库中的记录等等)存储或访问的订阅源的本地表示合并。存储服务然后可能使用web或文件服务器、通过主动将经更新的订阅源传送到其它端点等等,来使得作为合并操作的结果的经更新的订阅源对至少某些端点可用(同样以各种方式,包括作为可由其它端点访问的文件)。
在某些实现中,示例性团块查找服务125可接受诸如团块标识符等某种标识团块的数据,并提供端点然后可用于获得或检索该团块的一个或多个“定位符”。例如,在包括其中元数据和团块可被直接或单独传送或同步的实现在内的实现中,一个或多个端点可向团块查找服务提供包括可检索特定团块的一个或多个位置的信息。在某些实现中,这些位置可包括设备端点、团块高速缓存服务130或云存储服务135。团块查找服务然后可在某一稍后的时间向希望获得该团块的另一端点提供这些位置中的一个或多个。可由示例性团块查找服务执行的至少某些操作可以在下文中尤其参考图4和图6来更详细描述。
团块标识符一般可以是标识该团块的某条数据。在某些实现中,团块标识符可由各种设备和服务器功能用于特别地标识团块而无需传送该团块本身。因此,例如,存储服务和其它端点可在元数据中使用团块标识符,团块查找服务可使用团块标识符来存储和提供位置,团块高速缓存服务或云存储服务可使用相关联的团块标识符来存储索引的或可被检索的团块,等等。在某些实现中,单个团块标识符可由各种模块或功能用于标识团块,而在同一或其它实现中,多个且可能不同的团块标识符可能可由不同的模块或功能用于标识特定的单个团块。
团块标识符可以用各种方式来实现并采取各种形式。在至少一个实现中,团块标识符可以仅仅是一串或一组字母数字或其它字符,如像“ABC123”、“ABCDEFGH”、“123456”等。在另一实现中,团块标识符可采取例如统一资源定位符(URL)或统一资源标识符(URI)等形式,如可能是“http://www.els.live.com/ABC123”、“http://www.els.live.com/ABCDEFGH”、“http://www.els.live.com/123456”等等。在这一示例中,在该标识符的“http://www.els.live.com/”部分之后的串可实际标识该团块。在某些情况下,该标识符的“http://www.els.live.com/”部分可用于各种其它目的,包括可能使得团块标识符看上去更像用户可能熟悉的标识符,或甚至在至少某些特定情况下实际定位该团块,包括在以下尤其参考图9描述的示例性实现中。
示例性团块高速缓存服务130可为临时团块或文件提供存储位置。这一位置在某些情况下可帮助在端点之间传输团块。例如,假定设备端点A 160与服务器端点110同步元数据,并且这一元数据标识了可从设备端点A获得的团块。还假定该团块未被传送到服务器端点,相反,其保留在设备端点A上可供检索。然后假定设备端点A离线或变得对服务器端点和设备端点B 170中的一个或两者不可用。现在,如果设备端点B同步来自服务器端点的元数据并确定它希望从设备端点A检索团块,则它可能无法这样做,因为具有该团块的唯一副本的设备端点A不在线或不可用。这一问题可通过包括使用团块高速缓存服务在内的各种手段来解决。在一个这样的实现中,与设备端点A提供的元数据相关联的团块可在设备端点A变为不可用之前被存储在团块高速缓存服务中,然后设备端点B可从该团块高速缓存服务而非从设备端点A检索该团块。
作为高速缓存,一个示例性团块高速缓存服务可将团块作为临时数据来存储。即,可能与以下描述的云存储服务135相反,团块高速缓存服务所存储的团块可以仅被存储一段有限的时间,并且在某些情况下可在团块高速缓存服务本身由某一其它模块或服务控制的各种时间移除。例如,在某些实现中,团块高速缓存服务可使用一个或多个高速缓存算法来确定何时删除团块或用新团块来替换当前存储的团块。例如,在至少一个实现中,团块高速缓存服务可首先填满或占据其可用存储空间,然后在要存储新团块时,可使用诸如“最近最少使用”(即LRU)算法等算法来找到并删除最近未被使用的一个或多个团块,并因此使得空间可用于新团块数据。至少在某些情况下,实现与团块高速缓存服务相关联的功能可需要比实现与可能包括以下描述的云存储服务135在内的持久存储相关联的功能更少的金钱、操作或其它资源。例如,由于与团块高速缓存服务相关联的信息可以不保证被可靠或无限地存储,因此团块高速缓存服务可能无需被设计成保持至少某些其它非临时数据的存储可能所需要的同一级别或类型的冗余数据存储功能。
可由示例性团块高速缓存服务130执行的至少某些操作可以在下文中尤其参考图7来更详细描述。
示例性云存储服务135可以为一般非临时的数据提供“云中”存储。即,尽管云存储服务可以按类似团块高速缓存服务的某些方式来操作(这例如表现在它可存储团块),但它可以被用户和端点看作例如“始终开启”或“始终可访问”并提供“可靠”存储。端点可在各种情况下使用云存储服务来存储团块数据,包括在某些情况下代替将团块数据存储在如设备端点上。可由示例性云存储服务执行的至少某些操作可以在下文中尤其参考图8来更详细描述。
在某些实现中,提供对团块数据的存储并且与团块高速缓存服务130或云存储服务135不同地操作的一个或多个附加服务或模块可以是示例性服务器端点110的一部分。例如,在一个实现中,这一不同的团块数据存储服务可提供比团块高速缓存服务所提供的相对更持久但比云存储服务所提供的相对较不持久(至少与以上介绍的这些示例性服务一样持久)的存储。这一服务可通过使用例如其上可存储团块或可从中获得团块的其它端点的知识来确定何时存储团块来这样做。例如,这一团块数据存储服务在某些知识指示团块已经存储在某些数量的已知相对高度可用的其它端点上的情况下可以不存储团块。在一个具体示例中,因此如果对团块数据存储服务可访问的知识指示特定团块被存储在如通常在大部分或全部时间开启并连接到网络的四个其它端点上,则示例性团块数据存储服务能够不存储该团块,因为请求端点可能能够从这四个其它端点中的至少一个检索该团块。还应注意,在至少某些实现中,这些不同机制不必在某种新类型的团块数据存储服务中实现,相反,这些机制可以是团块高速缓存服务或云存储服务的一部分或包括在其中。
同步特定元数据的端点一般希望知道这一元数据何时在一个或多个其它端点上更新,使得例如端点可以更新该元数据的其自己的副本以及可能检索任何所需团块数据。在一个有时低效的实现中,端点可“轮询”或周期性地检查一条或多条其它可用元数据(可能包括服务器端点110提供的那些元数据)并在其它元数据变更时确定有要同步的变更。或者,端点可利用示例性通知服务140所提供的功能。通知服务可为端点提供注册或指示对特定元数据的兴趣的能力,然后可在特定元数据变更时向感兴趣的或注册的端点提供通知。结果,端点能够避免轮询变更,或至少可较不频繁地轮询,并且仍能够在元数据变更时采取某一动作。通知可用各种方式来实现,包括通过使用各种联网或其它通信机制提供的点对点或广播功能。在同一或其它实现中,示例性通知模块还可提供关于除对元数据的变更之外的其它事件的通知。例如,在某些实现中,通知模块可周期性地向端点提供包括关于经更新或变更的定位符(这些定位符可由示例性团块查找服务来管理)的信息的通知。在检索团块时使用经更新的定位符可使得端点能够改变其如何检索团块,且因此可能更高效地检索团块,适合改变的网络或其它条件,等等。
示例性知识存储模块145可以提供用于可通过服务器端点110所提供的交互或功能来获得的“知识”的存储以及对该“知识”的访问。这一知识然后可在某些情况下用于各种目的,包括控制或优化数据同步。尽管本文中可在别处描述可如何收集并使用知识的更多示例,但在某些情况下,知识一般可涉及诸如与同服务器端点通信或同其它端点通信的端点相关联的特性等数据。知识存储模块所存储或使用的特性一般可被称为“知识特性”。例如,某些示例性知识特性可包括关于设备端点通常连接到服务器端点的方式的信息,如连接速度、连接的可用带宽、与连接相关联的任何成本等等。例如,通信可以是通过高速数据网络或通过相对慢的移动电话网络的,连接可在一天的特定时间具有空闲带宽但在该天的其它时间被使用,等等。知识特性还可包括关于端点的其它信息,包括关于端点通常何时在线或可用的信息一设备可以是膝上型设备或移动电话并且可能会间歇性地连接、可以是“始终”连接的“始终开启”台式计算机、等等。作为另一示例,知识模块可存储从端点与服务器端点的交互中产生的信息,如以何频率请求特定团块、从哪些端点请求团块、等等。不论是如何或在何处获得知识的,该知识然后都可由服务器端点或可能由其它端点以各种方式,包括作为控制或优化如何同步数据的一部分,来提供和使用。
在又一示例中,诸如设备的连接特性或其它特性或其它知识等知识可用于确定是否标识或提供所请求的团块的一个或多个替换表示。例如,且如上所述,替换表示可包括如图像的较小的经转码的版本,该图像否则当在被使用慢连接机制连接的端点请求时或当团块将被存储在具有相对更有限的存储空间的端点上时将是大图像。在同一或另一示例中,知识可包括特定端点是否具有特定团块的特定替换表示,和/或特定端点是否具有生成或提供使用特定替换表示来表示的团块(可能通过在特定端点上生成替换表示,通过从某一其它端点检索替换版本,等等)的能力。
最后,诸如作为服务器端点110的一部分的团块下载模块150或作为设备端点A 160的一部分的团块下载模块162等示例性团块下载模块在某些情况下可从包括其它端点在内的各种其它位置下载或检索团块。一般而言,团块下载模块可使用一个或多个团块检索机制来检索团块的某一部分或整个团块,其中“团块检索机制”可指定例如可定位团块的一种或多种方式和/或可检索团块的一种或多种方式。一个可能相对简单的团块下载模块可能仅能够使用例如利用诸如HTTP、FTP或各种其它文件共享协议之一等协议的单个团块检索机制来检索团块。另一团块下载模块可能能够使用这些团块检索机制以及其它团块检索机制中的任一个来检索文件。例如,某些团块下载模块可能能够使用可“同时”从各种端点检索同一团块的各片断的机制,如又例如BitTorrent协议等协议所描述的机制。同一或其它团块下载模块还可使用其它功能来更高效地检索团块,诸如,例如“差异压缩”,其中仅团块的变更的部分被传送,使得无需每次在即使之后团块的一小部分变更时都传送整个团块。某些团块下载模块在某些情况下可使用团块查找服务来定位团块,团块查找服务在某些实现中可以与以上介绍的示例性团块查找服务125相同或相似,而在同一或其它实现中团块下载模块可以在不使用团块查找功能或不使用团块查找服务的情况下定位或检索团块。
此外,在某些情况下,团块下载模块可使用“可插入”体系结构来组织团块下载模块所使用的团块检索机制(或本上下文中的“驱动程序”)。例如,一个团块检索机制或驱动程序可启用从示例性团块高速缓存服务的团块检索,另一驱动程序可使用团块查找服务来检索能够提供团块的一组端点然后从这些端点中的一个或多个检索团块(包括在具有多于一个端点的某些情况下通过使用像BitTorrent的机制),而又一驱动程序可能不使用团块查找服务,而可能标识可使用各种其它机制中的一种或多种来从中检索到团块的一个或多个端点,等等。可插入体系结构还可使得能在各种时间添加附加团块检索机制,包括在部署或已经使用了团块下载模块之后,而不必改变团块下载模块或包括该团块下载模块的端点的整体组织或实现。这一功能可启用对新团块检索机制的稍后添加而不改变核心团块下载模块或端点本身。
应当注意,本示例中的每一端点可表示任意数量的通用或专用计算机,包括台式计算机、服务器计算机、膝上型计算机、工作站计算机、移动或蜂窝电话、个人数字助理(PDA)等等。此外,尽管特定示例性端点可被描述为“设备”或“服务器”端点,但是这些命名不一定要限制端点的计算硬件或类型的本质。服务器端点或设备端点在至少某些实现中可在任何类型的计算硬件上实现,包括台式计算机、服务器计算机、膝上型计算机、工作站计算机、移动或蜂窝电话、PDA等等。一般而言,端点被认为是设备端点还是服务器端点可以特别地通过端点所提供的功能而非通过例如其上实现端点的计算硬件的本质来确定。例如,使用先前描述为与示例性服务器端点110相关联的服务和模块中的一个或多个来提供服务器功能的端点可被认为是服务器端点,即使该端点是在如膝上型计算机上实现的。还应注意,端点可在特定时间提供服务器功能且因此可被认为是服务器端点,而在同一或其它时间作为设备端点或其它类型的端点来操作。并且,在某些实现中,特定或单个计算设备可主存或包括多个端点。在这些或其它实现中,端点之间的信息通信在至少某些情况下可以仅包括在特定单个计算设备上运行的可执行代码之间的通信。
端点且甚至端点内的模块和服务可使用各种联网或其它连接手段来连接。这些通信手段可包括可用于传送数据的任何手段,包括任何类型的网络,如以太网、Wi-Fi或移动电话或数据网络,并且在至少某些情况下包括任何其它种类的转移,包括像紧致盘(CD)或闪存驱动器等物理介质的转移。
现在转向图2,所示是一示例性概括操作流程200,其包括当变更同步的数据并使得这一变更对其它端点可用时由包括设备端点在内的端点执行的各种操作。图2的以下描述可参考其它附图来进行。然而,应当理解,参考图2所描述的操作流程并不旨在限于用于参考其它附图所描述的元素。另外,尽管图2的示例性操作流程指示了特定执行次序,但在一个或多个替换实施例中操作可被不同地排序。此外,尽管该示例性操作流程包含多个步骤,但应认识到在某些实现中,这些操作中的至少某一些可被组合或同时执行,并且在同一或其它实现中,可以不执行某些步骤。
在操作210的示例性实现中,对诸如可能设备端点A 160等先前参考图1介绍的端点上的本地数据做出变更。例如,用户可使用应用程序来创建新数据,或修改或删除现有数据。经修改的数据可包括各种各样类型的数据中的一种或多种,诸如,例如但非限制,联系人、日历项目、音频剪辑、视频剪辑、文字处理或电子表格文件、其它文件等等。
这一变更然后可导致对在端点之间同步的元数据或团块数据的一个或多个变更。例如,假定用户使用如视频编辑应用程序来创建新视频文件,并且该新文件是与至少一个其它端点同步的数据的一部分。作为操作210的一部分,或作为另一操作的一部分,由其上做出变更的端点所维护的元数据可被更新以使该元数据包括与该新视频文件相关联的项目。这一新项目在至少某些实现中可包括与项目同步相关的数据(如,可能是关于项目何时创建或稍后何时更新的版本信息或数据),以及关于项目本身的信息,如,可能是视频的名称、视频的文本描述、以及标识实际视频数据或内容的引用(如果视频数据或内容未被包括在元数据订阅源本身中的话)。当修改现有项目时,元数据以及可能的团块数据可被类似地更新。如果删除现有项目,则可修改元数据,以使例如该项目被标记为被删除,并且任何相关联的团块数据可被删除(或在至少某些实现中可保持可用)。
在操作215的示例性实现中,作为操作210的一部分更新的元数据可被传送到服务器端点,如,可能是以至少某种方式像以上参考图1所描述的示例性服务器端点110那样的服务器端点。这一通信可取决于例如如何表示元数据,以及对做出变更的端点可用或对接收端点可用的联网或其它通信功能而用各种各样的方式来实现。例如,在其中元数据被包含在XML文档中的实现中,元数据可使用可能是包含XML文档并提交给在服务器端点上运行或与其相关联的HTTP服务器的HTTP POST请求来传送到服务器端点。在另一实现中,做出变更的端点可使得经更新的元数据在特定位置,如网络共享上或通过与端点本身相关联的HTTP服务器可用,并且服务器端点可以从该位置检索元数据。
在至少某些实现中,与元数据变更相关联的团块数据可以不被传送到服务器端点。相反,团块数据可以例如,但非限制,被保留在做出变更的端点上(至少保留某一时间段)。例如,当团块数据包括在端点上创建的视频数据时,该视频数据在完成了操作215的实现之后可仅驻留在该端点上。在某些情况下,这一团块数据可由另一端点在某一稍后的时间点检索或获得。
在某些实现中,团块查找服务可作为操作215的实现的一部分来更新,使得团块查找服务包括关于与元数据变更相关联的团块数据的位置信息。另一端点然后可使用团块查找服务,作为从端点检索团块数据的一部分。在同一或其它实现中,团块查找服务可在另一端点合并或处理了传送到另一端点的元数据时更新。这一操作在某些示例中可至少由像以下参考图5描述的操作525的操作来实现。
最后,尽管在操作215的某些实现中经更新的元数据可被传送到服务器端点,但在同一或其它实现中,经更新的元数据可改为或还可被传送到一个或多个其它端点,包括其它服务器端点或其它设备端点,如设备端点B 170和/或设备端点C 180,这两个端点都是先前参考图1所描述的。例如,在其中元数据包括或使用SSE信息,且因此元数据可在任意(且有时是非服务器)端点之间传送和同步的实现中,操作215的至少某些实现可以将经更新的元数据传送到各种其它端点。
在操作220的示例性实现中,其上做出变更的端点可以订阅或注册对先前传送到服务器(或其它端点)的元数据的将来更新的通知。在这一订阅或注册之后,在至少某些情况下,端点可以在元数据在诸如服务器端点等先前向其传送了经更新的元数据的某一其它端点上变更时接着接收通知(用各种方式来具体化或实现)。如上所述,这可使得端点能够知道对它所关注的数据的其它变更而无需该端点主动地轮询或检查对该数据的变更。
尽管在某些情况下订阅或注册可作为执行操作220的一部分来进行,但同一(或不同)订阅或注册可在另一时刻进行,或完全不进行。
在操作225的示例性实现中,端点可以通过例如向请求者提供团块来响应于对与元数据变更相关联的团块的请求。即,例如,在一个或多个其它端点接收或处理了涉及团块或与团块相关联的元数据变更之后的某一时间点,这些其它端点中的一个或多个(或另一端点)可确定它们需要或期望该团块所包括的数据。在某些实现中,包括其中团块数据未作为元数据的一部分来传送的实现中,这些其它端点然后可通过向团块存在于其上的另一端点请求团块来检索团块。请求团块的方式以及将团块提供给请求者的方式可以用各种各样的方式来实现,包括以上参考例如团块查找服务和团块下载模块所介绍的那些方式,以及以下详细描述的那些方式中的某一些。
现在转向图3,所示是一示例性概括操作流程300,其包括在同步来自另一端点的数据时由包括设备端点在内的端点执行的各种操作。图3的以下描述可参考其它附图来进行。然而,应当理解,参考图3所描述的操作流程并不旨在限于用于参考其它附图所描述的元素。另外,尽管图3的示例性操作流程指示了特定执行次序,但在一个或多个替换实施例中操作可被不同地排序。此外,尽管该示例性操作流程包含多个步骤,但应认识到在某些实现中,这些操作中的至少某一些可被组合或同时执行,并且在同一或其它实现中,可以不执行某些步骤。
在操作310的示例性实现中,端点可确定该端点有某种兴趣的元数据已变更。例如,端点可能先前已经更新了同一元数据并可能以像先前参考图2所描述的方式注册了将来变更的通知。在这一情况下,或在其它情况下,这一端点可从某一其它端点,包括从维护元数据的副本的服务器端点接收通知。在另一实现中,端点可周期性地轮询某一位置,并通过该轮询动作来确定该位置处的元数据已变更。在又一些实现中,可以不执行该操作一在这一实现中,端点可例如周期性地执行示例性操作流程300中的其它操作中的至少某一些,如获得元数据和合并元数据,而不管元数据是否已变更。(与该操作流程相关联的描述在某些情况下可假定在所讨论的元数据中存在变更,在实际不存在变更的情况下,可不同地执行各种操作或者可完全不执行这些操作。)
在操作315的至少某些实现中,端点可获取包括可以通过各种手段来包含变更的元数据。例如,包括可能的像以上参考图1所描述的设备端点A 160那样的设备端点在内的端点可向作为可能是以上也参考图1所描述的服务器端点110等服务器端点的一部分或与其相关联的web服务器发起HTTP GET请求,并作为响应接收包括一个或多个变更的元数据。在其它实现中,元数据可由另一端点主动传送,或可用各种其它方式来获得。在某些实现中,所获得的元数据可包括可由该特定一条元数据表示的所有项目,而在同一或其它实现中,在至少某些情况下,元数据可以仅包括项目的子集,包括例如仅变更的项目。
在操作320的示例性实现中,所获得的元数据可以与本地维护的元数据的副本合并。这一合并操作可将所获得的元数据中包含的变更并入可由执行操作流程300的端点维护或修改的元数据的另一副本中。元数据的这一本地副本或本地元数据存储可用各种方式来维护,包括(至少在某些实现中)作为数据库中的行或记录、作为可能存在于文件系统中的一个或多个文件中的XML订阅源(或其它)文档的副本、等等。
在其中元数据包括SSE信息的实现中,这一合并操作可使用SSE合并来实现。在实现SSE合并的一种方式的简化描述中,可遵循由SSE指定的过程,该过程将“外”项目(本示例中由所获得的元数据来包含)与本地地或与合并元数据的端点相关联地维护的“本地”项目合并。不存在于本地元数据存储中的新的外项目一般可被并入本地元数据存储中,由此创建新的本地项目。在外项目对应于本地项目(可能由于两个项目都具有相同的SSE标识符)的情况下,合并过程可使用一种或多种手段来选择“获胜项目”和“失败项目”,如通过将具有最新近被更新的项目选择为获胜项目。最后,当本地项目不是获胜项目时,可更新该本地项目以使其并入获胜项目所包含的数据。
在操作325的至少某些实现中,可确定正在同步信息并且已经获得了元数据的端点是否还需要或期望由元数据引用或标识的一个或多个团块。例如,在其中元数据不包括与该元数据相关联的至少某些信息的实现中,而是可能例如包括对存储在别处的数据团块的一个或多个引用,则该操作可确定这些团块中的一个或多个是期望的或需要的。在仅一个示例中,这可能是当操作流程300的至少部分目的是将元数据和相关联的团块数据两者同步到正在执行操作流程300的端点的情况。如果需要团块,则示例性操作流程可前进到操作330。如果不需要团块,则示例性操作流程可结束。
在操作330的示例性实现中,可检索由所获得的元数据标识或引用的一个或多个团块。要检索的一个或多个团块可用各种方式来标识。例如,在某些情况下,可检索与变更的元数据项目相关联的任何团块。在其它实现中,可以只检索变更的团块的一个子集,这可能只检索特定大小的团块,或者可使用某一其它准则来过滤或确定要检索的一个或多个团块。在某些实现中,单个元数据项目可标识单个团块,而在同一或其它实现中,单个元数据项目可标识多个团块。每一标识的团块然后可用一种或多种不同方式来检索。在某些实现中,可检索所标识的团块的一个或多个替换表示,如特定文件(如图像、视频或音频文件)的经转码的版本等等。最后,在某些实现中,团块可使用与以下参考图4描述的操作相同或相似的操作来检索。在其它实现中,团块可以用一种或多种不同的方式来检索。
现在转向图4,所示是一示例性概括操作流程400,其包括可被执行来检索或下载团块的各种操作。图4的以下描述可参考其它附图来进行。然而,应当理解,参考图4所描述的操作流程并不旨在限于用于参考其它附图所描述的元素。另外,尽管图4的示例性操作流程指示了特定执行次序,但在一个或多个替换实施例中操作可被不同地排序。此外,尽管该示例性操作流程包含多个步骤,但应认识到在某些实现中,这些操作中的至少某一些可被组合或同时执行,并且在同一或其它实现中,可以不执行某些步骤。
在操作410的示例性实现中,可以确定是否将使用团块查找服务(即BLS)来作为检索团块的一部分。例如,该确定可至少部分地由于在某些实现中端点可能试图首先在不使用(或不通过使用)团块查找服务的情况下检索团块而做出。在这一实现中,团块查找服务例如可以仅在做出了不使用团块查找服务来检索团块的初始尝试之后才使用。如果这一初始尝试失败,则可使用团块查找服务。在另一实现中,团块查找服务可能不可用,或者该确定可用各种其它方式来做出。如果使用团块查找服务,则该操作流程400可前进到操作415。如果不使用团块查找服务,则该操作流程可前进到操作435。
如果使用团块查找服务,则操作流程400可前进到操作415,在那里,在一个示例性实现中,端点可询问或查询团块查找服务来寻找与所需团块相关联的一个或多个定位符。这一查询可使用各种通信机制或手段来传送到团块查找服务。在某些实现中,也可在请求中包括附加信息。例如,在某些实现中,端点还可请求用一种或多种替换表示来提供特定团块。例如,移动电话可请求占据相对少量空间(以便容易地通过可能慢的网络连接来传输、容易地存储在具有有限存储空间的设备上、等等)的团块的表示。
响应于这一请求,团块查找服务可提供一个或多个“定位符”,其中定位符一般可包括能够提供该团块的至少一部分的端点的标识。例如,在一个实现中,团块查找服务可提供一个或多个定位符,这些定位符各自又包括标识团块查找服务确定能够提供所请求的团块的至少一部分的一个或多个端点的域名或IP地址。
在这些实现的至少某一些中(但不一定在所有实现中),以及在其它实现中,由团块查找服务提供的一个或多个定位符还可包括其它信息。例如,在某些情况下,定位符可包括可至少部分地用于确定应联系该定位符所标识的端点的方式或应检索团块的方式。例如,定位符可包括可使用的所支持的协议的某种指示,如某种对等或分布式数据传输机制、HTTP、FTP等等。在同一或其它情况下,一个或多个定位符可包括偏好或次序的某种指示,该指示可将特定的一个或多个定位符标识为偏爱的,这一偏爱的定位符可例如被首先且在使用其它定位符之前使用。
在同一或其它实现中,仅特定团块的部分或局部可从特定端点获得。例如,特定团块的前50%可使用特定端点来访问,而同一团块的后50%可使用另一端点来访问。在这些实现中,在某些情况下,定位符可包括指示团块的什么部分可由与该定位符相关联的特定端点来提供的信息。
在同一或又一实现中,定位符可包括由同一类型的知识,如由先前参考图1描述的示例性知识存储模块145变得可用的知识来导出或提供的信息。这一知识例如可使得提供一个或多个定位符的团块查找服务能够指示对于特定定位符的使用的偏好(可能因为这些定位符标识了具有更快连接、在物理上或逻辑上更靠近请求定位符的端点等等),或可以使团块查找服务能够用各种其它方式来修改或改变其提供的定位符。
应当注意,尽管定位符可包含附加信息,包括如上所述地在同一情况或实现的某一些中,所提供的定位符可能不包括任何附加信息。在这种情况下,以及在其它情况下,包括未示出的那些在内的其它操作可确定如何通过其它手段来检索团块,如通过与定位符中所标识的端点的协商过程来确定要使用的通信或传输协议,等等。
在操作420的至少某些实现中,可以确定所提供的定位符是否可用于检索团块。例如,可查询定位符中所标识的端点或者可发送检索团块的请求,以发起团块检索、团块状态或可用性的检查等等。如果可以确定团块不能被检索,这可能是例如定位符标识了离线的端点,或者团块由于某种其它原因而不能被检索,则在至少某些实现中,操作流程400可前进到操作430。如果可使用一个或多个定位符来检索团块,则该操作流程可前进到操作425。
在操作425的示例性实现中,可使用定位符来检索团块。该操作可以取决于各种特性用各种各样的方式来实现,这些特性包括但不限于,定位符中所提供的信息、所支持的或可用的通信或文件传输协议、等等。在某些实现中,检索团块可至少部分地通过使用团块下载模块来实现,该模块可类似于先前参考图1所描述的团块下载模块150和团块下载模块162或与其相同。
例如,在使用示例性团块下载模块的实现中,端点可向团块下载模块提供定位符,且团块下载模块然后可评估定位符中的信息并使用该信息来确定检索或下载所请求的团块的一种或多种方式。在一个相对简单的情况下,端点或团块下载模块可仅使用单个定位符来定位具有该团块的另一端点,向所标识的其它端点发送某种类型的网络通信(如可能的HTTP GET或文件系统文件检索请求),并作为响应接收所请求的团块。在这一实现中,以及在其它实现中,如果这一请求不成功或出于某种原因(例如可能是连接较慢)而被确定为较不优选,则还可以或可以改为使用一个或多个其它定位符。
在另一实现中,端点或团块下载服务可使用多个定位符来发起对不同端点的多个请求,包括可能对单个团块的不同(或相同)部分的单独的请求。在某些情况下,从多个端点获得同一团块的不同部分可使得团块的检索能更快地完成,或者可以在对任何特定单个端点有较少影响的情况下完成,或者可具有其它优点。
在至少某些团块检索实现或操作中,可使用一种或多种技术来最小化要传输的数据量或以其它方式进一步优化团块检索。例如,某些实现可使用诸如ZIP或其它压缩技术等数据压缩来检索较少数据。在同一或其它实现中,仅团块中从该团块的可能存在于请求端点上的副本变更的那些部分可从一个或多个其它端点请求或传送。这一“差异压缩”可使得即使在其中存在变更的数据的团块相对较大时也能够仅传送少量数据。
在某些实现中,端点可以向另一服务或端点通知团块检索或下载的状态。例如,端点可通知团块查找服务其已经检索了特定团块的部分或全部。使用这一信息,团块查找服务能够提供标识该端点的定位符来作为服务对同一团块的某一其它请求的一部分。在某些情况下,提供该信息的端点可以只在团块被完整检索时才这样做,而在其它情况或实现中,端点可在检索团块时周期性地提供信息,以使例如团块查找服务在检索了该团块的25%时、在检索了该团块的50%时等更新。在同一或其它实现中,传送到另一端点的信息可包括检索了团块的哪些部分的标识,如检索了团块的前50%、检索了团块的前10%和后10%,等等,并且这一标识进而可用于使得其它端点能从不同端点检索同一团块的各部分。
如果团块的检索在操作425的执行期间失败,则在某些情况下该操作流程可以结束。在其它实现中,可以用与先前描述的操作420的失败相似或相同的方式来解释检索失败。在这一实现中,如果团块检索在操作425期间失败,则该操作流程可前进到操作430(如图4中使用虚线所示的路径)。
如果出于各种原因中的一种或多种团块不能被检索,则操作流程400在某些情况下可前进到操作430。用于执行操作430的此类原因可包括上述那些原因,如当团块查找服务所标识的端点不能提供该团块时,这可能是因为这些端点不在线或不可用。在操作430的示例性实现中,端点可以请求团块高速缓存服务检索并高速缓存所请求的团块的副本。在某些实现中,这一团块高速缓存服务可以被至少某些端点更可靠地访问,并且因此可用作用于团块的有用中间或临时位置,希望检索该团块的端点可使用该位置来代替某一其它(可能不可用的)端点。
在某些此类实现中,团块高速缓存服务可以接受该请求并在可能时检索该团块本身。例如,团块高速缓存服务可以等待,直到最初标识的端点可用,然后可从该原始端点检索该团块(或者可指示该端点上传该团块)。可由团块高速缓存服务执行的某些示例性团块高速缓存服务实现和操作在本文的别处尤其参考图1和图7来描述。
在某些实现中,请求由团块高速缓存服务存储团块的端点稍后可再次执行操作415,并向团块查找服务查询可用于检索该团块的定位符。例如,端点可接收团块高速缓存服务可提供所需关块的通知(可能从像先前参考图1描述的通知服务140那样的一方)。如果团块高速缓存服务存储了该团块,则它可能已经告知了团块查找服务其具有该团块,并且因此团块查找服务可以向请求端点提供将该团块标识为可使用团块高速缓存服务来获得的定位符。最终,原始端点可从团块高速缓存服务检索该团块。
在其它实现中,使用包括其它更可靠或可用端点,如可能的像先前参考图1所描述的云存储服务在内的其它端点,来代替团块高速缓存服务,作为端点可从中检索团块的位置。
如果例如作为操作410的一部分确定不使用团块查找服务,则操作流程400可前进到操作435,在那里可使用可能不利用团块查找服务的各种其它机制来检索团块。例如,在某些实现中,一个或多个端点可试图使用可能不与团块查找服务相关联或不为其所知的某一存储来检索团块。在这一情况下,或在其它情况下,团块可使用包括先前所描述的那些在内的各种机制中的任一种来检索,如HTTP、FTP、对等“BitTorrent”类型的通信、或其它机制。另外,在别处变得可用的功能,如由团块高速缓存服务或其它服务功能提供的功能,也可在不使用团块查找服务的至少某些实现中使用。
应当注意,在某些实现中,可使用其它用于检索团块的方法来代替或补充先前参考图4所描述的示例性操作流程。这些其它方法中的至少某一些还可执行参考图4所描述的示例性操作中的一个或多个,或可使用一个或多个其它模块或服务,包括例如参考图1所描述的模块和服务。这些其它方法中的至少某一些还可执行其它指令或使用其它模块和服务。仅作为一个示例,端点可请求团块下载模块(可能像先前参考图1所描述的团块下载模块150或团块下载模块162)获得特定团块。在某些实现中,团块下载模块可能具有一个或多个可插入“驱动程序”,其每一个都可能用不同的方式来定位和/或获得所请求的团块。例如,一个驱动程序可使用团块查找服务来获得一组定位符,然后使用单个定位符来检索该团块;另一驱动程序也可使用团块查找服务并可能并行地或以BitTorrent或其它相似类型的机制使用多个定位符来检索团块;又一驱动程序可以不使用团块查找服务并且可用各种其它方式来定位并检索团块;等等。在至少某些此类实现中,团块下载模块可以用各种方式来确定要使用的驱动程序。例如,团块下载模块可向每一驱动程序查询对该驱动程序可能花费多久来检索团块的估计,并且每一驱动程序然后可返回所估计的时间或可能指示该驱动程序不能检索团块的某一值。使用这一返回的数据,团块下载模块可选取一个(或多个)驱动程序,并指示所选驱动程序实际检索该团块。
现在转向图5,所示是一示例性概括操作流程500,其包括可在维护和提供元数据时执行的各种操作。图5的以下描述可参考其它附图来进行。然而,应当理解,参考图5所描述的操作流程并不旨在限于用于参考其它附图所描述的元素。另外,尽管图5的示例性操作流程指示了特定执行次序,但在一个或多个替换实施例中操作可被不同地排序。此外,尽管该示例性操作流程包含多个步骤,但应认识到在某些实现中,这些操作中的至少某一些可被组合或同时执行,并且在同一或其它实现中,可以不执行某些步骤。
在操作510的示例性实现中,诸如先前参考图1描述的服务器端点110等端点可从另一端点获得元数据。例如,在某些实现中,获得元数据的端点可以是接收具有其它端点所传送的变更的元数据的服务器端点,如先前例如参考图2的操作215所描述的。此外,在某些实现中,此处参考操作流程400所描述的操作中的至少某一些可以由先前也参考图1所描述的示例性存储服务120来实现。(尽管该描述中的某一些将在操作流程400中接收元数据的端点称为“服务器端点”,但是应当理解,接收元数据的端点不必是服务器端点,也不必使别处描述的至少某些或全部功能可能与服务器端点相关联,等等)。
元数据可以使用适用于传送元数据的各种通信机制中的任一种来获得。例如,在某些实现中,与接收或获得端点相关联的HTTP服务器可以接受包含某一URL处的元数据的HTTP POST请求。在同一或其它实现中,另一端点可使用如FTP或一种或多种文件共享协议、电子邮件等另一协议来传送元数据。在某些实现中,接收端点可主动检索元数据,而非依赖于另一端点提交元数据。例如,获得端点可向某一其它端点发起HTTP GET请求,并作为响应被提供以元数据。
在操作515的至少某些实现中,所获得的元数据可以与服务器端点维护的元数据的副本合并。这一合并操作可导致在所获得的元数据中包含的变更并入可由执行操作流程500的端点维护并修改的元数据的另一副本中。元数据的这一本地副本可以用各种方式来维护,包括(在至少某些实现中)作为数据库中的行或记录、作为XML订阅源(或其它)文档的副本等等。在使用包括SSE信息的元数据的实现中,所获得的元数据可以使用SSE合并技术来与本地元数据合并。在某些实现中,这一SSE合并技术可以与先前尤其参考图3的操作320描述的SSE合并技术相同或相似。
在操作520的示例性实现中,先前注册或订阅了在所讨论的元数据变更时得到通知的一个或多个端点可使用一个或多个通知手段来得到通知。(在接收到这一通知之后,在某些实现中,端点可发起操作的执行以从服务器端点获得新更新的元数据并将新更新的元数据中的变更与该端点自己的本地元数据存储合并。这些操作可包括可能先前参考图3描述的那些操作中的至少某一些。)在至少某些其它实现中,包括不提供通知的那些实现,可以不通知订阅者。
在操作525的某些实现中,团块查找服务可以用关于所获得的元数据所标识的一个或多个团块的位置信息来更新,使得获得或使用该元数据的端点能够检索由该元数据引用或与其相关联的团块。即,例如,假定所获得的元数据包括引用一新团块的新项目。情况可以是当执行操作流程500时,所引用的团块仅存在于生成并向服务器端点传送了经更新的元数据的端点上。为使包括服务器端点或其它设备端点在内的任何端点能够检索该团块,该团块的(初始)位置可由包括向本文别处所描述的团块查找服务那样的团块查找服务在内的团块查找服务来存储。
最后,在操作530的示例性实现中,作为合并操作515的一部分创建的经更新的元数据可被传送到一个或多个端点。例如,同步该元数据所表示的数据的另一端点可向服务器端点提交对经更新的元数据的请求。这一请求可在该另一端点接收到元数据已变更的通知之后、在该另一端点轮询服务器端点并发现元数据已变更时等提交。服务器端点可以用各种方式来向该另一端点提供元数据,包括先前以及在本文别处描述的那些方式,如通过使用HTTP GET或POST请求和响应、文件共享协议、FTP、电子邮件、一个或多个其它某种通信机制等等。
现在转向图6,所示是一示例性概括操作流程600,其包括可在存储和提供与元数据所引用的团块相关联的位置和定位符时执行的各种操作。图6的以下描述可参考其它附图来进行。然而,应当理解,参考图6所描述的操作流程并不旨在限于用于参考其它附图所描述的元素。另外,尽管图6的示例性操作流程指示了特定执行次序,但在一个或多个替换实施例中操作可被不同地排序。此外,尽管该示例性操作流程包含多个步骤,但应认识到在某些实现中,这些操作中的至少某一些可被组合或同时执行,并且在同一或其它实现中,可以不执行某些步骤。
在操作610的示例性实现中,端点可接受与特定团块相关联的一个或多个位置。一般而言,这些位置可指定可在其中检索特定团块的至少一部分的端点。在至少某些实现中,一个或多个团块可使用一个或多个团块标识符来标识。接受一个或多个位置的端点可包括至少某些服务器端点,如先前参考图1描述的示例性服务器端点110。此外,与操作流程600相关联的至少某些操作在至少某些实现中可以由诸如也先前参考图1描述的示例性团块查找服务125等团块查找服务来实现。尽管操作流程600的某些操作此处可被描述为与示例性服务器端点或示例性团块查找服务相关联,但应理解,这些操作不必由服务器端点或团块查找服务来实现或执行,并且可改为由各种端点中的一个或多个或由这些端点中包括的模块或服务来实现或执行。
一个或多个团块位置可以从各种其它端点和过程接受或检索。例如,当服务器端点或存储服务处理来自另一端点的元数据时,它可以向该操作提供与它接收到的元数据所标识的一个或多个团块相关联的一个或多个位置(这一动作可以与例如先前参考图5描述的操作525相关联)。在另一示例中,当一端点从一个或多个其它端点获得一团块的部分或全部时,这可能是作为同步元数据和与该元数据相关联的团块的一部分,包括通过使用先前参考图4所描述的操作,则该端点还可用其自己的位置来更新团块查找服务,以使得其它端点能够从现在也获得了该团块的端点检索该团块的部分或全部(除了从例如最初创建该团块的端点接收之外)。
除了现在已经具有了该团块的至少一部分的端点的位置之外,更新团块查找服务的端点还可向团块查找服务提供其它信息。此类其它信息可包括例如在特定端点处可用的团块的一部分(或各部分)的标识(或整个团块可用的指示)、特定端点能够提供该团块的一个或多个替换表示的指示、等等。
在操作615的至少某些实现中,所接受的位置(以及可能其它所接受的数据)可由团块查找服务使用各种手段或机制中的一个或多个,包括作为数据库中的行或记录等来存储。
在操作620的示例性实现中,团块查找服务可以接收对与一个或多个团块相关联的定位符的请求。这些请求可从各种端点、模块或服务发送或传送。例如,设备端点可提交对特定团块的定位符的请求,使得设备端点能够同步由特定元数据所标识的团块。(设备端点然后可使用任何返回的定位符来实际检索该团块。)在另一示例中,团块高速缓存服务或云存储服务可请求定位符,以使团块高速缓存服务或云存储服务能够检索一个或多个团块。
在操作625的某些实现中,团块查找服务可标识与特定的所请求的团块相关联的一个或多个定位符。在某些实现中,该操作可至少部分地通过查找特定团块(可能使用与该团块相关联的团块标识符),并标识被注册为能够提供所请求的团块的每一端点的定位符来执行。例如,如果三个端点先前已注册为具有所请求的团块,则该操作可标识三个定位符,对三个端点中的每一个有一个定位符。
在某些实现中,所标识的定位符还可包括除仅仅用于标识与团块相关联的端点的手段之外的附加信息。例如,某些定位符可包括关于该团块的哪一(些)部分可从特定端点检索的信息,同一或其它定位符可包括关于可用于特定端点检索团块的一个或多个通信协议的信息,等等。
尽管在某些实现中团块查找服务可以仅例如标识可提供特定团块的每一端点的定位符,但在其它实现中,标识定位符的过程可例如使用附加信息或知识。例如,团块查找服务可使用关于元数据、关于服务器端点和设备端点等的各种知识,来过滤、优先化或以其它方式标识(可能是最合适的)定位符。在某些实现中,这一知识可至少部分地由诸如先前参考图1所描述的示例性知识存储模块145等知识存储来提供。
例如,假定多个端点先前注册为能够提供特定团块的各部分。还假定知识存储提供端点之一由通常使用高速和高带宽网络连接来连接到网络的工作站类台式计算机来实现;提供端点中的另一个是使用具有不同连接特性的各种网络来连接的膝上型计算机;以及第三提供端点是通常打开并连接到网络但使用其中数据传输与每单位金钱收费相关联的相对慢的连接的移动电话的知识。在这一示例中,操作625的至少某些实现可使用该知识以及可能的其它知识来过滤或优先化所标识的一个或多个定位符。例如,在一个实现中,可标识所有三个端点的定位符,但是它们可包括指示应首先使用台式计算机、应接着使用膝上型计算机、以及移动电话应仅被用作最后手段的优先级信息,或可以用此优先级信息来传送。在另一示例中,所标识的定位符甚至可以不包括特定端点,如本示例中的移动电话,而是可以仅标识台式和膝上型计算机的定位符。
也可使用其它信息或准则来标识一个或多个定位符,并且甚至可能确定是否究竟要返回任何定位符。例如,假定元数据包括引用被确定为危险的、不适当的、或出于某种原因不合需要的团块(例如,该团块可能包含含有病毒的可执行代码、可能包含具有反对内容的视频数据等等)的项目。在这一情况下,操作625的实现可以不标识该特定团块的定位符,即使一个或多个端点已经注册了能够提供所讨论的团块。以此方式,可使用团块查找服务来过滤或控制可在同步或传送数据时传送的内容。这一控制在例如其中端点可以在可能不涉及集中端点的情况下交换数据的分散或对等同步系统中可能很难或不可能实现。
最后,在操作630的示例性实现中,例如在操作625中标识的、作为操作620的一部分接收的一个或多个定位符可被传送到或被提供给一个或多个端点,包括做出请求的端点。
现在转向图7,所示是一示例性概括操作流程700,其包括可在将团块存储在高速缓存中并从高速缓存提供团块时执行的各种操作。图7的以下描述可参考其它附图来进行。然而,应当理解,参考图7所描述的操作流程并不旨在限于用于参考其它附图所描述的元素。另外,尽管图7的示例性操作流程指示了特定执行次序,但在一个或多个替换实施例中操作可被不同地排序。此外,尽管该示例性操作流程包含多个步骤,但应认识到在某些实现中,这些操作中的至少某一些可被组合或同时执行,并且在同一或其它实现中,可以不执行某些步骤。
在操作710的示例性实现中,端点可以接受或接收存储或高速缓存特定团块的请求。接收这一请求的端点可包括至少某些服务器端点,如先前参考图1描述的示例性服务器端点110。此外,与操作流程700相关联的至少某些操作在至少某些实现中可以由诸如也先前参考图1描述的示例性团块高速缓存服务130等团块高速缓存服务来实现。尽管操作流程700的某些操作此处可被描述为与示例性服务器端点或示例性团块高速缓存服务相关联,但应理解,这些操作不必由服务器端点或团块高速缓存服务来实现或执行,并且可改为由各种端点中的一个或多个或由这些端点中包括的模块或服务来实现或执行。
可从包括服务器端点和设备端点在内的各种端点接收高速缓存特定团块的请求。例如,在一个示例中,设备端点可在其无法从另一端点获得团块本身时(例如先前所描述的在两个设备端点同时不在线的情况)提交高速缓存该团块的请求。在另一示例中,存储服务或其它服务或模块可出于各种原因中的一种或多种来提交高速缓存一特定团块的请求。例如,可能使用像先前参考图1描述的知识存储模块145那样的知识存储所维护的知识,存储服务可具有特定端点经常不可用的知识。在这一情况下,以及可能在其它情况下,当这一端点提供与新的或经变更的团块相关联的元数据时,存储服务可甚至在另一端点请求团块之前主动地请求高速缓存一个或多个特定的团块。这一实现可使得希望检索这一团块的设备端点不必做出高速缓存该团块本身的请求。
在操作715的某些实现中,团块高速缓存服务可检索所请求的团块。检索团块可用各种方式实现。在某些实现中,团块高速缓存服务可执行与先前参考图4描述的那些操作相同或相似的一个或多个操作。这些操作可例如使用团块查找服务来标识团块在那里可用的一个或多个位置,并且可从这些位置检索团块。
在同一或其它实现中,端点可周期性地与团块高速缓存服务通信,或可接收与团块高速缓存服务的通信是必需的通知,并且可提供或上传团块高速缓存服务所请求的团块。例如,设备端点可接收团块高速缓存服务期望设备端点上可用的特定团块的通信或通知,并且因此可作为操作715的一部分使得该团块可供团块高速缓存服务检索,或者可作为操作715的另一实现的一部分主动将该团块上传到或提供给团块高速缓存服务。
在某些实现中,团块高速缓存服务可使用关于同步系统、元数据、端点等的知识,包括由诸如先前参考图1描述的示例性知识存储145等知识存储维护的知识,来更高效地检索要高速缓存的团块。在仅一个示例中,团块高速缓存服务可能不立即试图高速缓存某一其它端点所请求的团块。相反,团块高速缓存服务可等待,直到如有空闲带宽可用于可提供该团块的一个或多个端点,或直到有相对便宜的带宽可用,或直到具有足够计算能力来服务该请求的端点可用,等等。
在操作720的实现中,所检索的团块可使用各种存储机制或手段中的任一个来存储。在某些实现中,团块可被存储在数据库中、可作为文件系统中的文件来存储、或可用某种其它方式来存储。在至少某些实现中,团块高速缓存服务可使用各种高速缓存技术来确定例如特定团块应被存储多久。例如,团块高速缓存服务的一个实现可存储团块直到其可用存储空间满,并且然后可使用包括LRU算法在内的一个或多个算法来确定要删除哪些团块以使空间可用于其它团块。在某些实现中,最近检索或访问的团块可被保持,而最近未被检索的团块可被删除。在同一或其它实现中,团块可以与定义有多少端点可能希望检索该团块的引用计数相关联,并且在某些情况下,团块可以在指定数量的端点检索了该团块之后被删除。在同一或又一些实现中,可使用各种其它技术和算法来管理与团块高速缓存服务相关联的存储。
在至少某些实现中,团块高速缓存服务可以在团块高速缓存服务存储了特定团块的至少一部分并且可向其它端点提供该团块的所存储的部分时用与团块高速缓存服务相关联的位置来更新示例性团块查找服务。使用这一位置,团块查找服务能够向端点提供与团块高速缓存服务相关联的定位符,并且这一端点能够由此从该团块高速缓存服务检索团块。在某些实现中,端点还能够在不使用团块查找服务的情况下从团块高速缓存服务检索团块。
在操作725的示例性实现中,在高速缓存了特定的一个或多个团块之后的某一点,团块高速缓存服务可以从一个或多个端点接收对所高速缓存的团块的全部或一部分的请求,并且可在操作730的示例性实现中向请求者提供所请求的团块(或该团块的部分)。与高速缓存的团块相关联的请求和响应可以用各种各样的方式,使用各种各样的通信机制等来实现,包括本文别处描述的机制,如HTTP传输、FTP传输、BitTorrent类型的传输等等。
现在转向图8,所示是一示例性概括操作流程800,其包括可在将团块存储在云存储中并从云存储提供数据团块时执行的各种操作。图8的以下描述可参考其它附图来进行。然而,应当理解,参考图8所描述的操作流程并不旨在限于用于参考其它附图所描述的元素。另外,尽管图8的示例性操作流程指示了特定执行次序,但在一个或多个替换实施例中操作可被不同地排序。此外,尽管该示例性操作流程包含多个步骤,但应认识到在某些实现中,这些操作中的至少某一些可被组合或同时执行,并且在同一或其它实现中,可以不执行某些步骤。
在操作810的示例性实现中,端点可接受或接收将特定团块的部分或全部存储“在云中”或在云存储中的请求。接受该请求的端点或模块或服务在某些情况下可由可能像服务器端点110那样的服务器端点来实现,并且与操作流程800相关联的至少某些操作可由示例性云存储模块135来实现或提供,这两者都在先前参考图1描述。尽管操作流程800的某些操作此处可被描述为与示例性服务器端点或示例性云存储服务相关联,但应理解,这些操作不必由服务器端点或云存储服务来实现或执行,并且可改为由各种端点中的一个或多个或由这些端点中包括的模块或服务来实现或执行。
尽管操作流程800中的许多操作可以看似为类似于团块高速缓存服务操作流程700中的那些操作,但云存储服务可与团块高速缓存服务不同地使用。例如,与团块高速缓存服务提供的临时存储相反,云存储服务可通过例如除非例如用户具体指示否则不删除所存储的团块;通过可能在单独的盘驱动器或其它存储机制上维护所存储的数据的多个副本;等等,来为团块(以及可能的其它数据)提供非临时或“可靠”存储。
在操作815的至少某些实现中,云存储服务可检索或被提供以团块数据,包括在某些情况下的与在操作810接收到的请求相关联的团块的一部分或全部。云存储服务可用各种方式来检索团块,包括在某些情况下通过使用团块查找服务、团块下载模块、或可能先前例如参考图4描述的某些操作。在其它实现中,云存储服务可使用各种其它通信或文件传输机制中的任一种来检索或被提供以团块。在至少某些实现中,可使用通信系统、元数据、团块等的知识,可能包括与如先前参考图1描述的知识存储模块145等示例性知识存储相关联的知识,来可能以类似于已参考团块高速缓存服务描述的那些方式的方式或以其它方式更高效地获得所请求的团块。
在操作820的示例性实现中,所检索或提供的团块可由云存储服务以各种方式来存储。例如,如先前所介绍的,云存储服务可使用多个冗余存储来存储数据,包括团块。另外,在某些情况下,云存储服务可在其存储了团块时向示例性团块查找服务更新或提供信息,以使团块查找服务在某些实现中可向其它端点提供引用或标识云存储服务的定位符,之后其它端点在某些情况下可从云存储服务检索团块。
在某一时间点,在操作825的至少某些实现中,云存储服务可接收提供所存储的团块或所存储的团块的一部分的请求。响应于这一请求,云存储服务然后在操作830的示例性实现中可能通过使用包括本文别处描述的在内的各种通信或传输机制来提供所请求的团块数据。
现在转向图9,所是示是一示例性概括操作流程900,其包括可在不使用示例性服务器端点提供的完整元数据或至少某些功能的情况下检索团块时执行的各种操作。图9的以下描述可参考其它附图来进行。然而,应当理解,参考图9所描述的操作流程并不旨在限于用于参考其它附图所描述的元素。另外,尽管图9的示例性操作流程指示了特定执行次序,但在一个或多个替换实施例中操作可被不同地排序。此外,尽管该示例性操作流程包含多个步骤,但应认识到在某些实现中,这些操作中的至少某一些可被组合或同时执行,并且在同一或其它实现中,可以不执行某些步骤。
尽管此处的描述中的大部分描述了使用元数据的团块数据检索,但在至少某些实现中,对整个元数据集的使用并不总是检索团块时所必需的。相反,在某些情况下,可以只需要最少量数据,如仅团块标识符,来利用各种端点功能,包括例如团块查找服务和可能的各种可提供一团块的全部或部分的端点。在某些环境中,使用此类功能可使端点能够更快地、更便宜地、或在某种程度上更高效地检索团块。
在操作910的示例性实现中,端点可通过某些手段来获得团块标识符。在某些先前所描述的实现中,团块标识符被包括在可在不同端点之间同步的元数据中。这些同步的元数据提供了端点可用于获得团块标识符的至少一种机制。然而,在各种相同或其它实现中,包括不同步元数据等的那些实现中,团块标识符可以用各种其它方式来提供。例如,用户可向另一用户发送包括团块标识符的电子邮件或即时消息,团块标识符进而标识团块,如可能的音频或视频剪辑、文字处理文档或电子表格、某种其它文件等等。
在操作915的至少某些实现中,可以确定是否应使用团块查找服务来检索团块。例如,某些端点可能无法访问或甚至不了解团块查找服务。在这一情况下,以及在其它情况中,包括在团块查找服务可用但未被使用时,可以做出不使用团块查找服务的判定,并且操作流程900可前进到操作930。如果要使用团块查找服务来检索团块,则操作流程900可前进到操作920。
作为其中团块查找服务可能被使用或可能未被使用的环境的一个示例,考虑web浏览器的示例。许多web浏览器包括允许使用诸如HTTP等协议来下载或检索资源的可执行代码。采用这一web浏览器,可对单个服务器,或至少对单个URL做出HTTP请求,并且可从单个服务器接收响应。然而,在某些情况下,例如在检索可能较大的团块时,使用一种或多种其它机制来下载团块可能更高效且更快,这些机制包括如BitTorrent或BitTorrent类传输实现等机制,其中特定团块的不同片断从多个不同端点检索或由多个不同端点提供。
然而,尽管用于下载文件或团块的这些机制可能是合乎需要的,但web浏览器可能未本机包括允许此类或其它类型的下载的功能。在某些情况下,有可能向web浏览器或某一其它应用程序添加功能,该功能例如通过使得web浏览器或应用程序能支持对团块查找服务(并且还可能有团块下载模块,如以下更详细描述的)的使用来增加此能力。例如,web浏览器可支持用户添加的“插件”或其它代码。一个这样的插件可实现对团块查找服务的支持,并且在被安装时,可以使web浏览器能使用团块查找服务(并且因此前进到操作920,而非前进到操作930)。
在操作920的一个示例性实现中,检索团块的端点可能通过向团块查找服务提供如团块标识符等标识所需团块的某种数据来向团块查找服务查询或询问与所需团块相关联的一个或多个定位符。这一操作在至少某些实现中可以用与其中例如实现先前参考图4描述的操作415的方式相似或相同的方式来实现。
然后,在操作925的示例性实现中,可使用所获得的定位符中的一个或多个,以及在某些情况下可使用团块下载模块来实际检索团块。这一操作在至少某些实现中可以用与其中例如实现先前参考图4描述的操作425的方式相似或相同的方式来实现。
在某些实现中,端点可在团块不能被下载或者团块检索失败的情况下采取附加动作。例如,如果团块查找服务未提供任何定位符,或者仅提供了不能用于实际检索团块的定位符(由于网络条件、由于定位符所标识的端点不可用等等),则检索团块的端点例如可请求团块高速缓存服务存储该团块,并然后试图在稍后从团块高速缓存服务检索该团块。这一机制先前参考例如图4来描述,并且未在图9中示出。
如果端点成功地检索到团块,则它可用附加信息来更新团块查找服务,以使团块查找服务在某些情况下可在其它端点请求同一团块时将该端点标识为该团块的源。采用这一实现,办公室中的一个用户有可能例如下载或检索大文件或团块,并且使如同一办公室中的其它用户从第一用户而非从可能位于一个或多个其它网络上的别处的某一其它端点检索该团块。在这一示例中,在第一用户检索到团块之后,与第一用户相关联的端点可以向团块查找服务提供标识该端点的信息。当第二或稍后的用户向团块查找服务请求同一团块时,团块查找服务可以提供标识该第一用户的端点的定位符。在某些实现中,团块查找服务可通过使用包括知识存储所维护和提供的知识在内的、表明第一用户的端点可能在地理上更靠近原始端点、使用比原始端点更快的网络连接来连接到第二端点等的知识,来提供这一定位符。
如果未使用团块查找服务,则操作流程900可前进到操作930。在操作930的示例性实现中,团块可使用一个或多个不直接(但在某些实现中间接)使用团块查找服务或团块下载模块的文件传输或团块检索机制来检索。此类机制可包括HTTP、FTP、文件共享或传输协议等等。例如,在团块标识符是类似于“http://www.els.live.com/ABC123”的样子的情况下,端点可简单地像该团块标识符所包含的URL发起HTTP请求。在某些实现中,响应该对团块的请求的服务器端点或HTTP服务器然后可被配置成通过提取标识符(如“ABC123”)并使用该标识符来定位所请求的团块来使用该特定形式的URL,然后最后以HTTP响应返回团块。(在某些情况下,服务器端点本身可通过使用与例如先前参考图4描述的团块检索操作相同或类似的操作来定位团块。在同一或其它实现中,服务器端点可能仅返回存在于特定存储位置,如团块高速缓存服务或云存储服务中的团块。)
示例计算环境
现在转向图10,该图和相关描述旨在提供其中可实现此处所描述的各种技术的示例性计算环境的简要概括描述。尽管并非所需,但各技术中至少部分地在诸如程序模块等由控制器、处理器、个人计算机或如图10所示的计算设备1000等其它计算设备来执行的计算机可执行指令的一般上下文中描述。
一般而言,程序模块包括执行特定任务、显示特定信息、或实现特定抽象数据类型的例程、程序、对象、组件、用户界面、数据结构等等。由程序模块执行的操作先前已借助一个或多个框图和操作流程图来描述。
本领域的技术人员可以按可被包含在一种或多种形式的计算机可读介质中的计算机可执行指令的形式来实现该描述、框图和操作流程。如此处所使用的,计算机可读介质可以是可存储或包含以可由计算机访问和理解的形式编码的信息的任何介质。计算机可读介质的典型形式包括但不限于易失性与非易失存储器两者、包括可移动和/或不可移动介质在内的数据存储设备、以及通信介质。
通信介质具体化经调制数据信号如载波或其它传输机制中的计算机可读信息,并且包括任何信息传递介质。术语“已调制数据信号”指的是其一个或多个特征以在信号中编码信息的方式被设定或更改的信号。作为示例而非限制,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线介质,诸如声学、RF、红外线和其它无线介质。
图10所示的计算设备1000在其最基本的配置中包括至少一个处理单元1002和存储器1004。在某些实现中,计算设备1000可实现例如先前参考图1描述的端点,如服务器端点110、设备端点A 160、设备端点B 170等中的一个的至少一部分。在某些实现中,处理单元1002可以是存在于例如包括台式和膝上型计算机在内的各种计算机上的通用中央处理单元(CPU)。取决于计算设备的确切配置和类型,存储器1004可以是易失性的(诸如RAM)、非易失性的(诸如ROM、闪存等)或是两者的某种组合。该最基本配置在图10中由虚线1006来例示。另外,计算设备1000还可具有附加特征和功能。例如,计算设备1000还可包含附加存储(可移动和/或不可移动),包括但不限于磁盘、光盘或磁带。这样的附加存储在图10中由可移动存储1008和不可移动存储1010示出。
计算设备1000还可包含允许计算设备1000与其它设备和服务通信的一个或多个通信连接1012。例如,计算设备可具有到各种通信装置或通信设备的一个或多个连接,包括例如到先前参考图1描述的到端点的连接或在这些端点之间的连接。计算设备1000还可具有一个或多个输入设备1014,如像照相机或扫描仪那样的图像输入设备、键盘、鼠标、笔、包括话筒阵列在内的语音输入设备、触摸输入设备等等。诸如显示器、扬声器、打印机等一个或多个输出设备1016也可以被包括在计算设备1000中。
本领域的技术人员可以理解,此处所描述的技术可以用除图10所示的计算设备1000之外的计算设备来实施。例如,但非限制,此处所描述的技术同样可以在包括移动电话和PDA在内的手持式设备、多处理器系统、基于微处理器的或可编程消费电子产品、网络PC、小型机、大型计算机等中实施。这些计算设备中的每一个可以在某一细节水平由图10的系统来描述,或可被不同地描述。
此处所描述的技术还能在其中操作由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。在分布式计算环境中,程序模块可以位于本地和远程设备中。
尽管此处被描述为以软件实现,但还可以理解,此处所描述的技术可替换地全部或部分被实现为硬件、固件、或软件、硬件和/或固件的各种组合。
尽管在附图中例示且在上文中描述了系统和方法的一些特定实现,但将会理解,示出和描述的系统和方法不限于所述的特定实现,而是能够在不脱离所附权利要求书阐述和定义的精神的情况下作出众多重新布置、修改和替换。
Claims (20)
1.一种用于服务器辅助的对等同步的方法,包括:
从服务器端点获得元数据,其中所述元数据标识一团块并且所述团块不被包括在所述元数据中;
将所述元数据与由第一端点本地维护的本地元数据合并;
向团块查找服务询问包括与所述团块相关联的至少一个定位符的集合;以及
在第一端点上,向由所述至少一个定位符的集合中的特定定位符标识的第二端点检索所述团块的一部分。
2.如权利要求1所述的方法,其特征在于,还包括:
在所述团块的所述部分最初不能被检索时,请求团块高速缓存服务存储所述团块的至少第二部分。
3.如权利要求1所述的方法,其特征在于,检索所述团块的所述部分还包括:
从不同于所述第二端点的第三端点检索所述团块的、不同于所述团块的所述部分的第二部分。
4.如权利要求1所述的方法,其特征在于,所述检索是由团块下载模块来实现的,所述团块下载模块使用第一团块检索机制来检索所述团块的所述部分,并且所述团块下载模块具有使用不同于所述第一团块检索机制的第二团块检索机制来检索所述团块的第二部分和第二团块的一部分中的至少一个的能力。
5.如权利要求1所述的方法,其特征在于,还包括:
在所述团块的所述部分被检索到之后,告知所述团块查找服务所述团块的所述部分可向所述第一端点检索到。
6.如权利要求1所述的方法,其特征在于,还包括:
响应于来自第三端点的、对所述团块的所述部分的请求,向所述第三端点提供所述团块的所述部分。
7.如权利要求1所述的方法,其特征在于,还包括:
在所述第一端点上接收所述元数据已在所述服务器端点上更新的通知,并且所述通知发起所述获得、所述合并、所述询问和所述检索操作。
8.如权利要求1所述的方法,其特征在于,还包括:
执行对与所述本地元数据相关联的数据的本地变更;
更新所述本地元数据以形成经更新的本地元数据,并更新所述第一端点上的所述团块的第二部分以使所述经更新的本地元数据和所述团块的所述第二部分包括所述本地变更;以及
将所述经更新的本地元数据传送到所述服务器端点。
9.一种用于服务器辅助的对等同步的方法,包括:
在服务器端点上从第一端点获得元数据,其中所述元数据标识一团块且所述团块不被包括在所述元数据中;
将所述元数据与由所述服务器端点维护的服务器元数据合并;以及
用标识所述第一端点的位置更新团块查找服务。
10.如权利要求9所述的方法,其特征在于,还包括:
将所述服务器元数据传送到不同于所述第一端点的第二端点。
11.如权利要求9所述的方法,其特征在于,还包括:
从请求者接收对标识可从何处检索所述团块的一部分的定位符的请求;
使用所述团块查找服务来标识所述定位符;以及
将所述定位符传送到所述请求者。
12.如权利要求11所述的方法,其特征在于,所述定位符是由所述团块查找服务使用与所述第一端点相关联的第一知识特性来标识的,并且未标识与第二端点相关联且标识了可从何处检索所述团块的第二部分的第二定位符,因为与所述第二端点相关联的第二知识特性与所述第一知识特性相比较不优选。
13.如权利要求9所述的方法,其特征在于,还包括:
接受标识第二端点的第二位置,其中所述第二端点存储所述团块的第二部分并且所述团块的所述第二部分可从所述第二端点检索;
接收对标识可从何处检索所述团块的至少一个定位符的请求;
标识与所述位置相关联的第一定位符以及与所述第二位置相关联的第二定位符;以及
响应于所述请求传送所述第一定位符和所述第二定位符。
14.如权利要求9所述的方法,其特征在于,还包括:
接受高速缓存所述团块的一部分的请求;
检索所述团块的所述部分;
将所述团块的所述部分存储在团块高速缓存中;以及
用标识所述团块高速缓存的第二位置来更新所述团块查找服务。
15.如权利要求14所述的方法,其特征在于,提供端点是使用与所述提供端点相关联的知识特性来标识的,并且所述团块的所述部分是从所述提供端点检索的,其中提供端节点先前注册为能够提供特定团块的各部分。
16.如权利要求9所述的方法,其特征在于,还包括:
接受将所述团块的一部分存储在非临时云存储数据存储中的请求;
检索所述团块的所述部分;以及
将所述团块的所述部分存储在所述云存储数据存储中。
17.如权利要求9所述的方法,其特征在于,还包括:
在所述合并之后通知订阅端点所述服务器元数据已被修改;以及
将所述服务器元数据传送到所述订阅端点。
18.如权利要求14所述的方法,其特征在于,所述检索是由团块下载模块来实现的,所述团块下载模块使用第一团块检索机制来检索所述团块的所述部分,并且所述团块下载模块具有使用不同于所述第一团块检索机制的第二团块检索机制来检索所述团块的第二部分和第二团块的一部分中的至少一个的能力。
19.如权利要求14所述的方法,其特征在于,还包括:
将所述团块的所述部分从所述团块高速缓存传送到不同于所述第一端点的第二端点。
20.一种用于服务器辅助的对等同步的方法,包括:
从第一端点获得元数据,其中所述元数据标识一团块并且所述团块不被包括在所述元数据中;
将所述元数据与由存储服务维护的服务器元数据合并;
用标识所述第一端点的位置来更新团块查找服务;
接受高速缓存所述团块的一部分的请求;
从所述第一端点检索所述团块的所述部分;
使用与团块高速缓存服务相关联的存储来存储所述团块的所述部分;以及
用标识所述团块高速缓存服务的第二位置来更新所述团块查找服务。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/766,985 US8239479B2 (en) | 2007-06-22 | 2007-06-22 | Server-assisted and peer-to-peer synchronization |
US11/766,985 | 2007-06-22 | ||
PCT/US2008/067636 WO2009002831A2 (en) | 2007-06-22 | 2008-06-20 | Server-assisted and peer-to-peer synchronization |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101689164A CN101689164A (zh) | 2010-03-31 |
CN101689164B true CN101689164B (zh) | 2013-03-27 |
Family
ID=40136434
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200880021302XA Active CN101689164B (zh) | 2007-06-22 | 2008-06-20 | 服务器辅助的对等同步 |
Country Status (11)
Country | Link |
---|---|
US (2) | US8239479B2 (zh) |
EP (1) | EP2160688A4 (zh) |
JP (1) | JP2010531026A (zh) |
KR (1) | KR20100033966A (zh) |
CN (1) | CN101689164B (zh) |
AU (1) | AU2008268539B2 (zh) |
BR (1) | BRPI0811308A2 (zh) |
CA (1) | CA2687859A1 (zh) |
RU (1) | RU2471227C2 (zh) |
TW (1) | TW200907719A (zh) |
WO (1) | WO2009002831A2 (zh) |
Families Citing this family (69)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8677270B2 (en) | 2007-05-04 | 2014-03-18 | Microsoft Corporation | Live companion user interface |
US8954507B2 (en) * | 2007-06-22 | 2015-02-10 | Microsoft Corporation | Gathering and using awareness information |
US20090112870A1 (en) * | 2007-10-31 | 2009-04-30 | Microsoft Corporation | Management of distributed storage |
US8195608B2 (en) * | 2008-06-02 | 2012-06-05 | International Business Machines Corporation | File synchronization between multiple nodes |
US8495036B2 (en) * | 2008-10-24 | 2013-07-23 | Microsoft Corporation | Blob manipulation in an integrated structured storage system |
US8620884B2 (en) * | 2008-10-24 | 2013-12-31 | Microsoft Corporation | Scalable blob storage integrated with scalable structured storage |
US9614924B2 (en) | 2008-12-22 | 2017-04-04 | Ctera Networks Ltd. | Storage device and method thereof for integrating network attached storage with cloud storage services |
US10783121B2 (en) * | 2008-12-22 | 2020-09-22 | Ctera Networks, Ltd. | Techniques for optimizing data flows in hybrid cloud storage systems |
US8762642B2 (en) * | 2009-01-30 | 2014-06-24 | Twinstrata Inc | System and method for secure and reliable multi-cloud data replication |
US8769055B2 (en) * | 2009-04-24 | 2014-07-01 | Microsoft Corporation | Distributed backup and versioning |
US8935366B2 (en) * | 2009-04-24 | 2015-01-13 | Microsoft Corporation | Hybrid distributed and cloud backup architecture |
EP2252031A1 (en) * | 2009-05-15 | 2010-11-17 | Thomson Licensing | Device and method for controlling dissemination of data by transfer of sets of instructions between peers having wireless communication capacities |
US20100306253A1 (en) * | 2009-05-28 | 2010-12-02 | Hewlett-Packard Development Company, L.P. | Tiered Managed Storage Services |
US20110070820A1 (en) * | 2009-09-23 | 2011-03-24 | Qualcomm Incorporated | System and apparatus for power-efficiently delivering personalized contents in a broadcast network |
US8266290B2 (en) * | 2009-10-26 | 2012-09-11 | Microsoft Corporation | Scalable queues on a scalable structured storage system |
US8516137B2 (en) | 2009-11-16 | 2013-08-20 | Microsoft Corporation | Managing virtual hard drives as blobs |
US8621098B2 (en) * | 2009-12-10 | 2013-12-31 | At&T Intellectual Property I, L.P. | Method and apparatus for providing media content using a mobile device |
TWI484335B (zh) * | 2010-01-07 | 2015-05-11 | Alibaba Group Holding Ltd | Cached data processing method, processing system, and means |
US20110246721A1 (en) * | 2010-03-31 | 2011-10-06 | Sony Corporation | Method and apparatus for providing automatic synchronization appliance |
JP5592493B2 (ja) * | 2010-04-13 | 2014-09-17 | 株式会社日立製作所 | ストレージネットワークシステム及びその制御方法 |
US8650311B2 (en) * | 2010-04-22 | 2014-02-11 | Cisco Technology, Inc. | Client device configured to connect with a home network |
KR101697979B1 (ko) * | 2010-11-23 | 2017-01-19 | 삼성전자주식회사 | 네트워크로 연결 가능한 기기에서 데이터를 동기화하기 위한 장치 및 방법 |
KR101502895B1 (ko) | 2010-12-22 | 2015-03-17 | 주식회사 케이티 | 복수의 오류 복제본으로부터 오류를 복구하는 방법 및 상기 방법을 이용하는 스토리지 시스템 |
KR101544480B1 (ko) | 2010-12-24 | 2015-08-13 | 주식회사 케이티 | 복수 개의 프락시 서버를 포함하는 분산 저장 시스템 및 그 오브젝트 관리 방법 및 컴퓨터에 의하여 독출가능한 저장 매체 |
KR101585146B1 (ko) | 2010-12-24 | 2016-01-14 | 주식회사 케이티 | 오브젝트를 복수 개의 데이터 노드들의 위치에 기반하여 분산 저장하는 분산 저장 시스템 및 그 위치 기반 분산 저장 방법 및 컴퓨터에 의하여 독출 가능한 저장 매체 |
KR101483127B1 (ko) | 2011-03-31 | 2015-01-22 | 주식회사 케이티 | 클라우드 스토리지 시스템에서 리소스를 고려한 자료분배방법 및 장치 |
KR101544483B1 (ko) | 2011-04-13 | 2015-08-17 | 주식회사 케이티 | 분산 저장 시스템의 복제 서버 장치 및 복제본 생성 방법 |
KR101544485B1 (ko) | 2011-04-25 | 2015-08-17 | 주식회사 케이티 | 클라우드 스토리지 시스템에서 복수개의 복제본을 분산 저장하는 방법 및 장치 |
US9020892B2 (en) * | 2011-07-08 | 2015-04-28 | Microsoft Technology Licensing, Llc | Efficient metadata storage |
US8838764B1 (en) | 2011-09-13 | 2014-09-16 | Amazon Technologies, Inc. | Hosted network management |
US9002790B2 (en) * | 2011-09-14 | 2015-04-07 | Google Inc. | Hosted storage locking |
US9294307B2 (en) * | 2011-10-07 | 2016-03-22 | Microsoft Technology Licensing, Llc | Synchronization of conversation data |
US10271293B2 (en) * | 2011-11-18 | 2019-04-23 | Apple Inc. | Group formation within a synchronized hierarchy of peer-to-peer devices |
US20130132500A1 (en) | 2011-11-18 | 2013-05-23 | Apple Inc. | Selection of a master in a peer-to-peer network environment |
US9516615B2 (en) | 2011-11-18 | 2016-12-06 | Apple Inc. | Selection of synchronization stations in a peer-to-peer network environment |
KR101944403B1 (ko) * | 2012-01-04 | 2019-02-01 | 삼성전자주식회사 | 클라우드 시스템을 이용하는 단말기의 장치 및 방법 |
US9258144B2 (en) * | 2012-02-23 | 2016-02-09 | Infosys Limited | Methods, systems and computer-readable media for integrating a composite MIME message |
KR101928915B1 (ko) * | 2012-02-24 | 2019-03-12 | 삼성전자 주식회사 | 휴대단말기의 데이터 처리 장치 및 방법 |
US8949179B2 (en) * | 2012-04-23 | 2015-02-03 | Google, Inc. | Sharing and synchronizing electronically stored files |
US9471591B2 (en) * | 2012-05-02 | 2016-10-18 | Microsoft Technology Licensing, Llc | Iterative disk upload based on differencing disk format |
CN102694860A (zh) * | 2012-05-25 | 2012-09-26 | 北京邦诺存储科技有限公司 | 一种云存储的数据处理方法、设备及系统 |
CN102724319B (zh) * | 2012-06-20 | 2015-03-18 | 新浪网技术(中国)有限公司 | 一种数据同步方法、相关存储服务器及系统 |
US9262429B2 (en) * | 2012-08-13 | 2016-02-16 | Microsoft Technology Licensing, Llc | De-duplicating attachments on message delivery and automated repair of attachments |
US9779124B2 (en) * | 2012-08-27 | 2017-10-03 | Lg Electronics Inc. | Mobile terminal and control method thereof |
WO2014138187A1 (en) | 2013-03-05 | 2014-09-12 | Christmas Coy | System and method for cubic graphical user interfaces |
CA2918687C (en) | 2013-07-18 | 2020-04-14 | Luke Malpass | System and method for multi-angle videos |
US10095873B2 (en) | 2013-09-30 | 2018-10-09 | Fasetto, Inc. | Paperless application |
US11379425B1 (en) * | 2013-12-18 | 2022-07-05 | Open Text Corporation | Optimizing synchronization of content management servers |
US9584402B2 (en) | 2014-01-27 | 2017-02-28 | Fasetto, Llc | Systems and methods for peer to peer communication |
CN103927288B (zh) * | 2014-04-30 | 2018-12-07 | 惠州Tcl移动通信有限公司 | 一种移动设备之间信息转移和共享的方法及系统 |
TWI599892B (zh) * | 2014-06-25 | 2017-09-21 | D-Link Corp | Home network system file management and sharing methods |
CA2954650C (en) * | 2014-07-10 | 2022-08-30 | Fasetto, Llc | Systems and methods for message editing |
CN107006063B (zh) | 2014-10-06 | 2021-08-24 | 法斯埃托股份有限公司 | 用于便携式存储设备的系统和方法 |
US10437288B2 (en) | 2014-10-06 | 2019-10-08 | Fasetto, Inc. | Portable storage device with modular power and housing system |
CN107852421B (zh) | 2015-03-11 | 2021-02-05 | 法斯埃托股份有限公司 | 用于web api通信的系统和方法 |
US10216709B2 (en) | 2015-05-22 | 2019-02-26 | Microsoft Technology Licensing, Llc | Unified messaging platform and interface for providing inline replies |
US20160344677A1 (en) | 2015-05-22 | 2016-11-24 | Microsoft Technology Licensing, Llc | Unified messaging platform for providing interactive semantic objects |
WO2017096245A1 (en) | 2015-12-03 | 2017-06-08 | Fasetto, Llc | Systems and methods for memory card emulation |
CN105635278A (zh) * | 2015-12-30 | 2016-06-01 | 深圳市瑞驰信息技术有限公司 | 一种管理存储系统的元数据的方法以及元数据服务器 |
WO2018098313A1 (en) | 2016-11-23 | 2018-05-31 | Fasetto, Llc | Systems and methods for streaming media |
US11708051B2 (en) | 2017-02-03 | 2023-07-25 | Fasetto, Inc. | Systems and methods for data storage in keyed devices |
WO2019079628A1 (en) | 2017-10-19 | 2019-04-25 | Fasetto, Inc. | PORTABLE ELECTRONIC DEVICE CONNECTING SYSTEMS |
CN112292708B (zh) | 2018-04-17 | 2022-06-17 | 法斯埃托股份有限公司 | 具有实时反馈的演示系统和方法 |
CN109462640B (zh) * | 2018-10-29 | 2021-07-20 | 上海掌门科技有限公司 | 一种元数据同步方法、数据端、交互系统及介质 |
KR102041453B1 (ko) * | 2018-12-07 | 2019-11-27 | 삼성전자 주식회사 | 휴대단말기의 데이터 처리 장치 및 방법 |
US11057495B2 (en) | 2019-05-01 | 2021-07-06 | Ciena Corporation | Selecting where to process data associated with Internet of Things (IoT) devices |
US11075812B2 (en) * | 2019-06-20 | 2021-07-27 | Kaloom Inc. | Server and methods for synchronizing networking information with client devices |
CN110647514B (zh) * | 2019-08-23 | 2022-07-08 | 北京浪潮数据技术有限公司 | 一种元数据更新方法、装置及元数据服务器 |
CN111245707A (zh) * | 2020-01-08 | 2020-06-05 | 北京小米移动软件有限公司 | 邮件传输方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6356946B1 (en) * | 1998-09-02 | 2002-03-12 | Sybase Inc. | System and method for serializing Java objects in a tubular data stream |
CN1480859A (zh) * | 2002-09-03 | 2004-03-10 | 鸿富锦精密工业(深圳)有限公司 | 分布式文件同步系统及方法 |
Family Cites Families (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5682524A (en) * | 1995-05-26 | 1997-10-28 | Starfish Software, Inc. | Databank system with methods for efficiently storing non-uniform data records |
US6295541B1 (en) * | 1997-12-16 | 2001-09-25 | Starfish Software, Inc. | System and methods for synchronizing two or more datasets |
US6275831B1 (en) * | 1997-12-16 | 2001-08-14 | Starfish Software, Inc. | Data processing environment with methods providing contemporaneous synchronization of two or more clients |
US7260610B2 (en) * | 1998-02-10 | 2007-08-21 | Gateway Inc. | Convergence events notification system |
US20030069874A1 (en) * | 1999-05-05 | 2003-04-10 | Eyal Hertzog | Method and system to automate the updating of personal information within a personal information management application and to synchronize such updated personal information management applications |
US6381605B1 (en) * | 1999-05-29 | 2002-04-30 | Oracle Corporation | Heirarchical indexing of multi-attribute data by sorting, dividing and storing subsets |
US6366907B1 (en) * | 1999-12-15 | 2002-04-02 | Napster, Inc. | Real-time search engine |
US6694336B1 (en) * | 2000-01-25 | 2004-02-17 | Fusionone, Inc. | Data transfer and synchronization system |
US6891953B1 (en) * | 2000-06-27 | 2005-05-10 | Microsoft Corporation | Method and system for binding enhanced software features to a persona |
US7158953B1 (en) * | 2000-06-27 | 2007-01-02 | Microsoft Corporation | Method and system for limiting the use of user-specific software features |
US7472396B2 (en) * | 2001-05-18 | 2008-12-30 | Qualcomm Incorporated | Extensible event notification mechanism |
US6745209B2 (en) * | 2001-08-15 | 2004-06-01 | Iti, Inc. | Synchronization of plural databases in a database replication system |
US7207008B1 (en) * | 2001-09-12 | 2007-04-17 | Bellsouth Intellectual Property Corp. | Method, system, apparatus, and computer-readable medium for interactive notification of events |
US20030144892A1 (en) * | 2002-01-29 | 2003-07-31 | International Business Machines Corporation | Method, system, and storage medium for providing knowledge management services |
US6993534B2 (en) * | 2002-05-08 | 2006-01-31 | International Business Machines Corporation | Data store for knowledge-based data mining system |
US20030220966A1 (en) * | 2002-05-24 | 2003-11-27 | International Business Machines Corporation | System and method for dynamic content dependent conflict resolution |
US20040172584A1 (en) * | 2003-02-28 | 2004-09-02 | Microsoft Corporation | Method and system for enhancing paste functionality of a computer software application |
US7743022B2 (en) * | 2003-02-28 | 2010-06-22 | Microsoft Corporation | Method and system for synchronizing data shared among peer computing devices |
US7660833B2 (en) * | 2003-07-10 | 2010-02-09 | Microsoft Corporation | Granular control over the authority of replicated information via fencing and unfencing |
US7734690B2 (en) | 2003-09-05 | 2010-06-08 | Microsoft Corporation | Method and apparatus for providing attributes of a collaboration system in an operating system folder-based file system |
US7200620B2 (en) * | 2003-09-29 | 2007-04-03 | International Business Machines Corporation | High availability data replication of smart large objects |
US20050203851A1 (en) * | 2003-10-25 | 2005-09-15 | Macrovision Corporation | Corruption and its deterrence in swarm downloads of protected files in a file sharing network |
US8250150B2 (en) * | 2004-01-26 | 2012-08-21 | Forte Internet Software, Inc. | Methods and apparatus for identifying and facilitating a social interaction structure over a data packet network |
US20050203935A1 (en) * | 2004-03-11 | 2005-09-15 | International Business Machines Corporation | Clipboard content and document metadata collection |
US7730012B2 (en) * | 2004-06-25 | 2010-06-01 | Apple Inc. | Methods and systems for managing data |
US7529734B2 (en) * | 2004-11-12 | 2009-05-05 | Oracle International Corporation | Method and apparatus for facilitating a database query using a query criteria template |
US20060168123A1 (en) * | 2004-12-14 | 2006-07-27 | Alcatel | Queue and load for wireless hotspots |
US8214353B2 (en) * | 2005-02-18 | 2012-07-03 | International Business Machines Corporation | Support for schema evolution in a multi-node peer-to-peer replication environment |
US20060218492A1 (en) * | 2005-03-22 | 2006-09-28 | Andrade Jose O | Copy and paste with citation attributes |
US20060247961A1 (en) * | 2005-04-28 | 2006-11-02 | Klemow Jason L | Method and system for providing aggregation and display of notifications |
US7454406B2 (en) * | 2005-04-29 | 2008-11-18 | Adaptec, Inc. | System and method of handling file metadata |
US20060265262A1 (en) * | 2005-05-18 | 2006-11-23 | Microsoft Corporation | Distributed conference scheduling |
US8229897B2 (en) * | 2006-02-03 | 2012-07-24 | International Business Machines Corporation | Restoring a file to its proper storage tier in an information lifecycle management environment |
US7698258B2 (en) * | 2006-06-02 | 2010-04-13 | Microsoft Corporation | Searchable storage system |
US7516141B2 (en) * | 2006-06-05 | 2009-04-07 | Research In Motion Limited | System and method for generating runtime metadata for use in the development of mobile device applications |
US20110047230A1 (en) * | 2006-11-17 | 2011-02-24 | Mcgee Steven J | Method / process / procedure to enable: The Heart Beacon Rainbow Force Tracking |
US7933296B2 (en) * | 2007-03-02 | 2011-04-26 | Microsoft Corporation | Services for data sharing and synchronization |
US20080219436A1 (en) * | 2007-03-05 | 2008-09-11 | General Instrument Corporation | Method and apparatus for providing a digital rights management engine |
US8706914B2 (en) * | 2007-04-23 | 2014-04-22 | David D. Duchesneau | Computing infrastructure |
US20090234967A1 (en) * | 2008-03-17 | 2009-09-17 | Nokia Corporation | Method, system, and apparatus for transferring P2P file distribution tasks between devices |
-
2007
- 2007-06-22 US US11/766,985 patent/US8239479B2/en not_active Expired - Fee Related
-
2008
- 2008-06-20 KR KR1020097026257A patent/KR20100033966A/ko not_active IP Right Cessation
- 2008-06-20 AU AU2008268539A patent/AU2008268539B2/en active Active
- 2008-06-20 CA CA002687859A patent/CA2687859A1/en not_active Abandoned
- 2008-06-20 BR BRPI0811308A patent/BRPI0811308A2/pt not_active Application Discontinuation
- 2008-06-20 CN CN200880021302XA patent/CN101689164B/zh active Active
- 2008-06-20 EP EP08771572A patent/EP2160688A4/en not_active Ceased
- 2008-06-20 WO PCT/US2008/067636 patent/WO2009002831A2/en active Application Filing
- 2008-06-20 JP JP2010513440A patent/JP2010531026A/ja not_active Withdrawn
- 2008-06-20 RU RU2009147457/08A patent/RU2471227C2/ru active
- 2008-06-20 TW TW097123125A patent/TW200907719A/zh unknown
-
2012
- 2012-04-26 US US13/457,321 patent/US8386587B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6356946B1 (en) * | 1998-09-02 | 2002-03-12 | Sybase Inc. | System and method for serializing Java objects in a tubular data stream |
CN1480859A (zh) * | 2002-09-03 | 2004-03-10 | 鸿富锦精密工业(深圳)有限公司 | 分布式文件同步系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2009002831A3 (en) | 2009-02-26 |
EP2160688A4 (en) | 2012-10-03 |
BRPI0811308A2 (pt) | 2019-02-26 |
TW200907719A (en) | 2009-02-16 |
US8239479B2 (en) | 2012-08-07 |
KR20100033966A (ko) | 2010-03-31 |
US20080317068A1 (en) | 2008-12-25 |
US20120210020A1 (en) | 2012-08-16 |
US8386587B2 (en) | 2013-02-26 |
WO2009002831A2 (en) | 2008-12-31 |
AU2008268539B2 (en) | 2012-06-14 |
RU2009147457A (ru) | 2011-06-27 |
RU2471227C2 (ru) | 2012-12-27 |
JP2010531026A (ja) | 2010-09-16 |
EP2160688A2 (en) | 2010-03-10 |
CN101689164A (zh) | 2010-03-31 |
CA2687859A1 (en) | 2008-12-31 |
AU2008268539A1 (en) | 2008-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101689164B (zh) | 服务器辅助的对等同步 | |
US8463936B2 (en) | Method and device for distributing digital data in particular for a peer-to-peer network | |
Æg et al. | BestPeer: Self-onfigurable Peer-to-Peer System | |
CN100407627C (zh) | 一种实现端到端文件共享的系统及方法 | |
USRE44836E1 (en) | System and method for efficient transfer of applications and data during device swap | |
US7831734B2 (en) | Method and system for remote configuration of network devices | |
US20030163552A1 (en) | Document distribution and storagre system | |
KR101602760B1 (ko) | p2p 연결을 이용한 클라우드 서비스 트래픽의 절감 방법 및 그 장치 | |
JP2009532785A (ja) | 遠隔装置を介して異なるデータストアを検索するシステム及び方法 | |
CN102365634A (zh) | 用于管理分布式资产和元数据的系统 | |
CN102271165B (zh) | 互联网搜索资源的分享管理装置及方法 | |
US20070124422A1 (en) | Data push service method and system using data pull model | |
CA3131954C (en) | Information synchronization method, system, apparatus, computer device and storage medium | |
CN104717527A (zh) | 一种视频传输方法及装置 | |
CN110677443A (zh) | 数据发送和接收方法、发送端、接收端、系统及存储介质 | |
CN109716731A (zh) | 用于提供可靠和高效数据传送的系统和方法 | |
CN115941705A (zh) | 一种基于ipfs的工业互联网标识解析增强方案 | |
CN102098339A (zh) | 一种音频文件传输方法及其系统 | |
KR100545744B1 (ko) | 클러스터링 환경에서의 모바일 비즈니스 응용 서버간 콘텐츠 캐시 동기화 방법 | |
US7937441B2 (en) | Data-control device and method of controlling same | |
KR20150095098A (ko) | 정보 중심 네트워크를 이용한 데이터 질의 처리 방법 | |
EP3128711A1 (en) | Information object acquisition method, server and user equipment | |
Pereira et al. | Web service and business process execution on peer-to-peer environments | |
CN116827964A (zh) | 一种远程客户端状态同步方法、系统、介质及设备 | |
Chen et al. | Elasto: Dynamic, efficient, and robust maintenance of low fan-out overlays for topic-based publish/subscribe under churn |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150507 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150507 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |