CN108140031B - 对等可同步存储*** - Google Patents
对等可同步存储*** Download PDFInfo
- Publication number
- CN108140031B CN108140031B CN201680056479.8A CN201680056479A CN108140031B CN 108140031 B CN108140031 B CN 108140031B CN 201680056479 A CN201680056479 A CN 201680056479A CN 108140031 B CN108140031 B CN 108140031B
- Authority
- CN
- China
- Prior art keywords
- electronic device
- group
- storage service
- synchronization
- sync
- 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
-
- 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/1044—Group management mechanisms
-
- 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/176—Support for shared access to files; File sharing support
-
- 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/18—File system types
- G06F16/182—Distributed file systems
-
- 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/18—File system types
- G06F16/188—Virtual file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5069—Address allocation for group communication, multicast communication or broadcast communication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/101—Access control lists [ACL]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/104—Grouping of 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
-
- 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
- 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/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- 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/133—Protocols for remote procedure calls [RPC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/80—Services using short range communication, e.g. near-field communication [NFC], radio-frequency identification [RFID] or low energy communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
Abstract
一种用于在分布式***中创建同步群组的***,包括具有短距离通信发射机和存储服务的离线电子设备,以及包括一个或多个编程指令的计算机可读存储介质。***接收来自应用的创建同步群组的请求,并验证应用具有对存储服务的读取权限。响应于应用具有对存储服务的读取访问权限的验证,***接收存储在所述存储服务中的将被共享的一个或多个对象的指示,标识所述同步群组的一个或多个成员,以及分配一个或多个许可给被标识的所述一个或多个成员。***对电子设备和与一个或多个成员电子设备中的对象的访问权限进行同步。
Description
相关申请及优先权
本专利文献要求于2015年10月2日提交的美国临时专利申请No.62/236,480的优先权,其公开通过引用完全并入本文。
背景技术
在多个设备和多个用户之间共享数据是经常渴望的。然而,当一个或多个设备离线但仍希望共享数据时,这可能很困难。另外,用户可能有能力同时更改数据。在分布式***中检测和解决对于这种更改可能引发的冲突会很困难。
发明内容
本公开不限于所描述的特定***,方法或协议,因为这些可以变化。本说明书中使用的术语是为了描述特定的版本或实施例的目的,而不是旨在限制范围。
如本文中所使用的,除非上下文另有明确规定,否则单数形式“一”,“一个”和“该”包括复数指代。除非另有定义,否则本文中使用的所有技术和科学术语与本领域普通技术人员通常理解的含义相同。如在本文件中所使用的,术语“包含”是指“包括但不仅限于”。
在一个实施例中,一种用于在分布式***中创建同步群组的***,包括具有短距离通信发射机和存储服务的离线电子设备,以及包括一个或多个编程指令的计算机可读存储介质。编程指令在被执行时可以使电子设备,接收来自应用的创建同步群组的请求,并验证应用具有对存储服务的读取权限。响应于应用具有对存储服务的读取访问权限的验证,***接收存储在所述存储服务中的将被共享的一个或多个对象的指示,标识所述同步群组的一个或多个成员,以及分配一个或多个许可给被标识的所述一个或多个成员。***对所述电子设备和与所述一个或多个成员相关联的一个或多个成员电子设备中的对象的访问权限进行同步,使得当所述成员电子设备处于所述电子设备的所述发射机的范围内时,所述对象可经由所述成员电子设备中的每一个被访问,,其中,所述成员电子设备对所述对象的访问权限是依照所分配的所述一个或多个许可。
可选地,***分配唯一名称给所述同步群组。***发布所述唯一名称到所述成员电子设备可访问的列表。
可选地,每个所述成员电子设备是离线的。
可选地,***检测网络连接,并且响应,发送创建所述同步群组的请求给同步群组服务器,和创建所述同步群组的版本,由所述同步群组服务器在所述同步群组服务器处创建所述版本,并且使对象和元数据与所述电子设备以及一个或多个成员电子设备同步。
可选地,***生成访问控制列表(ACL),所述访问控制列表指示哪个所述成员电子设备被许可访问所述对象。
在一个实施例中,一种用于在分布式***中创建同步群组的***,包括包含存储服务的电子设备,以及包括一个或多个编程指令的计算机可读存储介质。编程指令在被执行时可以使电子设备,接收来自应用的创建同步群组的请求,并验证应用具有对存储服务的读取权限。***响应于应用具有对存储服务的读取访问权限的验证,***接收存储在所述存储服务中的将被共享的一个或多个对象的指示,标识所述同步群组的一个或多个成员,以及分配一个或多个许可给被标识的所述一个或多个成员。***标识与同步群组相关联的同步群组服务器,发送通知给所述同步群组服务器,该通知告知所述同步群组服务器所述同步群组已被创建,对所述电子设备和与所述一个或多个成员相关联的一个或多个成员电子设备中的对象的访问权限进行同步,使得所述对象可经由所述成员电子设备中的每一个被访问,其中,所述成员电子设备对所述对象的访问权限是依照所分配的所述一个或多个许可。
可选地,***分配唯一名称给所述同步群组。***发布所述唯一名称到所述成员电子设备可访问的列表。
可选地,***生成访问控制列表,所述访问控制列表指示哪个所述成员电子设备被许可访问所述对象。
可选地,***使用一个或多个远程过程调用与所述同步群组服务器通信。
附图说明
图1A和1B示出了分布式对等同步***的各种实施例。
图2示出了根据实施例的创建同步群组的示例方法的流程图。
图3示出了根据实施例的示例数据交换。
图4示出了根据实施例的冲突解决的示例。
图5示出了根据实施例的示例同步群组设置。
图6示出了根据实施例的对象可见/不可见转变的示例。
图7示出了根据各种实施例的可用于包含或实施程序指令并与其他设备通信的示例硬件的框图。
具体实施方式
为了本申请的目的,下列术语应具有以下记载的各自的含义:
“访问控制列表”或“ACL”是标识许可的列表,表或其他数据结构,该许可被附加到特定对象或对象集。许可可能涉及单个设备或多个设备。
“动态名称服务器”是指能够允许客户端创建名称并将网络端点,例如,IP地址或端口号,与该名称相关联的电子设备。然后,一个或多个其他电子设备可以在动态名称服务器中查找该名称,找到对应的端点并与其通信。
“电子设备”或“计算设备”是指包括处理器和内存的设备。每个设备可以具有自己的处理器和/或内存,或者如在虚拟机或容器布置中,处理器和/或内存可以与其他设备共享。内存可以包含或接收编程指令,当该编程指令由处理器执行时,使电子设备根据该编程指令进行一个或多个操作。电子设备的示例包括个人计算机、服务器、大型机、虚拟机、容器、游戏***,电视机和诸如智能手机、个人数字助理、照相机、平板电脑、膝上型计算机、媒体播放器等的移动电子设备。在客户端-服务器布置中,客户端设备和服务器分别是电子设备,其中服务器包含客户端设备经由一个或多个通信网络中的一个或多个通信链路而访问的指令和/或数据。在虚拟机布置中,服务器可以是电子设备,并且每个虚拟机或容器也可以被认为是电子设备。在下面的讨论中,为了简洁起见,客户端设备,服务器设备,虚拟机或容器可以简称为“设备”。
“成员”是指已加入同步群组的电子设备。成员可以由设备的全局唯一名称和/或与设备相关联的元数据,例如,同步优先级来标识。
“对象”是处理、数据集或其他资源,功能或交易,服务器通过授权的客户端控制对该对象的访问。
“前缀”是指用于指定要同步的数据子集的一个或多个密钥前缀(或密钥范围)。例如,在数据库中定义前缀为“foo”和“bar”的同步群组,该同步群组同步密钥开头是“foo”或“bar”字符串的所有条目。这组前缀在创建同步群组后不可以被修改。
在本文件中,术语“处理器”和“处理设备”是指被配置为执行编程指令的电子设备的硬件组件。除非另有特别声明,否则单数术语“处理器”或“处理设备”旨在包括单个处理设备实施例和其中多个处理设备一起或共同进行处理的实施例。
“结构化存储”是指计算机可读存储介质,该计算机可读存储介质包括要在两个设备之间或多个设备之中同步的至少部分对象。结构存储可以包括密钥值存储、字符串密钥与数据类型的映射、关系数据库和/或诸如此类。
“存储服务”是指便于以对等方式跨电子设备同步对象的计算机可读存储***。
“同步群组”旨在指一组设备,该组设备被许可彼此之间和/或向数据存储设施同步一组数据。
“同步群组名称”是指标识同步群组的全局唯一名称。
“同步群组服务器”是指与同步群组通信的电子设备。同步群组服务器可以存储与同步群组关联的信息,诸如元数据。
除非另有特别声明,否则单数术语“处理器”、“处理设备”、“电子设备”或“计算设备”旨在包括单个处理设备实施例和其中多个处理设备一起或共同进行处理的实施例。
在本文档中,术语“内存”,“内存设备”,“数据存储”,“数据存储设施”等等,每个都指非临时性设备,在该非临时性设备上存储有计算机可读数据,编程指令或两者。除非另有特别说明,术语“内存”、“内存设备”、“数据存储”、“数据存储设施”等旨在包括单个设备的实施例,其中多个内存设备在一起或共同存储数据集或指令集的实施例,以及这些设备内的各个扇区的实施例。
图1A示出了分布式对等同步***的各种实施例。如图1A所示,***100可以包括具有两个或更多个电子设备104a-N的同步群组102。虽然图1A示出了一个同步群组B,但是一个或多个电子设备104a-N可以属于一个或多个其他同步群组。同步群组102中的电子设备104a-N可以属于一个或多个用户。例如,同步群组102可以包括属于单个用户的移动电话,平板电脑和膝上型计算机,该用户希望在这些设备之间同步数据。在另一个示例中,同步群组102可以包括与第一用户相关联的移动电话,与第二用户相关联的平板电脑,与第三用户相关联的移动电话以及与第四用户相关联的膝上型计算机。在本公开的范围内可以使用附加和/或替代数量的用户和/或电子设备类型。
每个同步群组102中的设备将存储标识作为同步群组成员的其他设备的其他数据结构或ACL。在这种情况下,术语“设备”可以指实际的电子设备标识符,或指使用特定电子设备的用户的标识符。在各种实施例中,与读取“R”或写入“W”许可相关联的设备可以加入同步群组。“A”许可可以标识充当同步群组管理员的设备。同步群组管理员可以进行非管理员不被许可进行的某些动作,例如,许可新设备加入同步群组,从同步群组中移除设备,修改适用的ACL等。在一个实施例中,同步群组还可以指定用于协调同步冲突的冲突解决策略。可以定义多个同步群组,并且该多个同步群组可以重叠或嵌套。在一个实施例中,同步群组元数据可以是分散的,并且可以在参与同步群组的所有节点上存在。同步群组的管理员可以是被允许更改或修改元数据的人员。这个元数据可以使用对等(p2p)同步协议来被同步。
如图1A所示,同步群组102可以经由通信网络108与一个或多个同步群组服务器106a-N进行通信,该通信网络108例如是无线电话网络、因特网、内联网、局域网、广域网,其他类型的网络或这些的任意组合。在各种实施例中,同步群组服务器106a-N可以是同步群组102的一部分。同步群组服务器106a-N可以存储和管理与同步群组102相关联的元数据和/或数据。元数据可以包括但不限于,被许可加入同步群组的电子设备的列表,同步群组的当前成员的列表,同步群组的哪些设备之间要同步的数据等。
在某些实施例中,当设备加入和离开同步群组102时,可以使用同步群组服务器106a-N。在例如云中的服务器的非移动设备上提供同步群组服务器106a-N通常是方便的,这样同步群组服务器106a-N不太可能被丢失或被盗。在其他实施例中,同步群组服务器106a-N可以作为移动电子设备或其他类型的电子设备来实施。在又一个实施例中,同步群组102可以不与同步群组服务器106a-N相关联。更确切地,元数据可以由同步群组102内的管理员管理。
如图1B所示,在各种实施例中,同步群组服务器106a-N(或其他服务器)可被认为是同步群组的成员。例如,如果在电子设备处于在线的同时创建同步群组,或者如果在电子设备离线的同时创建同步群组之后电子设备稍后连接到因特网,则同步群组服务器可以是同步群组的成员。这样,同步群组服务器可以将数据和/或服务器备份,作为电子设备获取最近更新的便利场所。
一个或多个电子设备104a-N可以通过通信网络110与一个或多个其他电子设备通信,该通信网络例如是无线电话网络、因特网、内联网、局域网、广域网,其他类型的网络或这些的任意组合。在其他实施例中,通信网络110可以是近程或近场通信网络。如此,电子设备能够在没有因特网连接的情况下彼此通信。当设备能够经由网络进行通信时,新创建的同步群组的后续的管理可以经由因特网或其他网络连接被转移到同步群组服务器。
在某些实施例中,同步群组可以在将要成为同步群组的一部分的一个或多个电子设备离线的时候被创建,这意味着这些电子设备没有连接到互联网。在创建同步群组时,创建者将成为新同步群组的默认管理人或管理员。随着设备加入同步群组(由同步群组的ACL所许可),这些设备形成松散耦合的分布式***来进行同步群组管理。这可以包括引导(bootstrap)被允许加入同步群组的其他成员以及承认并传播对同步群组的元数据的更改等等。
同步群组也可以以对等的方式被同步。管理员可以经由发现服务使其自身可用,以便成员即使在离线状态下也能联络到他们。同步群组管理是鲁棒的,因为它不依赖任何一个管理员。它还允许在创建者未连接到因特网时继续创建同步群组。
在各种实施例中,设备用户可能希望在设备离线的同时建立同步群组。例如,设备A的用户1可能正在与设备B的用户2和设备C的用户3一起露营,而且所有设备都不能访问因特网连接。然而,用户1可能想创建一个包含设备B和设备C的同步群组,以便三位用户可以共享他们露营旅程的照片。
用户1可以访问她的设备上的应用以存储她要共享的照片,这些照片可以具有相同的前缀,例如“露营旅行”。用户1可以选择选项来共享已标识的照片,并且可以给出用户1一选项来将共享限制为一组用户身份。用户1可以标识用户2和3。
该应用代表用户1创建一个同步群组。由于用户1处于离线状态,因此在同步群组服务器上的同步群组的创建保持待定。但同步群组在设备1上被创建。设备1使用近程或近场通信向设备2和设备3发送加入同步群组的请求。一旦该请求被接受,设备1、2和3将同步并共享照片或其他对象。当设备1重新获得因特网连接时,同步群组服务器上的同步群组的创建完成。然后,新成员可以经由同步群组服务器加入同步群组,并且现有成员可以将他们的同步群组元数据与同步群组服务器同步。
在某些实施例中,同步群组创建者可以指派默认管理员(可能是云中的设备)以供其他同步群组成员使用。如果指定了默认管理员,则该管理员一在线并可联络到时就被立即添加到同步群组。同步群组管理员可以周期地“ping”该默认管理员让它加入同步群组,直到它接受或拒绝该请求。由此导致的群组状态可以经由同步协议被记录并传播给组的其他管理员。这种方法可帮助创建者和/或管理员将管理责任转移给更强大的同步群组成员。这样,同步群组管理可实现离线功能和负载平衡。
以下说明根据实施例的示例同步群组数据结构:
在各种实施例中,通信可以经由一个或多个远程过程调用(RPC)进行。例如,应用可以通过RPC与存储服务通信,并且存储服务可以经由RPC与存储服务服务器通信。从应用到存储服务的RPC可以由存储服务中的同步群组服务器模块来处理。根据实施例,下面解释了制作某些RPC的示例权限:
在一个实施例中,应用可以至少具有读取访问权限以制作同步群组相关的RPC。另外,该应用可具有读取访问权限以加入同步群组。应用可能需要管理员特权才能进行“弹出”、“销毁”或“设置”操作。要创建同步群组,在每个同步群组前缀都可能存在数据ACL,并且调用应用应至少对ACL具有读取访问权限。应用可能不需要额外的许可即可离开同步群组。
创建同步群组
图2示出了根据实施例的创建同步群组的示例方法的流程图。如图2所示,存储服务可以接收200来自应用(诸如存储服务代理)的请求以创建新的同步群组。存储服务可以验证202从其接收到请求的应用具有对存储服务的读取访问权限。
响应于验证了应用具有对存储服务的读取访问权限,可以在存储服务内本地地创建204同步群组,只要该同步群组没有已存在于存储服务中。在创建同步群组时,存储服务可以为同步群组分配一个全局唯一名称。该名称可包含同步群组服务器的名称。例如,该名称可将同步群组服务器的名称作为前缀包含在内。存储服务可以定义构成同步群组的密钥前缀。前缀是指,指定要同步的数据子集和/或ACL的指示。例如,在数据库中定义前缀为“foo”和“bar”的同步群组,该同步群组同步密钥开头是“foo”或“bar”字符串的所有条目。
在一个实施例中,存储服务可以接收要与同步群组的成员共享的一个或多个对象的指示。这些对象可以是数据对象,例如文档,图像,照片,消息和/或等等。存储服务可以接收将要从用户共享的一个或多个对象的指示。例如,用户可以指定来自存储服务的哪些对象将与同步群组的成员共享。
在各种实施例中,存储服务可以标识已创建的同步群组的一个或多个潜在成员以及与这些成员相关联的一个或多个许可。存储服务基于来自用户的输入可以标识一个或多个潜在成员。例如,用户可以通过提供成员的名称或其他标识符来标识成员。存储服务可以标识与同步群组关联的冲突解决策略。冲突解决数据策略可以指定如何处理与数据同步有关的冲突。
返回参考图2,存储服务通过代表应用发送通知,可以联系206被分配给新同步群组的同步群组服务器,以告知该同步群组服务器该新同步群组已经创建并存在。在一个实施例中,存储服务可以使用一个或多个远程过程调用(RPC)来发送通知。如果该同步群组已存在,或者如果应用缺少创建该同步群组的适当许可,则存储服务服务器可以返回错误。如果存储服务收到来自同步群组服务器的错误,则存储服务可以不创建被请求的同步群组,并可向请求的应用告知该错误。
在一个实施例中,由于同步群组服务器无法联络到,所以存储服务可能不能与同步群组服务器联系。例如,与存储服务和/或同步群组服务器相关联的设备可能离线。在这种情况下,存储服务可以记住待定的联系请求,直到同步群组服务器可联络到,并且继续离线创建同步群组。存储服务可以尝试稍后联系同步群组服务器,以同步新的同步群组和关联的元数据。例如,当存储服务检测到因特网或其他网络通信时,它可以向同步群组服务器发送创建同步群组的请求。同步群组服务器可以创建同步群组,并将适用的对象和元数据与适当的设备同步。
在一个实施例中,存储服务在由同步群组指定的动态名称服务器处可以发布208设备的名称。存储服务在附近的动态名称服务器中可以发布210已创建的同步群组的名称,以便离线的加入者可以定位该同步群组。
一旦成员加入同步群组,存储服务就可以同步要在成员之间共享的对象的访问权限,以便这些对象可以通过一个或多个成员的电子设备访问。
如果存储服务处于离线状态,则可以使用近程无线通信技术,例如,近场通信(NFC),蓝牙,低功耗蓝牙,射频标识(RFID)或其他技术,将对象与一个或多个成员的设备共享。例如,电子设备可以包括允许它们在近程协议的范围内与其他设备进行通信的发射机和/或接收机。在某些实施例中,一个或多个成员的一个或多个设备也可以离线,但能够使用近程无线通信技术进行通信。
加入同步群组
要加入同步群组,电子设备要么可以通过带外来获取同步群组名称,要么按照惯例可能已经知道该同步群组名称。在加入同步群组时,存储服务可以采取以下步骤:
●验证请求的应用具有对数据库的读取访问权限。
●通过代表应用(应用批准存储)联系在同步群组名称中指定的同步群组服务器,尝试加入同步群组。
●如果同步群组服务器不能联络到,则搜索附近的以查找与同步群组名称对应的端点。如果找到了端点,则向端点发出加入(Join);如果没找到端点,则该加入(Join)失败。
注意:为了阻止附近的设备伪装成另一个同步群组管理员,同步群组名称可以包含批准(blessing)前缀列表,供管理员在RPC期间检查。
●在本地存储返回的同步群组元数据。
●在由同步群组指定的动态名称服务器中发布设备名称。
●如果该加入者是同步群组管理员(检查ACL),在附近的动态名称服务器中发布同步群组名称,使该附近的动态名称服务器作为其他成员调用加入(Join)的另一个位置。
●在同步群组服务器侧,当收到加入(Join)RPC时,它会验证该加入者已被该同步群组ACL允许进入。它将该设备添加到加入者列表中,该加入者列表也与其他同步群组元数据同步。
同步群组元数据同步
存储服务可以作为成员或作为管理员来跟踪设备已知的同步群组。在与其他设备进行p2p同步期间,对于每个同步群组,在交换数据之前,同步群组元数据可以被同步。换言之,同步群组成员资格信息实际上是同步群组本身的一部分,但可以首先传送。这可以通过充分利用用于同步应用数据的p2p同步协议来完成。每个同步群组的元数据可以使用生成矢量(genvec)和定向无环图中的条目来被跟踪。生成矢量可以是数据结构,该数据结构标识给定的电子设备所看到的电子设备的历史(或各种电子设备的历史)有多远。这可以允许设备快速标识并交换每个同步群组中最近的修改,并检测要解决的冲突。同步发起者设备可以向响应者发送其与响应者共有的同步群组的列表以及这些同步群组的生成矢量。响应者计算生成矢量差异,并回复对同步群组的更改、以及每个同步群组的更新的生成矢量。对于回复中的每个同步群组,发起者可以更新它的DAG、检测冲突并采取以下动作:
检测到冲突 | 发起者是管理员 | 动作 |
假 | -- | 接受更改,更新本地SG副本 |
真 | 假 | 推迟解决方案,没有本地SG更改 |
真 | 真 | 解决冲突,更新本地SG副本 |
通过进行这些更改的三方合并,冲突解决方案可以被自动进行:
●前缀:不能更改。
●冲突解决器策略:不能更改。
●隐私:不能更改。
●描述:上次时间戳获胜。
●许可:对于每个“允许”和“拒绝”集合,按每个(标签,模式)合并来自3方差异的条目,应用来自这两个差异的添加和删除。
●动态名称服务器:来自3方差异的每条记录被合并,应用来自这两个差异的添加和删除。
●成员资格集:来自3方差异的每个成员记录被合并,应用来自这两个差异的添加和删除。
同步群组元数据的同步首先发生在同步周期中。这允许设备在开始数据同步周期之前知道最新的同步群组ACL和成员资格集。
离开同步群组
成员可以调用LeaveSyncGroup()来终止在同步群组的参与。存储服务可以向同步群组管理员之一发送RPC以传达请求,并清除本地同步群组状态。同步群组数据依旧被存储。如果无法联系任何管理员,则存储服务可以继续在本地清理它的同步群组元数据并停止参与同步。当其他人试图与该存储服务同步时,该存储服务会拒绝他们(未知的同步群组),其他人可以进行自己的清理,如果他们是管理员,则更新成员资格集。
驱逐同步群组成员
当同步群组管理员需要驱逐同步群组成员(例如,丢失或被盗的设备)时,它会修改同步群组ACL以拒绝对该成员的访问(即移除它的批准),并从加入者列表中移除该成员。此元数据的更改传播给其他成员,并且每个成员都停止与该成员同步。如果被拒绝的成员是可联络到的,则管理员发送驱逐消息以指示该成员应该清理它的本地状态。在ACL的更改传播到所有同步群组成员之前,该被拒绝的成员可以继续与某些成员同步,并且该被拒绝的成员的数据更新将被接受。此行为与数据同步协议在ACL拒绝访问成员时类似。
离线 对 在线
同步群组可以在创建者离线时被创建,并且该同步群组不能联络到包含在同步群组名称中的同步群组服务器。联系远程服务器将一直保持待定,直到该远程服务器可联络到,此时该远程服务器学习该同步群组。可选地,通过使用同步群组名称中的该同步群组的服务器名称,创建者可以在本地创建同步群组,并绕过该同步群组要与远程服务器联系以通知该服务器的步骤。其他成员可以通过附近的动态名称服务器联系任何可用的管理员成员加入该同步群组。
同步群组批准
同步群组服务器可以批准表示它现在是同步群组的成员的新加入者,而不是在同步过程中使用应用批准。为了使这种批准能够在多主机和潜在断开的设置中发出,并确保该批准源自除创建者之外的设备(例如,爱丽丝/电话正在为国际象棋俱乐部创建同步群组,但希望批准的形式为chessclub/sgserver/<sgname>),创建者需要从它打算用于创建同步群组的同步群组服务器预先缓存该批准。
使用同步群组批准可以提供以下优点:
●如果潜在同步群组成员已加入同步群组,确认该潜在同步群组成员能够与其他成员同步。
●即使现有同步群组成员在旧版本的ACL并且仍不知道刚加入的成员,也允许同步继续进行。新的加入者可以使旧成员的ACL更新到最新。
●希望加强对同步群组的控制的同步群组所有者有整个批准机制可以支配(警告、撤销等)。
同步群组ACL和数据前缀-ACL
同步群组ACL在同步操作期间控制对同步群组的访问。它们用于验证远程设备是该同步群组的成员。无论是通过API还是在同步数据交换期间,数据库ACL和最长前缀ACL(用于密钥的最具体的ACL)控制应用对数据的访问。当应用访问数据库时,可能会通过以下ACL检查:数据库ACL,表ACL,最长匹配前缀ACL。当设备提取同步更新时,为该设备参与的每个同步群组通过以下ACL检查:同步群组ACL和最长匹配前缀ACL。
在一个实施例中,在同步群组没有在每个同步群组前缀处已经设置了前缀ACL的情况下,不可以创建该同步群组。这些前缀ACL可以被同步,并且可以被认为是在同步群组“内部”。这有助于保证所有同步群组成员都遵循相同的ACL,因为同步群组中的所有数据条目都由前缀ACL控制,该ACL也是同步群组的一部分,而不是从同步群组“外部”的ACL“泄漏”的。
同步群组ACL和前缀ACL之间的交互
加入和离开同步群组可能不会影响对数据库的本地访问。同样,对同步群组内数据的同步访问可以取决于作为同步群组的一部分被同步的元数据(同步群组ACL和同步群组范围内的所有数据前缀ACL),并且同步群组的所有成员都可以在本地得到相同的行为,即使他们的ACL在同步群组更改的范围外(例如,比同步群组前缀更短的前缀ACL)。
当前缀ACL被定义在与同步群组ACL相同的前缀时,前缀ACL可以被认为是在同步群组“内部”并且可以被同步。这意味着它被认为在嵌套中将更深,因此它会覆写“最长匹配”评估中的同步群组ACL。
为了在同步群组成员之间保留相同行为的属性而处理的特殊情况-如果同步群组数据的最长匹配前缀ACL超出了同步群组本身的范围,会发生什么情况?例如,同步群组是前缀“foo”的,但应用在“f”处定义了前缀ACL,并且该ACL可能在不同设备上有所不同。要保留相同的行为,可以使用回退规则:如果同步群组数据条目的最长匹配前缀ACL比同步群组前缀短,则会使用同步群组ACL。这样,同步群组之外的前缀ACL就不会将其影响泄漏到同步群组中。
例如,考虑具有重叠和嵌套的三个同步群组以及两个前缀ACL:
●前缀“foo”和“bar”的SG1,SG1使用SG-ACL1
●前缀“foo”和“baz”的SG2,SG2使用SG-ACL2
●前缀“foobar”的SG3,SG3使用SG-ACL3
●ACL4,“foo 1”的前缀-ACL
●ACL5,“foobar 1”的前缀-ACL
在SG1上同步的设备可以通过SG-ACL1。由于没有进一步的控制ACL,因此这给它了在“bar”前缀下的所有数据。对于“foo”前缀,为了在“foo 1”下的数据它需要通过ACL4,为了在“foobar l”下的数据它需要通过ACL5,否则它接收在“foo”前缀下的其余数据。同样地,在SG2上同步的设备可以通过SG-ACL2。这将给它“baz”前缀下的所有数据和“foo”前缀下除了“foo l”和“foobar l”下的子集之外的数据,而对于“foo l”和“foobar l”下的子集也分别需要通过ACL4和ACL5。在SG3上同步的设备可以通过SG-ACL3。这给它“foobar”下除了“foobar l”下的子集的数据,“foobar l”下的子集也要通过ACL5。在多个同步群组上同步的设备会根据上述规则接收允许访问的数据的联合。
自动加入功能
为了在所有的用户设备上提供无缝的同步体验,可以使用自动加入功能。在存储服务设置时间,用户可以选择启用自动加入功能。这将为该用户创建单个自动加入同步群组,以交换有关应用同步群组的信息。在每个用户设备上运行的自动加入代理可以是该同步群组的一部分。每个设备上的自动加入代理可以检测应用何时创建或加入同步群组,并将其表示为自动加入同步群组中的条目。该用户的所有其他设备上的自动加入代理对自动加入同步群组中的新条目作出反应,并自动加入指定的应用同步群组(如果被允许)。
以下根据各种实施例说明涉及创建和加入同步群组的示例使用案例。
使用案例1
爱丽丝(Alice)为公司A工作,并且为了协作想与她的同事鲍勃(Bob)和卡罗尔(Carol)共享存储在存储服务中的关于项目的一些文档。这些文档由文件管理器(FM)应用来管理。爱丽丝访问她的其中一个电子设备上的FM应用以选择要同步的文档。爱丽丝指定她想与用户为公司A/Bob和公司A/Carol共享选定的文档。FM应用使用存储服务代表爱丽丝创建同步群组。同步群组名称将同步群组服务器名称与唯一标识符串连起来。例如,同步群组的名称可以是“/company A/sgserver/A12HJU”。FM应用可以为同步群组设置一个或多个许可和前缀。许可和/或偏好可以基于爱丽丝的偏好。例如,爱丽丝可以为卡罗尔和鲍勃指定一个许可“alldevices”,这意味着他们可以使用任何属于每个用户各自的“alldevices”ACL组的成员的电子设备加入同步群组。例如,爱丽丝可以包含鲍勃的所有电子设备和卡罗尔的所有电子设备。或者,可以指定某些电子设备。示例许可如下所示:
Perms={
<grp:companyA/aclgrpserver/alice/alldevices>/FM:RWA
<grp:companyA/aclgrpserver/bob/alldevices>/FM:RW
<grp:companyA/aclgrpserver/carol/alldevices>/FM:RW
}
Prefixes=“Project”
爱丽丝可以告知鲍勃和卡罗尔该同步群组名称。例如,爱丽丝可以通过电子邮件,NFC通信,代码扫描或简单地口头告诉他们以及其他方式告知他们同步群组名称。
鲍勃和卡罗尔可以通过他们的电子设备上的FM应用加入同步群组。例如,鲍勃可以通过FM应用请求他的电子设备,例如他的笔记本电脑,加入同步群组。由于爱丽丝已经许可鲍勃使用他的任何设备来加入同步群组,只要鲍勃的笔记本电脑是鲍勃的alldevicesACL群组的成员,那么就允许鲍勃加入同步群组。存储服务可以接收已加入同步群组的设备的名称,并可以启动与这些设备的同步操作。同步发生后,鲍勃能够在他的笔记本电脑上查看爱丽丝与他分享的文档。这些文件可以包括“Project”作为前缀。
使用案例2
爱丽丝想在露营时与她的朋友戴夫(Dave)和卡洛斯(Carlos)编辑照片。爱丽丝使用FM应用来存储要共享的照片,并且它们都具有前缀“露营之旅”。爱丽丝在包含这些照片的文件夹中选择“共享->创建”选项。FM应用向爱丽丝呈现将这些照片共享限制为一组用户标识的选项。她输入v23/Dave和v23/Carlos来指定这些照片将与戴夫和卡洛斯分享。她的v23/Alice身份可以被自动添加。
FM应用可以使用存储服务来代表爱丽丝创建一个同步群组。同步群组名称将同步群组服务器名称与唯一标识符串连起来。例如,同步群组的名称可以是“/domain/sgserver/A12HJU”。FM应用可以为该同步群组设置一个或多个许可和前缀。许可和/或偏好可以基于爱丽丝的偏好。示例许可如下所示:
Perms={
<grp:domain/aclgrpserver/alice/alldevices>/FM:RWA
<grp:domain/aclgrpserver/carlos/alldevices>/FM:RW
<grp:domain/aclgrpserver/dave/alldevices>/FM:RW
}
Prefixes=“Camping Trip”
由于爱丽丝是离线的,因此在同步群组服务器上该同步群组的创建将保持待定,并且该同步群组在爱丽丝的电子设备上创建。卡洛斯和戴夫可以以类似于上述使用案例1中的方式加入同步群组。爱丽丝的照片可以出现在卡洛斯和戴夫的设备上,只要卡洛斯和戴夫的设备在爱丽丝的设备的通信范围内,他们就可以同步他们的照片。由于这三个设备在附近的和全局动态名称服务器中都学习了彼此的名称,因此即使他们返回到不同国家的家中,他们也会继续共享数据。当爱丽丝恢复连接时,该同步群组的创建将在同步群组服务器上继续并完成。新的加入者可以使用此同步群组服务器加入,现有成员可以用此服务器同步他们的元数据。
使用案例3
Z应用的开发者爱丽丝希望提供一个按钮,让爱丽丝把该应用做成能够支持多设备。爱丽丝必须经由应用用户接口来表明她是否想让她的Z应用跨越她的设备。
Z应用创建一个新的同步群组,该同步群组具有根据爱丽丝的身份计算出的名称(例如,“/domain/sgserver/applicationz/v23/Alice”),从而使用许可:<grp:domain/aclgrpserver/alice/alldevices>/applicationz:RWA,来同步此信息。
同步群组也可以在她的设备上被本地创建,以便她的在附近的其他设备可以发现它。因此,如果爱丽丝在离线时(例如在篝火旁)有多台设备,这些设备可以创建并加入同步群组,而无需访问“/domain/sgserver”服务。它们应该都已经在本地缓存了ACL组,因此可以在不访问“domain/aclgrpserver”服务的情况下进行许可检查。同步群组前缀可以由应用根据它的方案(schema)和要在设备之间同步的条目范围来选择。在爱丽丝的其他设备上,她使用应用用户接口启用多设备模式,从而触发应用加入同步群组。
使用案例4
Z应用的开发者爱丽丝想要设置该应用,以在整个游戏玩家中分享最高分数。开发者决定在整个玩家中分享最高分是应用的强制性功能。Z应用的服务器用中央同步群组服务器创建同步群组“/domain/sgserver/applicationz/top-scores”。此同步群组名称现在可以在Z应用安装后成为Z应用的一部分。这些许可允许Z应用加入:{v23/applicationz:RW}。这意味着每个安装好的Z应用在注册时都需要由Z应用的服务器给予v23/applicationz/Alice/D1格式的批准。它将出示这个批准以加入同步群组。该应用在下次在线运行时加入此同步群组。在此之前,它的数据库的“最高分”表的这部分尚未被同步。例如,该应用创建/更新它的“top-scores/Alice-Dl”条目以维持本地前10的得分。该对象上的前缀ACL允许中央服务器进行本地读写(RW)访问和只读访问(v23/Alice/D1/applicationz:RW和v23/applicationz/applicationzadmin:R)。中央服务器的“最高分”文件夹收集所有玩家的前10的得分。它是唯一可以读取所有得分的同步群组成员。它计算全局的前10的得分列表并将其写入“top-scores/applicationzadmin”条目。中央服务器可以通过RW访问该条目,所有玩家都可以只读访问该条目。这意味着该同步群组有N+1个成员。下面提到了替代的选择。
所有玩家都会收到更新后的全局的前10名得分条目,并且该应用将该条目显示在用户界面中。玩家们无法控制或参与应用Z选择如何使用此同步群组及应用Z的内部方案选择来收集/减少/广播所有玩家的前10的得分。玩家之间不需要进行带外通信,用户也不需要配置该同步群组。他们所要做的就是安装应用。
在替代实施例中,应用Z可以使用两个同步群组。例如:
●“最高分”:由所有玩家共享,用于广播全局前10的得分;服务器具有RW访问权限,所有玩家都拥有只读访问权限;
●“top-scores-Alice-D1”:设备和应用Z的服务器这两个成员的每用户每设备同步群组,由该服务器用于收集本地前10的得分;该服务器具有R访问权限且该设备具有RW访问权限。在这种情况下,服务器将注册为N+1个同步群组的成员。
在各种实施例中,如果对象基本上同时被两个设备独立地修改过,则可能存在冲突。在跨设备同步期间当一些设备察觉到这两个修改时,该冲突被检测到。发现冲突的设备将在其权限允许的情况下,尝试通过在两个修改之间进行选择或者大概以某种方式将这两个修改合并为一个新修改来解决冲突。
在某些实施例中,存储服务可具有允许存储服务在ACL的存在下处理冲突解决的特性。例如,ACL可以要求在一台设备上写入的数据不会被同步到没有足够许可的第二台设备。相反,足够的信息被传送到设备以指示数据缺失,但不会指示该数据是什么。第三个设备可能会从第二个设备学习这些更改,但不知道这些更改是什么,因为第二个设备缺少这种信息。这可以允许第三设备检测到发生了冲突更新,但还没有解决冲突。第一个设备和第三个设备之间的稍后同步可以传输足够的信息来填补第三设备知识的缺失部分,并允许冲突解决。此外,先前缺少查看特定数据许可的设备可以在某个时间点被授予该许可,可能会留下有关数据项最近版本的信息,但不会是较早的版本(因为该设备在它们还是最新的时候没有许可去访问它们)。在能够更改的ACL存在的情况下下,这些考虑因素导致处理同步和冲突解决的规则集。
基本同步协议由通过向响应者发送生成向量(类似于版本向量)来传达发起者的当前状态的发起者请求增量组成。相应地,响应者将发起者的生成向量与自己的生成向量进行比较,并将缺失的增量发送给发起者,使发起者追赶到当前状态。存储服务同步由密钥前缀指定的数据并允许嵌套的同步群组。为了支持这个,通过发送知识向量而不是版本向量来增强基本协议。知识向量包括被同步的每个前缀的生成向量。当节点部分更新到最新时,知识向量可以允许更有效的增量传达。例如,如果一个节点已经是当前的w/r/t前缀“foo”,并且想要赶上前缀“f”,将包含前缀“foo”和“f”的知识向量发送给包含前缀“f”的数据的节点,通过发送属于前缀“f”的增量而非“foo”的增量,使增量交换更有效。因为一直使用密钥前缀,并且一直利用它们的层级性,所以知识向量是紧凑的。
可以增强这种基于知识的同步协议以支持安全性。存储服务中的每个同步数据项可以与前缀ACL相关联。所有ACL对象都被发送到发起者。然而,在发送增量之前,响应者会按照关联的ACL检查发起者是否具有读取权限。如果有访问权限,数据将被发送。如果没有权限,则增量的数据部分将被移除(脱壳)并发送同步元数据。交换的同步元数据允许发起者保持定向无环图(DAG)一致以检测冲突,但并不会泄露数据。类似地,当发起者接收到增量时,它通过按照关联的ACL验证变异(mutation)的签名者有更新数据的权限来使每个更新生效。因此,恶意节点在不能访问的情况下无法将更新注入***。当发起者接收数据时,它会执行冲突检测,并且如果检测到冲突,它将执行冲突解决。在冲突解决期间,发起者可能无法访问发生冲突的数据(壳)。如果发起者需要此数据来解决冲突,则它会推迟解决,并依靠具有更多许可的节点来解决此类冲突。然而,如果冲突解决仅仅依赖于同步元数据(上次时间戳获胜),则发起者可以完成冲突该解决并继续更新其存储。其他可能的冲突包括ACL数据冲突或ACL-ACL冲突。ACL-ACL冲突可以由存储服务通过保守合并策略自动解决。在ACL数据冲突中,潜在策略包括承认所有并发变异,并强制同步群组成员不会长时间不同步。此外,当ACL拒绝访问时,访问的拒绝可以不是永久性的。这是可能的,因为ACL包含最初拒绝访问,但稍后允许访问的组;或者是因为警告从无效到有效;或者因为批准在到期之后被更新;或者因为获得了新的批准。在这种情况下,每个节点都会跟踪以查看是否有任何ACL更改会影响节点的访问,如果有,则联系其他节点以回填它们缺失的信息。
数据交换可以由版本矢量(其也可以被称为生成矢量)驱动。版本矢量可以包括参与同步的每个设备的版本号,这可以帮助支持嵌套和重叠的同步群组。在同步期间,请求增量的对等方使用它的版本向量封装它的当前状态。接收请求的对等方可以将传入的版本向量与其自己的版本向量进行比较,并发送数据的缺失版本。对增量的请求可以与***中的设备数量成正比,并且响应可以与增量成比例。
在一个实施例中,每个生成矢量可以附加到一组数据项,该组数据项可以被称为知识片段。这可以传达这些数据项目的当前版本。鉴于同步群组是用前缀定义的,知识也可以使用前缀被编码。前缀可以实现知识的紧凑表示。
在一个实施例中,一旦接收到增量后,接收机可以重放对象的缺失的版本历史并且可以检测是否存在任何冲突的更新。用于检测冲突的对象历史可以以DAG的形式维护。
数据交换协议
在一个实施例中,设备上的本地更新可以被带有唯一生成数的日志记录。每个设备也可以在同步时维护收到的该日志。在同步期间,请求增量的对等方可以使用它的版本向量(每个设备的生成数)封装它的当前状态。接收请求的对等方可以将传入的版本向量与自己的版本向量进行比较,并发送缺失的日志记录。
图3示出了根据实施例的示例数据交换。如图3所示,示例同步群组可以包括设备A,B和C,并且前缀可以被设置为“foo”。在时间t=0,设备A有三个更新,而设备B和C没有变异的任何数据。如图3所示,设备B(发起者)与设备A(响应者)通话以学习任何更新。设备B使用生成矢量[foo:{B:0}]向设备A告知设备B的当前状态。设备A使用设备B的生成矢量来确定设备B尚未具有的更新,即通过计算设备B的生成矢量与设备A自己的生成矢量的差异。由于设备A在A:3,所以它可以向设备B发送三个日志记录。在同步完成时,设备B可以将其生成矢量更新为[foo:{A:3,B:0}]。
在一个实施例中,在设备A与设备B同步之后,设备A可以变异密钥并且现在在A:6。B可以变异导致B:1的密钥之一。设备C可以从设备B同步,该设备B可以从设备B自身和设备A(A:3,B:1)向设备C告知设备B所知道的所有更新。因此,设备C可以间接通过设备B从设备A中学习更新。
当设备B以[foo:{A:3,B:1}]的生成矢量再次向设备A发起时,设备A可以发送递增的更新A:4-A:6。因此,设备之间的通信可以与它们之间的增量的大小成比例。
冲突检测/解决
在一个实施例中,设备之间交换的每个同步日志记录可以指定被变异的对象的密钥、它的全局唯一版本和衍生出此全局唯一版本的版本(即,其父版本)。这些子对父链接可用于为每个对象创建一个表示其变异历史的DAG。DAG中的每个节点都可以表示对象的版本。DAG可用于检测冲突并记录冲突解决方案。
当父节点有多个子节点时,冲突可能会被检测到,因为每个子节点表示在不同设备上的并发变异。当冲突得到解决时,新版本可以由如图4所示的具有多个父节点的节点来表示。
在一个实施例中,当检测到冲突时,解决策略可以被给予三元组:(本地头,远程头,共同祖先)。这可以允许解决器执行三方合并并确定新的结果。接收者可以通过以下方式之一进行回复:选择本地头版本,选择远程头版本或返回新版本。
返回参照上面关于图3的示例,每当设备B与设备A同步时,设备B在本地重放新的更新以重建所涉及对象的版本历史(即,更新每个对象的DAG)。在第一次同步结束时,由于设备B没有更改,所以来自设备A的所有更新没有任何冲突地被应用。在第二次同步结束时,由于设备A是变异了密钥“foo2”和“foo3”的唯一设备,因此这些密钥没有冲突。然而,密钥“foo1”有两个同时发生的更改,并且检测到冲突。解决器获得版本(B:1,A:4,A:1)的数据,并且可以返回版本B:2的新数据。
为了使冲突解决方案最终收敛到一致的结果,重要的是,设备将每个已知对象的相同DAG结构学习并拼凑在一起。在不同的时间,设备可以知道DAG的不同子集,但是当它们将DAG片段彼此通信时,它们最终从片段构建相同的DAG。
根据设备彼此通信的顺序,冲突解决可能发生在某些设备上,而其他设备上不发生。为了使***最终保持一致,设备以确定性的和收敛的方式解决冲突。例如,如果每个设备在解决冲突时选择其自己的版本,则可能会导致冲突检测和解决方案的无休止的循环。
确定性的冲突解决方案很重要,因为不同的设备可能会同时检测到相同的冲突(例如,上述相同的三元组(B:1,A:4,A:1)),并且每个设备在与其他设备进行通信之前在本地解决它。这可能导致重复的冲突解决方案,每个方案都有其唯一的版本计数器。当它们稍后被交换后,一些设备可能还是会将它们检测为另一个冲突,而不是等同的冲突解决方案(同一组父类)之间的一个方案。
如果冲突解决器是确定性的,则它可以为等同的冲突生成相同的解决方案数据。在这种情况下,同步通过确定性地从两个中选择其中一个作为获胜者,而不涉及应用,可以在重复的解决方案之间自动解决这个冲突。然而,如果值不同,则可能会触发应用的另一个冲突解决方案,并可能导致并发的冲突解决方案之间的错误冲突的无休止的循环。因此,对于同步收敛以下条件可为真:
●对于一对象,所有设备最终都会学习相同的DAG。
●所有设备都以相同的方式解决冲突,具体为:
○确定性的:解决相同冲突的设备会产生完全相同的数据。
○互换的:不论冲突的两个版本被发现的顺序如何,冲突解决的结果都是相同的。
○关联的:不论多个冲突更改被发现和解决的顺序如何(不同的中间解决方案),冲突解决结果都是相同的。
○幂等的:相同的冲突数据应该生成相同的解决数据,而不管实际版本的变异。
处理嵌套的/重叠的前缀
在各种实施例中,上述数据交换协议可以处理具有嵌套的/重叠的前缀的同步群组。在这些情况下,通信中使用的生成矢量可以被附加到特定的前缀,因此设备可以在不同前缀中轻松地总结设备的知识。另外,版本号可以是每设备的,因此可以跨前缀进行比较。
例如,图5示出了具有以下同步群组的三个设备(A,B,C):
●同步群组SG1,具有前缀集[“foo”]以及成员A,B和C。
●同步群组SG2,具有前缀集[“f”]以及成员A和C。
在时间t=0时,设备A的更新日志具有三个变异,而设备B在密钥“foo2”上具有变异。
设备B(发起者)可以与设备A(响应者)通信以获得更新(注意A和B彼此知道,因为他们都是SG1的成员)。设备B以[foo:{B:1}]的生成矢量发起。由于设备B对以前缀“foo”开头的密钥感兴趣,所以设备A过滤它的更改日志以获得属于前缀“foo”的更新。因此,设备A以1个日志记录(fool@A:3)和[foo:{A:3,B:l}]的生成矢量来回复设备B。如此,设备B用来自设备A的更新来保持最新。
设备C可以以[foo:{C:0}]的生成矢量向设备B发起。注意,设备C向设备B请求设备C自身与设备B之间共有的那些前缀(因为它们是相同同步群组的成员)。由于设备B参与了SG1,因此它对具有前缀“foo”的密钥的所有更新作出响应。这包含两个日志记录(foo1@A:3和foo2@B:l)。设备B以[foo:{A:3,B:1,C:0}]的生成矢量进行响应。
设备C以[f:{C:0},foo:{A:3,B:1,C:0}]的生成矢量向设备A发起。对于前缀“f”,设备A从头开始并计算相关日志记录(fl@A:l)。对于前缀“foo”,它从{A:3,B:1,C:0}开始计算新增量。因此,设备A以[f:{A:3,C:0},foo:{A:3,B:1,C:0}]的生成矢量进行响应,以使设备C为最新的。
注意,通过分解知识(分成两个生成矢量,一个用于前缀“f”和一个用于“foo”),设备A和C能更有效地通信。设备A没有重新发送属于设备C已有的“foo”的密钥,而是发送了用于前缀“f”的密钥。
设备A以[f,foo:{A:3}]的生成矢量向设备C发起。设备C计算增量,并通过[f:{A:3,C:0},foo:{A:3,B:1,C:0}]的生成矢量将(foo2@B:1)发回给设备A。因此,设备A可以间接地通过设备C成功赶上设备B对“foo”前缀的更新。
然而注意,即使当“foo”是“f”的子集时,设备C也不能压缩它学到的知识(即,学习[f,foo:{A:3,B:1,C:0}])。这是因为它没有办法知道,设备B对于前缀f的状态是什么。
举例来说,可以存在设备D,该设备D是SG2的成员。当设备D与设备A或C进行通信时,它学习已分割的知识[f:{A:3,C:0},foo:{A:3,B:1,C:0}]。因此,当关于在“foo”上具有嵌套同步群组的前缀“f”同步时,“f”同步群组的成员在“foo”子集上看到生成矢量。然而,“foo”同步群组的成员将不会看到“f”同步群组的存在。
ACL可见性
精细化的ACL可以在一密钥前缀上定义并应用于一系列密钥,包括尚未创建的密钥。这些ACL也可以使用p2p协议被同步,以允许在所有设备上执行。当ACL拒绝设备对数据的读取访问时,不会发送数据(请参阅下面的协议)。然而,ACL自身可以被发送到该设备,以便它可以在本地阻止应用访问该ACL范围内的存储,并允许存储服务提供预期的应用行为。
如果未发送ACL,则该设备上的存储服务将允许应用在该ACL范围内创建数据对象和其他ACL,或者甚至可以创建同一ACL的不同版本。这将导致逻辑地分割同步群组,形成不会收敛的同步子分支。这将会让应用开发人员感到困惑,而且这也更难进行调试。出于这样的原因,该协议可以将所有ACL发送到同步群组中的所有设备,并使用ACL拒绝某些设备访问受ACL保护的数据,并同时提供关于数据访问被拒绝原因的可见性。同步群组中的所有设备都会查看并执行相同的数据访问规则。虽然这种方案可能会将密钥的存在泄漏给那些无权访问这些密钥的成员,但密钥很可能是一系列的UUID。行密钥除了它们的存在以外没有什么意义。
可选地,为了更有保护性,ACL可以被匿名,并且可以将拒绝访问传达给设备而不是发送整个ACL。
海森ACL(Heisen-ACLs)
可以创建批准和ACL,使得ACL检查的结果在没有ACL或批准已被修改的情况下更改。目前,这可以发生在:
●ACL使用组:组成员资格在ACL组服务器上更改。
●批准有警告:
○基于时间的警告:例如,批准从95周的工作日有效。
○第三方警告:例如,当设备靠近特定的其他设备时,批准是有效的。
○期满警告:例如,批准有效期为24小时。
这种ACLS被称为海森ACL。即使是诸如到期警告的警告也不限于从“被允许”到“被拒绝”的转变。过期的批准可以续订,从而重新获得访问权限。由于这些ACL可能存在不确定性,因此海森ACL(Heisen-ACL)的名称是海森堡不确定性原理的一个双关语。
增强型数据交换协议:“壳”
在同步期间交换的日志记录可以包含对该对象版本的ACL的引用。如果该ACL拒绝对同步群组成员的设备的读取访问权限,则该对象变异不能按原样被发送。但是可以发送一些信息来指示设备失去对该对象的访问权限,并且如前所述,还可以维护DAG结构。
在这种情况下,被发送的日志记录可能会被剥离以从中移除对象数据,从而变为该日志记录以前的本身的壳。这被称为发送DAG壳,而不是常规的完整DAG节点。壳可以包含以下一个或多个:
●对象密钥
●对象版本
●对象父版本
●控制此对象的特定ACL版本的引用
●指示它是壳记录的布尔标志
壳可以告知接收设备该对象不再对它的应用可见。存储服务更新存储中的ACL,该ACL阻止应用访问该对象。如果稍后ACL被更改以重新启用该设备的访问权限,则ACL会将新变异作为常规的完整DAG节点接收,并且存储服务将更新该对象及其新数据和在存储中的ACL,使其对应用可见。
在一个实施例中,对于创建之初就对某些设备不可见的对象,协议可以发送被进一步剥离以移除对象密钥及其父版本、保留对象版本、和对控制对象和布尔标志的特定ACL版本的引用的壳。这可以避免将包含应用元数据的对象密钥的存在暴露给还不知道该密钥并且尚未获得访问权的设备。这个简化的壳包含足够的信息(即对象版本),以允许存储服务尝试重新提取数据以检查它是否获得访问权限,并延迟共享对象密钥直到访问权限被授予。图6示出了根据实施例的对象可见/不可见转变的示例。
使用壳的冲突检测和解决方案
DAG中的壳的存在会对冲突检测和解决方案造成分歧。例如,如果壳是冲突的共同祖先,并且已知解决器需要共同的祖先,则可以在该设备上跳过冲突解决方案。访问该共同祖先的另一个设备需要最终解决冲突。实际上,设备上的对象DAG用不会被本地头版本合并的悬空片段保持“打开”状态,直到另一设备解决冲突并发回结果DAG片段与对象DAG合并。该设备可以继续在其自己的对象版本上取得进展,并且还会学习从另一个头部(悬空片段)衍生的变异,但不能将两个片段绑定在一起并自行解决冲突。
作为另一个示例,如果壳是共同祖先,但是冲突解决器不需要它(例如上次时间戳获胜),那么冲突解决就完成了。
作为另一个示例,如果壳是本地头或远程头,则存在ACL数据冲突或ACL-ACL冲突:设备更改了数据或ACL,而同时另一设备更改了ACL(也可能是数据)来拒绝对此设备的读取访问权限。解决方案被跳过,留给另一个可以看到这两个更改的设备以决定如何解决这个冲突。
在信息不完整的对象上不会发生冲突解决,因为它可能违反了在任何设备上以相同方式解决相同冲突的收敛要求。知识不完整的设备会将解决方案推迟到其他设备。
设备可以从按照同步群组ACL(成员身份验证)的同步群组中允许的其他设备请求并接受同步更新。传入数据、完整节点和壳可以被附加到DAG。对每个数据对象的访问可以通过前缀ACL对象(具有最长匹配前缀的对象)的设置来保护,并且ACL对象也被同步(类似于使用完整节点或壳的数据对象)。
可以首先处理ACL对象版本之间的冲突解决。鉴于存储服务已知ACL方案,则根据创建同步群组时选择的策略自动完成冲突解决。
在解决数据对象之间的冲突时,可以考虑ACL设置,以确定远程版本应该对本地设备可见还是忽略。
重新提取壳并提升到完整的DAG节点
由于大多数精细化的ACL是海森ACL,所以访问拒绝可能是短暂的,如果稍后重试ACL检查(例如基于时间或基于位置的警告),则可以授予访问权限。这对于在DAG中具有重要角色的壳很重要,例如,将壳作为非冲突DAG片段的头节点,将壳作为DAG冲突中的另一个头节点,或将壳作为需要共同祖先解决的冲突的共同祖先(与像最后一个赢的不需要祖先的政策相反)。
存储服务可以跟踪它认为重要的DAG壳的子集,并要求它与之同步的下一个设备重新检查对这些特定变异的访问权限。存储服务可以通过与生成矢量一起发送要提取的过去变异版本的列表以及日志记录的新增量来做上述操作。响应设备可以使用此生成矢量来计算增量。如果请求设备这次通过ACL检查,则它可能会添加任何过去的日志记录到此常规答复中。
实际上,这个动作会填充某些壳的缺失信息,将它们从壳提升到完整的DAG节点。接收设备可以采取适当的动作,例如解决仍然待定的冲突,并更新存储中的头节点值及头节点。可选地,该协议可以请求所有的壳节点,而不是那些被认为重要的壳节点。
过去变异的列表可以被编码以减少线上的字节(请求的大小):(1)运行长度编码或压缩,(2)使用两轮往返旅行,在第一轮中发送先前被拒绝的ACL列表以确定哪些是现在允许的,并在第二次往返旅行中发送与新允许的ACL相匹配的过去变异的列表。
图7描绘了可用于包含或实现程序指令的硬件的框图。总线700用作互连硬件的其他所示组件的信息高速公路。处理器(CPU)705是***的中央处理设备,执行计算和逻辑操作以执行程序。CPU 705是生产设备、计算设备或处理器的示例,在本公开内容中使用这样的术语。只读存储器(ROM)710和随机存取存储器(RAM)715构成非临时性计算机可读存储介质的示例。
控制器720与一个或多个可选的非暂时性计算机可读存储介质(即,内存设备725)连接到***总线700。这些存储介质可以包括例如外部或内部DVD驱动器,CD ROM驱动器,硬盘驱动器,闪存,USB驱动器等。如前所述,这些各种驱动器和控制器都是可选设备。
用于提供接口和执行与一个或多个数据集相关联的任何查询或分析的程序指令、软件或交互式模块可以被存储在ROM 710和/或RAM 715中。可选地,程序指令可以被存储在上面讨论的存储介质725上。
可选的显示接口730可允许来自总线700的信息以音频、视觉、图形或字母数字格式显示在显示器735上。可以使用各种通信端口740进行与诸如打印设备的外部设备的通信。通信端口740可以附接到通信网络,例如因特网或内联网。
硬件还可以包括接口745,其允许从诸如键盘750或诸如鼠标、触摸板、触摸屏、遥控器、指向设备、视频输入设备和/或音频输入设备等其他输入设备755的输入设备接收数据。
上述特征和功能以及替代方案可以组合成许多其他不同的***或应用。本领域技术人员可以做出各种替换,修改,变化或改进,其中的每一个也旨在被所公开的实施例所涵盖。
Claims (19)
1.一种创建同步群组的方法,其特征在于,所述方法包括:
由与第一电子设备相关联的存储服务接收来自应用的创建同步群组的请求,其中,所述第一电子设备是离线的;
由所述存储服务验证所述应用对所述存储服务具有读取访问权限;
响应于验证所述应用具有对所述存储服务的读取访问权限,通过以下操作在所述存储服务内本地创建所述同步群组:
接收存储在所述存储服务中的将被共享的一个或多个对象的指示,
标识所述同步群组的一个或多个用户成员,所述一个或多个用户成员共享所述一个或多个对象,每个用户成员与一个或多个成员电子设备相关联,以及
分配一组可能的许可中的一个或多个许可给与被标识的所述用户成员相关联的所述一个或多个成员电子设备,所述一组可能的许可包括读取访问权限、写入访问权限、以及访问权限;
对离线的所述第一电子设备和与所述一个或多个用户成员相关联的所述一个或多个成员电子设备中的对象的访问权限进行同步,使得当所述成员电子设备处于离线的所述第一电子设备的近程通信发射机的范围内时,所述对象可经由所述成员电子设备中的每一个被访问,其中,所述成员电子设备对所述对象的访问权限是依照所分配的所述一个或多个许可以及依照一个或多个冲突解决策略而被同步的;
由所述第一电子设备检测有利于与同步群组服务器通信的网络连接;以及
由所述第一电子设备经由检测到的所述网络连接,将标识所述同步群组的信息发送到所述同步群组服务器,以便在所述一个或多个成员电子设备不再处于所述第一电子设备的所述近程通信发射器的范围内时,通过所述同步群组服务器继续进行同步。
2.根据权利要求1所述的方法,其特征在于,还包括:
分配唯一名称给所述同步群组;和
发布所述唯一名称到所述成员电子设备可访问的列表。
3.根据权利要求1所述的方法,其特征在于,其中每个所述成员电子设备是离线的。
4.根据权利要求1所述的方法,其特征在于,还包括:分配唯一名称给所述同步群组。
5.根据权利要求1所述的方法,其特征在于,分配所述一个或多个许可包括:生成访问控制列表(ACL),所述访问控制列表指示哪个所述成员电子设备被许可访问所述对象。
6.根据权利要求1所述的方法,其特征在于,进一步包括:
从离线的所述第一电子设备接收对所述一个或多个对象的特定对象的第一修改;
从所述一个或多个成员电子设备中的第二设备接收对所述特定对象的第二修改;
确定所述第一修改和所述第二修改之间存在冲突;
通过基于对所述特定对象所作的修改的祖先记录并按照所述一个或多个冲突解决策略选择所述第一修改和所述第二修改中的一个来解决所述冲突,其中所述一个或多个冲突解决策略包括用于选择由所述同步群组的成员所作的修改的一个或多个确定性规则。
7.一种创建同步群组的方法,其特征在于,所述方法包括:
由与第一电子设备相关联的存储服务接收来自应用的创建同步群组的请求;
由所述存储服务验证所述应用对所述存储服务具有读取访问权限;
响应于验证所述应用具有对所述存储服务的读取访问权限,通过以下操作在所述存储服务内本地创建所述同步群组:
接收存储在所述存储服务中的将被共享的一个或多个对象的指示,
标识所述同步群组的一个或多个用户成员,所述一个或多个用户成员共享所述一个或多个对象,每个用户成员与一个或多个成员电子设备相关联,以及
分配一组可能的许可中的一个或多个许可给与被标识的所述用户成员相关联的所述一个或多个成员电子设备,所述一组可能的许可包括读取访问权限、写入访问权限、以及访问权限,
标识与所述同步群组相关联的同步群组服务器;
检测有利于与所述同步群组服务器通信的网络连接;
使用检测到的所述网络连接,发送通知给所述同步群组服务器,所述通知告知所述同步群组服务器所述同步群组已在所述存储服务内被本地创建;和
对所述第一电子设备和与所述一个或多个成员相关联的一个或多个成员电子设备中的对象的访问权限进行同步,使得所述对象在任何时候可经由所述成员电子设备中的每一个被访问,而不管所述第一电子设备那时是否在执行所述应用,其中,所述成员电子设备对所述对象的访问权限是依照所分配的所述一个或多个许可以及进一步依照一个或多个冲突解决策略而被同步的。
8.根据权利要求7所述的方法,其特征在于,还包括:
分配唯一名称给所述同步群组;和
发布所述唯一名称到所述成员电子设备可访问的列表。
9.根据权利要求7所述的方法,其特征在于,还包括:分配唯一名称给所述同步群组。
10.根据权利要求7所述的方法,其特征在于,分配所述一个或多个许可包括:生成访问控制列表(ACL),所述访问控制列表指示哪个所述成员电子设备被许可访问所述对象。
11.根据权利要求7所述的方法,其特征在于,发送通知给所述同步群组服务器包括:使用一个或多个远程过程调用与所述同步群组服务器通信。
12.一种用于在分布式***中创建同步群组的***,其特征在于,所述***包括:
第一电子设备,所述第一电子设备包括近程通信发射机和存储服务,其中所述第一电子设备是离线的;和
计算机可读存储介质,所述计算机可读存储介质包括一个或多个编程指令,所述编程指令在被执行时使离线的所述第一电子设备:
接收来自应用的创建同步群组的请求,
验证所述应用具有对所述存储服务的读取权限,
响应于验证所述应用具有对所述存储服务的读取访问权限,通过以下操作在所述存储服务内本地创建所述同步群组:
接收存储在所述存储服务中的将被共享的一个或多个对象的指示,
标识所述同步群组的一个或多个用户成员,每个用户成员与一个或多个成员电子设备相关联,和
分配一组可能的许可中的一个或多个许可给与被标识的所述用户成员相关联的所述一个或多个成员电子设备,所述一组可能的许可包括读取访问权限、写入访问权限、以及访问权限,
对离线的所述第一电子设备和与所述一个或多个用户成员相关联的所述一个或多个成员电子设备中的对象的访问权限进行同步,使得当所述成员电子设备处于所述第一电子设备的所述发射机的范围内时,所述对象可经由所述成员电子设备中的每一个被访问,其中,所述成员电子设备对所述对象的访问权限是依照所分配的所述一个或多个许可以及进一步依照一个或多个冲突解决策略而被同步的;
由所述第一电子设备检测有利于与同步群组服务器通信的网络连接;以及
由所述第一电子设备经由检测到的所述网络连接,将标识所述同步群组的信息发送到所述同步群组服务器,以便在所述一个或多个成员电子设备不再处于所述第一电子设备的所述近程通信发射器的范围内时,通过所述同步群组服务器继续进行同步。
13.根据权利要求12所述的***,其特征在于,所述计算机可读存储介质还包括:一个或多个指令,所述一个或多个指令在被执行时使离线的所述第一电子设备:
分配唯一名称给所述同步群组,以使所述唯一名称包含同步群组服务器的名称;和
发布所述唯一名称到所述成员电子设备可访问的列表。
14.根据权利要求13所述的***,其特征在于,所述计算机可读存储介质还包括:一个或多个指令,所述一个或多个指令在被执行时使所述第一电子设备:检测网络连接并作为响应,发送创建所述同步群组的请求给同步群组服务器。
15.根据权利要求13所述的***,其特征在于,在被执行时使所述第一电子设备分配一个或多个许可的所述一个或多个编程指令包括在被执行时使所述第一电子设备生成访问控制列表(ACL)的一个或多个编程指令,所述访问控制列表指示哪个所述成员电子设备被许可访问所述对象。
16.一种用于在分布式***中创建同步群组的***,其特征在于,所述***包括:
第一电子设备,包括存储服务;和
计算机可读存储介质,所述计算机可读存储介质包括一个或多个编程指令,所述一个或多个编程指令在被执行时使所述第一电子设备:
接收来自应用的创建同步群组的请求,
验证所述应用具有对所述存储服务的读取权限,
响应于验证所述应用具有对所述存储服务的读取访问权限,通过以下操作在所述存储服务内本地创建所述同步群组:
接收存储在所述存储服务中的将被共享的一个或多个对象的指示,
标识所述同步群组的一个或多个用户成员,每个用户成员与一个或多个成员电子设备相关联,和
分配一组可能的许可中的一个或多个许可给与被标识的所述用户成员相关联的所述一个或多个成员电子设备,所述一组可能的许可包括读取访问权限、写入访问权限、以及访问权限,
标识与所述同步群组相关联的同步群组服务器,
检测有利于与所述同步群组服务器通信的网络连接;
使用检测到的所述网络连接,发送通知给所述同步群组服务器,所述通知告知所述同步群组服务器所述同步群组已在所述存储服务内被本地创建,和
对所述第一电子设备和与所述一个或多个成员相关联的一个或多个成员电子设备中的对象的访问权限进行同步,使得所述对象在任何时候可经由所述成员电子设备中的每一个被访问,而不管所述第一电子设备那时是否在执行所述应用,其中,所述成员电子设备对所述对象的访问权限是依照所分配的所述一个或多个许可以及进一步依照一个或多个冲突解决策略而被同步的。
17.根据权利要求16所述的***,其特征在于,所述计算机可读存储介质还包括:一个或多个指令,所述一个或多个指令在被执行时使所述第一电子设备:
分配唯一名称给所述同步群组,以使所述唯一名称包含所述同步群组服务器的名称;和
发布所述唯一名称到所述成员电子设备可访问的列表。
18.根据权利要求16所述的***,其特征在于,所述计算机可读存储介质还包括:一个或多个指令,所述一个或多个指令在被执行时,使所述第一电子设备分配唯一名称给所述同步群组,以使所述唯一名称包含同步群组服务器的名称。
19.根据权利要求16所述的***,其特征在于,在被执行时使所述第一电子设备分配一个或多个许可的所述一个或多个编程指令包括在被执行时使所述第一电子设备生成访问控制列表(ACL)的一个或多个编程指令,所述访问控制列表指示哪个成员电子设备被许可访问所述对象。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210416343.0A CN114756520A (zh) | 2015-10-02 | 2016-09-30 | 用于在计算***中同步离线数据的方法和*** |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562236480P | 2015-10-02 | 2015-10-02 | |
US62/236,480 | 2015-10-02 | ||
PCT/US2016/054859 WO2017059290A1 (en) | 2015-10-02 | 2016-09-30 | Peer-to-peer syncable storage system |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210416343.0A Division CN114756520A (zh) | 2015-10-02 | 2016-09-30 | 用于在计算***中同步离线数据的方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108140031A CN108140031A (zh) | 2018-06-08 |
CN108140031B true CN108140031B (zh) | 2022-05-17 |
Family
ID=57133445
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210416343.0A Pending CN114756520A (zh) | 2015-10-02 | 2016-09-30 | 用于在计算***中同步离线数据的方法和*** |
CN201680056479.8A Active CN108140031B (zh) | 2015-10-02 | 2016-09-30 | 对等可同步存储*** |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210416343.0A Pending CN114756520A (zh) | 2015-10-02 | 2016-09-30 | 用于在计算***中同步离线数据的方法和*** |
Country Status (4)
Country | Link |
---|---|
US (3) | US11240298B2 (zh) |
EP (1) | EP3356961B1 (zh) |
CN (2) | CN114756520A (zh) |
WO (1) | WO2017059290A1 (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10432461B2 (en) | 2015-12-04 | 2019-10-01 | T-Mobile Usa, Inc. | Peer-to-peer distribution of radio protocol data for software defined radio (SDR) updates |
US10263957B2 (en) * | 2016-05-31 | 2019-04-16 | Arista Networks, Inc. | System and method for a fallback access control list port configuration |
US10362482B2 (en) | 2016-12-21 | 2019-07-23 | T-Mobile Usa, Inc. | Network operation and trusted execution environment |
US10339344B2 (en) | 2017-09-28 | 2019-07-02 | Blind Insites Llc | Electromagnetic marking device and methods for its use |
CN107741994B (zh) * | 2017-11-09 | 2021-09-07 | 校脸科技(北京)有限公司 | 一种数据更新方法及装置 |
US11089133B1 (en) | 2017-11-22 | 2021-08-10 | Amazon Technologies, Inc. | Synchronizing data with delayed subscriptions |
US11126610B1 (en) * | 2017-11-22 | 2021-09-21 | Amazon Technologies, Inc. | Conflict resolution in a data proxy |
US11159634B1 (en) | 2017-11-22 | 2021-10-26 | Amazon Technologies, Inc. | Subscription fan out |
US10891282B1 (en) | 2017-11-22 | 2021-01-12 | Amazon Technologies, Inc. | Mutations with immediate feedback |
KR102661806B1 (ko) * | 2018-11-27 | 2024-04-30 | 삼성전자주식회사 | 디스플레이 장치의 제어 방법 및 그에 따른 디스플레이 장치 |
US11115291B2 (en) * | 2018-12-10 | 2021-09-07 | Cisco Technology, Inc. | Configuring an appliance using intent-based information of a network |
US11516084B2 (en) * | 2019-01-31 | 2022-11-29 | EMC IP Holding Company LLC | Device compatibility in a communication architecture |
CN113519148B (zh) * | 2019-03-06 | 2023-03-10 | 华为技术有限公司 | P2p网络中的数据同步的方法和*** |
US11860897B2 (en) | 2019-06-07 | 2024-01-02 | Samsung Electronics Co., Ltd. | Method for using catch-up logging to time-synchronize object stores during maintenance or recovery operations |
CN111159440A (zh) * | 2019-12-20 | 2020-05-15 | 维沃移动通信有限公司 | 图片同步方法、装置及电子设备 |
CN111209462B (zh) * | 2020-01-02 | 2021-05-18 | 北京字节跳动网络技术有限公司 | 数据处理方法、装置及设备 |
CN112202746B (zh) * | 2020-09-24 | 2023-04-21 | 北京百度网讯科技有限公司 | Rpc成员信息获取方法、装置、电子设备和存储介质 |
US11792194B2 (en) * | 2020-12-17 | 2023-10-17 | Zscaler, Inc. | Microsegmentation for serverless computing |
CN112583930B (zh) * | 2020-12-25 | 2023-04-18 | 四川安迪科技实业有限公司 | 用于多独立***交互的数据转发同步方法、***及装置 |
CN113746908A (zh) * | 2021-08-19 | 2021-12-03 | 卓尔智联(武汉)研究院有限公司 | 数据处理方法及***、电子设备及计算机存储介质 |
WO2023211714A1 (en) * | 2022-04-27 | 2023-11-02 | Couchbase, Inc. | Access control system for access revocation in a database |
US20230409386A1 (en) * | 2022-06-15 | 2023-12-21 | International Business Machines Corporation | Automatically orchestrating a computerized workflow |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1609858A (zh) * | 2003-10-24 | 2005-04-27 | 微软公司 | 对等组共享空间中进行文件共享的***和方法 |
Family Cites Families (73)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
NZ500372A (en) | 1995-06-05 | 2001-04-27 | Certco Inc | Delegated use of electronic signature |
JPH10333953A (ja) | 1997-04-01 | 1998-12-18 | Kokusai Zunou Sangyo Kk | 統合データベースシステムおよびそのデータベース構造を管理するプログラムを記録したコンピュータ読み取り可能な記録媒体 |
US7178029B2 (en) | 1998-08-18 | 2007-02-13 | Privador, Ltd | Method and apparatus for validating a digital signature |
US7949606B1 (en) * | 1999-12-03 | 2011-05-24 | William Sweet | Intellectual property brokerage system and method |
US20040024483A1 (en) | 1999-12-23 | 2004-02-05 | Holcombe Bradford L. | Controlling utility consumption |
IL137086A (en) | 2000-06-29 | 2004-06-20 | Enavis Networks Ltd | Method and system for fast synchronization of multiframe structures using periodic signatures |
US6470329B1 (en) | 2000-07-11 | 2002-10-22 | Sun Microsystems, Inc. | One-way hash functions for distributed data synchronization |
EP1368736A2 (en) * | 2001-01-11 | 2003-12-10 | Z-Force Communications, Inc. | File switch and switched file system |
US7146399B2 (en) | 2001-05-25 | 2006-12-05 | 2006 Trident Company | Run-time architecture for enterprise integration with transformation generation |
US7017183B1 (en) | 2001-06-29 | 2006-03-21 | Plumtree Software, Inc. | System and method for administering security in a corporate portal |
US7668842B2 (en) | 2002-10-16 | 2010-02-23 | Microsoft Corporation | Playlist structure for large playlists |
US7328243B2 (en) | 2002-10-31 | 2008-02-05 | Sun Microsystems, Inc. | Collaborative content coherence using mobile agents in peer-to-peer networks |
US7701953B2 (en) * | 2002-11-04 | 2010-04-20 | At&T Intellectual Property I, L.P. | Client server SVC-based DSL service |
US20040156504A1 (en) | 2002-12-16 | 2004-08-12 | Mo Shaomin Samuel | Method and apparatus reducing discrete components of repetitive ultra wideband signals |
US7536476B1 (en) | 2002-12-20 | 2009-05-19 | Cisco Technology, Inc. | Method for performing tree based ACL lookups |
US8321534B1 (en) * | 2003-10-15 | 2012-11-27 | Radix Holdings, Llc | System and method for synchronization based on preferences |
US7421280B2 (en) | 2003-11-14 | 2008-09-02 | Samsung Electronics Co., Ltd. | Wireless network and wireless access terminals using enhanced SYNC—ID parameter |
EP1738251A2 (en) * | 2004-04-16 | 2007-01-03 | Cascade Basic Research Corp. | Modelling relationships within an on-line connectivity universe |
US7383291B2 (en) | 2004-05-24 | 2008-06-03 | Apple Inc. | Method for sharing groups of objects |
WO2006053019A2 (en) | 2004-11-08 | 2006-05-18 | Sharpcast, Inc. | Method and apparatus for a file sharing and synchronization system |
US8549176B2 (en) | 2004-12-01 | 2013-10-01 | Cisco Technology, Inc. | Propagation of routing information in RSVP-TE for inter-domain TE-LSPs |
US9489717B2 (en) * | 2005-01-31 | 2016-11-08 | Invention Science Fund I, Llc | Shared image device |
US8261058B2 (en) | 2005-03-16 | 2012-09-04 | Dt Labs, Llc | System, method and apparatus for electronically protecting data and digital content |
US20110110568A1 (en) * | 2005-04-08 | 2011-05-12 | Gregory Vesper | Web enabled medical image repository |
CN100563150C (zh) | 2005-07-14 | 2009-11-25 | 华为技术有限公司 | 一种分布式的身份证书签发方法 |
US8150416B2 (en) * | 2005-08-08 | 2012-04-03 | Jambo Networks, Inc. | System and method for providing communication services to mobile device users incorporating proximity determination |
US8189774B2 (en) | 2006-01-06 | 2012-05-29 | Fujitsu Semiconductor Limited | Processors for network communications |
US8707375B2 (en) * | 2006-04-05 | 2014-04-22 | At&T Intellectual Property I, L.P. | Peer-to-peer video on demand techniques |
US8381306B2 (en) * | 2006-05-30 | 2013-02-19 | Microsoft Corporation | Translating role-based access control policy to resource authorization policy |
US7953785B2 (en) * | 2006-06-30 | 2011-05-31 | Microsoft Corporation | Content synchronization in a file sharing environment |
US20080021720A1 (en) | 2006-07-18 | 2008-01-24 | Glinberg Steven J | System And Method For Tracking Charitable Donations |
US20080263103A1 (en) | 2007-03-02 | 2008-10-23 | Mcgregor Lucas | Digital asset management system (DAMS) |
US7860525B2 (en) * | 2007-04-25 | 2010-12-28 | Nokia Corporation | System, method, and computer program product for service and application configuration in a network device |
US11159909B2 (en) * | 2008-02-05 | 2021-10-26 | Victor Thomas Anderson | Wireless location establishing device |
US9200901B2 (en) * | 2008-06-19 | 2015-12-01 | Microsoft Technology Licensing, Llc | Predictive services for devices supporting dynamic direction information |
US9781148B2 (en) | 2008-10-21 | 2017-10-03 | Lookout, Inc. | Methods and systems for sharing risk responses between collections of mobile communications devices |
US20100106713A1 (en) | 2008-10-28 | 2010-04-29 | Andrea Esuli | Method for performing efficient similarity search |
US9112875B2 (en) * | 2009-08-04 | 2015-08-18 | Sam Zaid | System and method for anonymous addressing of content on network peers and for private peer-to-peer file sharing |
WO2011073976A1 (en) * | 2009-12-14 | 2011-06-23 | Daj Asparna Ltd. | Revision control system and method |
US8209361B2 (en) | 2010-01-19 | 2012-06-26 | Oracle International Corporation | Techniques for efficient and scalable processing of complex sets of XML schemas |
CN103026354A (zh) | 2010-03-17 | 2013-04-03 | 瑞典爱立信有限公司 | 用于具有多个架构的表的数据库存储的方法 |
US8161351B2 (en) | 2010-03-30 | 2012-04-17 | Lsi Corporation | Systems and methods for efficient data storage |
US10419266B2 (en) | 2010-05-28 | 2019-09-17 | Ram Caspi | Methods and apparatus for interactive social TV multimedia communication |
CN101964789B (zh) | 2010-09-26 | 2013-11-20 | 飞天诚信科技股份有限公司 | 安全访问受保护资源的方法及*** |
US20130091214A1 (en) * | 2011-10-08 | 2013-04-11 | Broadcom Corporation | Media social network |
US8782004B2 (en) | 2012-01-23 | 2014-07-15 | Palantir Technologies, Inc. | Cross-ACL multi-master replication |
CN104205089B (zh) | 2012-02-29 | 2018-10-16 | 全球文档***控股有限责任公司 | 流识别和过滤 |
US8949179B2 (en) * | 2012-04-23 | 2015-02-03 | Google, Inc. | Sharing and synchronizing electronically stored files |
WO2013169974A1 (en) * | 2012-05-11 | 2013-11-14 | Interdigital Patent Holdings, Inc. | Context-aware peer-to-peer communication |
CN103490886B (zh) * | 2012-06-12 | 2017-04-05 | 阿里巴巴集团控股有限公司 | 权限数据的验证方法、装置及*** |
US20140030980A1 (en) * | 2012-07-26 | 2014-01-30 | Mark D'AMBROSIO | Mobile user content sharing application |
US9276749B2 (en) | 2012-07-31 | 2016-03-01 | Adobe Systems Incorporated | Distributed validation of digitally signed electronic documents |
US9600552B2 (en) * | 2012-10-02 | 2017-03-21 | Nextbit Systems Inc. | Proximity based application state synchronization |
US9258282B2 (en) | 2012-10-24 | 2016-02-09 | Cisco Technology, Inc. | Simplified mechanism for multi-tenant encrypted virtual networks |
EP3709730A1 (en) * | 2013-01-16 | 2020-09-16 | Interdigital Patent Holdings, Inc. | Discovery signal generation and reception |
US9077759B2 (en) | 2013-01-18 | 2015-07-07 | Apple Inc. | Conflict resolution for keychain syncing |
US9154502B2 (en) * | 2013-01-31 | 2015-10-06 | Google Inc. | Accessing objects in hosted storage |
CN105308646B (zh) * | 2013-02-05 | 2019-08-13 | 艾韦尼克斯股份有限公司 | 利用关联的医疗装置管理的***和方法 |
US9301127B2 (en) * | 2013-02-06 | 2016-03-29 | Blackberry Limited | Persistent network negotiation for peer to peer devices |
US20140257953A1 (en) * | 2013-03-08 | 2014-09-11 | Vyral Limited Liability Company | Method and apparatus to anonymously communicate encrypted content between mobile devices in proximity and in expanded user communities in a contagious, viral manner |
US9088573B2 (en) * | 2013-03-22 | 2015-07-21 | Dropbox, Inc. | Local server for synced online content management system |
US8838836B1 (en) * | 2013-06-25 | 2014-09-16 | Actiontec Electronics, Inc. | Systems and methods for sharing digital information between mobile devices of friends and family using multiple LAN-based embedded devices |
US20150019982A1 (en) * | 2013-07-12 | 2015-01-15 | Felix Houston Petitt, JR. | System, devices, and platform for security |
US9426140B2 (en) * | 2013-09-09 | 2016-08-23 | Layer, Inc. | Federated authentication of client computers in networked data communications services callable by applications |
CA2899996C (en) | 2013-12-11 | 2020-04-14 | Intralinks, Inc. | Customizable secure data exchange environment |
WO2015164521A1 (en) * | 2014-04-23 | 2015-10-29 | Intralinks, Inc. | Systems and methods of secure data exchange |
US9883472B1 (en) * | 2014-04-30 | 2018-01-30 | Marvell International Ltd. | Methods and apparatus for beaconing within a wireless network based on an indication of distance |
US10104019B2 (en) * | 2014-05-27 | 2018-10-16 | Magnet Forensics Inc. | Systems and methods for locating application-specific data on a remote endpoint computer |
US9716903B2 (en) * | 2014-07-31 | 2017-07-25 | Diego Cardona | Live streaming-TV content, acquisition, transformation, encryption, and distribution system, and method for its use |
US10856123B2 (en) * | 2014-08-25 | 2020-12-01 | The Sscg Group, Llc | Content management and presentation systems and methods |
JP6483433B2 (ja) | 2014-12-25 | 2019-03-13 | Dynabook株式会社 | システム及び電子機器 |
US10198182B2 (en) * | 2015-05-31 | 2019-02-05 | Apple Inc. | Synchronization and verification groups among related devices |
US20170235970A1 (en) | 2016-02-11 | 2017-08-17 | Daniel CONNER | Scalable data verification with immutable data storage |
-
2016
- 2016-09-30 WO PCT/US2016/054859 patent/WO2017059290A1/en unknown
- 2016-09-30 EP EP16781634.7A patent/EP3356961B1/en active Active
- 2016-09-30 CN CN202210416343.0A patent/CN114756520A/zh active Pending
- 2016-09-30 CN CN201680056479.8A patent/CN108140031B/zh active Active
- 2016-10-03 US US15/284,078 patent/US11240298B2/en active Active
-
2019
- 2019-12-12 US US16/711,933 patent/US11223677B2/en active Active
-
2022
- 2022-01-19 US US17/578,948 patent/US11677820B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1609858A (zh) * | 2003-10-24 | 2005-04-27 | 微软公司 | 对等组共享空间中进行文件共享的***和方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2017059290A1 (en) | 2017-04-06 |
US20200145483A1 (en) | 2020-05-07 |
EP3356961B1 (en) | 2020-05-27 |
EP3356961A1 (en) | 2018-08-08 |
CN114756520A (zh) | 2022-07-15 |
US11223677B2 (en) | 2022-01-11 |
US20170099347A1 (en) | 2017-04-06 |
US11677820B2 (en) | 2023-06-13 |
US20220217203A1 (en) | 2022-07-07 |
US11240298B2 (en) | 2022-02-01 |
CN108140031A (zh) | 2018-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108140031B (zh) | 对等可同步存储*** | |
US20220086043A1 (en) | Community Internet Drive | |
CN110417844B (zh) | 使用区块链分散管理多所有者节点的***和方法 | |
CN109691057B (zh) | 经由私人内容分发网络可交换地取回敏感内容 | |
US20190139047A1 (en) | Block chain based resource management | |
CN110192198B (zh) | 访问存储的资源的安全性 | |
US11399076B2 (en) | Profile information sharing | |
JP2009503632A (ja) | 非管理ネットワークにおける共通識別情報のアカウント同期 | |
US11588635B2 (en) | Strong resource identity in a cloud hosted system | |
US11849053B2 (en) | Automation of user identity using network protocol providing secure granting or revocation of secured access rights | |
TW202226802A (zh) | 分布式帳本系統 | |
WO2009133419A1 (en) | Method, apparatus, and computer program product for providing a group based decentralized authorization mechanism | |
JP2023544518A (ja) | オペレーティングシステムを公開するためのブロックチェーンベースのシステムおよび方法 | |
CN112307116A (zh) | 基于区块链的数据访问控制方法、装置及设备 | |
EP3474247B1 (en) | Media content privacy control | |
JP2020038438A (ja) | 管理装置、管理システム及びプログラム | |
US20150242501A1 (en) | Social network address book | |
CN107968739B (zh) | 一种群组消息的查看方法、装置及服务器 | |
US11943211B2 (en) | Device monitoring in accessing network | |
CN116711263A (zh) | 共识自动化 | |
Krishnan et al. | Cloud Storage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |