CN108027828A - 与无状态同步节点的托管文件同步 - Google Patents
与无状态同步节点的托管文件同步 Download PDFInfo
- Publication number
- CN108027828A CN108027828A CN201680052057.3A CN201680052057A CN108027828A CN 108027828 A CN108027828 A CN 108027828A CN 201680052057 A CN201680052057 A CN 201680052057A CN 108027828 A CN108027828 A CN 108027828A
- Authority
- CN
- China
- Prior art keywords
- role
- file
- request
- synchronous
- storage
- 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.)
- Granted
Links
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/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- 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
-
- 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
- G06F16/1824—Distributed file systems implemented using Network-attached Storage [NAS] architecture
- G06F16/183—Provision of network file services by network file servers, e.g. by using NFS, CIFS
-
- 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/1873—Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files
-
- 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/235—Update request formulation
-
- 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/2379—Updates performed during online database operations; commit processing
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
在此公开了一种用于同步来自托管文件系统的文件的系统和方法,其中客户端端点设备具有对托管文件存储上存储的文件的直接访问。当客户希望与在托管文件存储上存储的文件同步时,该处理识别可处理该请求的同步角色。特定的同步角色不需要维护与客户端设备或文件存储的状态。对于同步过程的处理必要的状态与同步角色保持分离,使得系统中的任意同步角色都可以挑选请求并处理请求。一旦角色被选择,同步过程将照常进行。由于状态不是由同步角色维护的,因此多个角色可以处理该请求,或者两个角色可以处置该过程的不同部分。
Description
背景技术
多年来已经产生了各种文件同步解决方案。在这些解决方案中,同步端点对于用户和应用程序是可访问的。在文件被创建、修改或删除时,主动-主动同步引擎负责同步这些改变并使所有端点达到一致状态。一些同步解决方案支持具有托管文件端点。然而,这些解决方案受到以下限制中的一者或两者的影响。首先,托管端点对终端用户或应用程序是不可访问的。相反,托管端点只能作为在其他(非云)端点之间的同步文件的“中枢”。其次,托管端点可能是可访问的,但只能经由同步解决方案特定的访问协议访问。基本上,没有对托管端点处的文件的“直接访问”。相反,应用程序或服务必须实现同步解决方案特定的协议,并通过同步解决方案作为中间层来访问该文件。此外,同步会话要求某个状态在整个会话中保持不变。这要求状态在服务节点和两个端点之间被维护,使得在可扩展的系统中,该过程与特定节点绑定。
发明内容
为了向读者提供基本的理解,下面给出了本公开的简要概述。本发明内容不是本公开的扩展概述,并且它不标识本发明的关键/重要要素或描绘本发明的范围。其唯一目的是以简化的形式呈现本文公开的一些概念,作为稍后呈现的更详细描述的前序。
本公开提出了一种可以用来同步来自托管文件系统的文件的系统和方法,其中客户端端点设备具有对存储在托管文件存储/系统上的文件的直接访问。当客户端希望与存储在托管文件存储上的文件同步时,该过程在可处理该请求的托管平台上识别同步角色。特定的同步角色不需要维护状态或文件存储。对于同步过程的处理所必须的状态与同步角色分离地被维护,使得系统中的任意同步角色都可以挑选请求并处理请求。一旦角色被选择,同步过程将照常进行。由于状态不是由同步角色维护的,因此多个角色可以处理该请求,或者两个角色可以处置同步过程的不同部分。这允许核心服务基于需要来放大或缩小同步角色的大小,并且高效地管理资源的使用。
许多伴随的特征可以被更好地理解,因为通过参考结合附图考虑的以下详细描述,许多伴随的特征将变得更好理解。
附图说明
根据附图阅读以下详细描述,将更好地理解本说明书,在附图中:
图1是示出了根据一个示意实施例的文件同步系统的组件的高层框图。
图2是根据示意实施例的文件同步系统的框图,其中客户端设备具有对托管文件存储的直接访问。
图3是示出了根据一个示意实施例的用于使客户端和托管端点的文件与无状态同步角色同步的过程的流程图。
图4示出了根据一个实施例的计算设备的组件图。
在附图中,类似的附图标记被用于表示类似的部分。
具体实施方式
下面结合附图提供的详细描述旨在作为当前示例的描述,而不旨在表示当前示例可以被构建或利用的唯一形式。该描述阐述了该示例的功能以及用于构建和操作该示例的步骤顺序。然而,相同或等同的功能和顺序可以通过不同的示例来完成。
当元件被称为“连接”或“耦合”时,元件可以直接连接或耦合在一起,或者也可以存在一个或多个中间元件。相反,当元件被称为“直接连接”或“直接耦合”时,不存在中间元件。
主题可以体现为设备、系统、方法和/或计算机程序产品。因此,可以用硬件和/或软件(包括固件、驻留软件、微代码、状态机、门阵列等)来实现主题中的一些或全部。此外,主题可以采取计算机可用或计算机可读存储介质上的计算机程序产品的形式,该计算机可用或计算机可读存储介质具有体现在介质中的计算机可用或计算机可读程序代码,以供指令执行系统使用或与指令执行系统结合使用。在本文档的上下文中,计算机可用或计算机可读介质可以是能够包含、存储、传送、传播或传输该程序,以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合使用的的任意介质。
计算机可用或计算机可读介质可以是例如但不限于电子、磁性、光学、电磁、红外或半导体系统、装置、设备或传播介质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。
计算机存储介质包括用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的、以任意方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其它存储技术、CD-ROM、数字多功能盘(DVD)或其他光存储、磁带盒、磁带、磁盘存储或其它磁存储设备、或可用于存储所需信息并可由指令执行系统访问的任意其他介质。注意,计算机可用或计算机可读介质可以是纸张或程序可以在其上印刻的其他合适的介质,因为程序可以经由例如纸或其他合适介质的光学扫描被电子捕获、然后被编译、解释,否则如果有必要以适当的方式进行处理、然后存储在计算机存储器中。
通信介质通常在诸如载波或其他传输机制的已调制数据信号中体现计算机可读指令、数据结构、程序模块或其他数据,并且包括任意信息传递介质。这与计算机存储介质不同。术语“已调制数据信号”可以被定义为以下信号,该信号使其一个或多个特性以一种方式被设置或改变,从而在该信号中对信息进行编码。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接的有线介质,以及诸如声学、RF、红外线和其他无线介质的无线介质。上述中的任意项的组合也应被包括在计算机可读介质的范围内,但不包括在计算机存储介质内。
当主题在计算机可执行指令的一般上下文中体现时,该实施例可以包括由一个或多个系统、计算机或其他设备执行的程序模块。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。典型地,在各种实施例中,程序模块的功能可以根据需要组合或分布。
图1是示出文件同步系统100的组件的高层框图。文件同步系统100包括同步端点110和同步端点150。同步端点110与同步数据库120连接并且与同步系统130关联。类似的,同步端点150与同步数据库160连接并且与文件系统170相关联。同步端点110包括文件同步提供器111、同步元数据组件112、数据接收机113、改变更新器114和协调器115。同步端点150包括文件同步提供器151、施加器组件152、冲突解决器/检测器153、同步施加器目标154和同步元数据组件155。为了讨论的目的,组件被布置在从端点110到端点150的上传场景中。
在讨论文件同步提供器111或151的特定组件之前,将讨论可以提供数据的不同类型的参与者。参与者是取回来自数据源的信息的位置。参与者可以是从网络服务到笔记本计算机到USB拇指驱动器的任意东西。
基于特定设备的能力,提供器整合同步的方式将有所不同。至少,该设备能够在需要时以编程方式返回信息。最终,需要确定的是,设备是否可以使信息能够在现有设备上或当前数据存储器中存储和操纵,并允许应用程序直接从设备执行。
区分参与者的类型以了解参与者是否能够存储提供器所需的任意状态信息以及是否能够直接从设备执行该提供器是很重要的。理想情况下,参与者模型是通用的。因此,可以将完整参与者配置为部分参与者或简单参与者。
完全参与者是允许开发人员直接在设备上创建应用程序和新数据存储的设备。笔记本计算机或智能手机是完全参与者的示例,因为可以直接从设备执行新应用程序,并且可以创建新的数据存储以在需要时保留信息。部分参与者是能够将数据存储在设备上的现有数据存储或其他数据存储中的设备。然而,这些设备不具有直接从设备启动可执行文件的能力。这些参与者的一些示例是拇指驱动器或SD卡。这些设备的作用类似于其中可以创建、更新或删除信息的硬盘驱动器。然而,它们通常不会提供允许应用程序直接在其上执行的接口。简单的参与者是仅能够在请求时提供信息的设备。这些设备无法存储或操纵新数据,也无法支持新应用程序的创建。由诸如亚马逊或EBay的外部组织提供的RSS馈送和网络服务都是简单参与者的示例。这些组织可以提供执行或调用网络服务并拿回结果的能力,但是它们不能提供为特定用户创建数据存储的能力,也不能提供创建在其网络服务器内部执行的应用程序的能力。
文件同步提供器111和提供器151是在同步端点110和同步端点150两者上发现的类似组件。文件同步提供器可以用于同步诸如NTFS、FAT、或SMB文件系统的许多不同的文件系统中的文件和文件夹。此外,要同步的目录可以是本地的或远程的。它们不必具有相同的文件系统。应用程序可以使用静态过滤器通过显式列出或通过使用通配符(如*.txt)来排除或包含文件。或者应用程序可以设置排除整个子文件夹的过滤器。应用程序还可以注册以接收文件同步进度的通知。
协调器115是被配置为发起和控制两个端点或参与者之间的同步会话的系统100的组件。协调器与提供器111和151两者通信以开始同步过程并且报告回同步的进度。协调器使用的实际处理在同步过程中是众所周知的,并且协调器115可以使用任意处理。
改变更新器114是系统100的组件,其识别自从上次改变更新器114运行以来不通过同步而发生的对文件系统的本地改变。改变的检测/识别可以通过简单地比较与相应的上一个同步时间相关联的时间戳来进行。其他方案和方法可用于确定在命名空间中所做的改变。
同步数据库120和160是系统100的组件,该组件存储关于文件系统中的文件的元数据。同步数据库120和160提供关于要在客户端和服务器之间同步的特定文件的元数据。这些数据库也可以被称为元数据存储。
同步数据库120、160提供了存储关于文件系统和该文件系统内的对象的关于状态和改变信息的的信息的能力。文件系统的元数据可以被分解为五个组件(并发跟踪属性):版本、知识、滴答计数、副本ID和墓碑。
对于正被同步的每个项目,存储描述项目何地以及何时被改变的少量信息。此元数据由两个版本组成:创建版本和更新版本。版本由两部分组成:数据存储分配的滴答计数和数据存储的副本ID。随着项目的更新,滴答计数会由数据存储增加,并且新的当前滴答计数被应用于该项目。副本ID是标识特定数据存储的唯一值。在项目被创建时,创建版本与更新版本相同。对该项目的后续更新修改更新版本。即创建版本保持不变而更新版本改变。
有版本控制可以实现的两种主要方式。第一种被称为在线追踪。在此方法中,在做出改变时,针对项目的改变跟踪信息被更新。例如,在数据库的情况下,在行更新后可以使用触发器来立即更新改变跟踪表。第二种方法被称为异步跟踪。在这种方法中,有一个运行并扫描改变的外部过程。发现的任意更新都会添加到版本信息中。该过程可以是被调度的过程的一部分,或者可以在同步之前执行。当项目被更新时没有内部机制来自动更新版本信息时(例如,当无法在更新管道中注入逻辑时),通常会使用此过程。检查改变的常用方法是存储项目状态并将其与当前状态进行比较。例如,它可能检查自上次更新以来最后写入时间或文件大小是否已改变。当然,也可以使用其他版本控制方法。
所有改变追踪必须至少在项目的级别发生。换句话说,每个项目都必须具有独立的版本。在文件同步的情况下,项目可以是文件,但它可以是其他可以同步的项目,例如文件夹。在某些场景下,可能需要更细化的跟踪,因为它降低数据冲突的可能性(两名用户更新不同副本上的相同项目)。缺点是它会增加存储的改变跟踪信息的数量。
另一个概念是知识的概念。知识是复制品意识到的改变的简洁表示。随着版本信息被更新,针对数据存储的知识也被更新。诸如提供器111和151的提供器使用副本知识来枚举改变(确定另一副本不知道哪些改变)并检测冲突(确定哪些操作是在不具有彼此的知识的情况下进行的)。
每个副本还应当维护被删除的每个项目的墓碑信息。这很重要,因为在同步被执行时,如果项目不再存在,提供器将无法辨别该项目已被删除,并且因此无法将该改变传播给其他提供器。墓碑可以包含以下信息:全局ID、更新版本和创建版本。因为墓碑的数量会随着时间的推移而增长,所以为了节省空间,一些实现可以创建一个过程以在一段时间后清理该存储。也就是说,这些删除的文件将从使用元数据信息维护的文件列表中被移除。为了防止这种情况发生,系统可以实现用于捕获这些文件的方法。该方法通过在可能存在丢失的墓碑时首先确定条件是否被满足而开始。副本保留知识的另一副本,该另一副本可以被认为或被称为“被遗忘的知识”。当墓碑被从数据库中移除/清理时,被遗忘的知识被设置/更新。这些被遗忘的知识可以跟踪已经清理了哪些滴答计数。这可以提供关于什么时候墓碑可能已经丢失的提示。然后,如果在一段时间同步未发生(副本变得陈旧),则被遗忘的知识帮助检测副本可能是陈旧的。陈旧的副本可以启动“完全枚举同步会话”。该完整枚举是时间密集且昂贵的同步会话,借此所有文件元数据均在同步会话的参与者之间传送。
施加器152是系统的组件,其应用被指示为完成同步过程所需的特定改变。这些改变是基于与每个文件相关联的元数据在同步过程中由改变更新器114记录的改变。根据同步过程的方向(上传或下载),施加器152将在相应的同步端点上操作。在图1中,图示了其中客户端110将其改变上传到客户端150的上传过程。
冲突解决器153解决在已经存储的数据文件与作为同步过程的一部分接收的数据文件的声称的更新版本之间检测到的冲突。基本上,如果对同步会话之间的两个副本上的相同项目进行改变,则会发生冲突。在源知识不包含针对项目的目标版本(理解的是目标知识不包含任何被发送的源版本)时,则特别地发生冲突。如果该版本被包含在目标的知识中,则该改变被认为已过时。副本可以自由地实现各种政策用于解决跨同步社区存在冲突的项目。在某些方案中,无论冲突发生在何处或在何处检测到冲突,副本中的每一个都做出相同的解决方案。
以下是常用解决策略的一些示例:源胜利:在发生冲突的情况下,本地副本所做的改变总是胜利。目的地获胜,远程副本总是胜利。指定的副本ID始终获胜,即无论谁改变项目,具有指定ID的副本始终获胜。最后写入者获胜,这是基于所有副本被信任进行改变并且挂钟被同步的假设。因此,文件的最后写入者被允许获胜。合并时,在有两个重复项目冲突的情况下,系统会将信息从一个文件合并到另一个文件中。日志冲突,在这种方案中,系统选择简单地记录或推迟该冲突。
同步目标应用程序154是系统的组件,其在解决由冲突解决器所确定的任意冲突之后应用所指示的改变。具体改变分为两组。第一组是改变为文件的实际数据。该信息通过施加器154处理并提供给文件系统170,该文件系统170使得对基础文件进行适当的改变。第二改变集合是对同步元数据所做的改变。这些通过元数据组件155被应用于同步数据库160,其中关于特定文件的元数据被存储。
托管平台通常实现特定服务或缩放单位的许多实例。服务的每个实例可以与特定的客户端或特定的服务订阅相关联。传统托管平台可以响应增加的负载向该实例添加附加资源。然而,附加的资源导致构成服务的所有资源的增加,而不是构成服务的单个组件的增加。即,与仅需要更多资源的单个组件相反,服务的所有组件都增加了。服务代表平台中的生命周期和管理的独立的单元,并且可以与其他服务完全隔离地被被部署和服务。服务之间的通信只能经由公共端点进行,而服务角色之间的通信可以通过公共和内部/受保护的端点进行。从网络角度来看,每个服务都具有单一的负载平衡的虚拟IP(VIP)。每个VIP是用于检测和防止分布式拒绝服务(DDoS)攻击的一个独立的实体。为了避免要求客户端重新映射非默认HTTP端口(80、443)用于在单个服务内与不同角色端点进行通信,一种方案利用分离的服务在默认端口上公开端点。第二种方案利用前端(frontdoor)服务,基于接收到的统一资源定位符(URL)将默认端口上的请求路由到单个服务内的角色。当前平台中的服务和角色都包含逻辑上相关的组件组。当服务的功能或部署彼此显著分离时,或者相关服务的功能被利用时,会创建单独的服务。
图2是根据一种方案实现服务和角色的平台200的框图。服务包括订阅服务220、核心服务210、监控服务230、分析服务240、元数据存储250、管理数据存储260、文件存储280和运行时状态存储270。然而,在其他方案中,根据特定最终用户的需求和期望,附加服务可以被添加到平台上。客户端设备290连接到平台以访问这些服务。
核心服务210在服务内实现多个不同的角色。这些角色包括前端角色211、管理角色212、同步/召回角色213、后台处理角色214、数据访问发现角色215、以及备份/恢复角色216。应当注意的是,图2示出了核心服务210的单个实例和核心服务210内的每个角色。然而,在本平台中,核心服务210可以存在于任意数目的节点上,并且这些节点可以分布在全球的不同位置处或者在数据中心内。对任意特定角色的请求都可以由节点的这些特定实例中的任意一个提供服务。此外,本文呈现的角色中没有一个角色依赖于文件存储280或元数据表的特定实例。更进一步,应当注意的是,根据平台的需求,某些角色可以被扩展到更多节点上,而无需同样扩展剩余角色。
前端角色211在一种方案中被配置为基于关守模式来实现薄前端。关守模式被设计为通过使用专用主机实例来保护应用程序和服务,该专用主机实例充当客户端与应用程序或服务之间的代理。它验证并清理请求,并在它们之间传递请求和数据。这提供了附加的安全层,并且可以限制系统的攻击面。前端角色211执行传入请求的验证并基于请求的内容来将这些请求路由到管理角色212、同步角色213、数据访问角色215或备份/恢复角色216。前端角色211或同步角色213还将对长时间运行任务的请求排队到后台任务队列中的后台处理角色214。
在一些方案中,前端角色211还实现附加的安全措施或方案以增强对客户端数据的保护和系统的总体安全性。前端角色211将与安全库218交互以实现附加的安全性。安全库218可以实现安全机制,诸如相互认证、SSL/TLS加密、RMS数据加密、共享秘密、分布式拒绝服务(DDoS)保护和共享访问签名。其他安全机制可以被采用。
管理角色212在一种方案中被配置为向该平台中的其他服务和角色提供供应、管理和配置能力。管理角色212提供用于对核心服务的管理访问的服务端点以及通过命令输入来修改服务的能力。用于管理角色212的关联数据被存储在管理数据存储260中。
本文中被称为同步角色213的同步/撤回角色是平台的组件,该组件被配置为服务同步以及被从前端角色211以无状态方式提供给它的来自同步和撤回客户端(例如,客户端设备290)文件撤回前台请求。客户端设备290向前端角色211发出同步请求,前端角色211然后向同步角色213提供该请求。同步角色213与负载平衡器接口,该负载平衡器针对效率平衡该请求,并确保在预定的超时时间之前响应被返回。同步期间的同步角色213访问来自元数据存储250、文件存储280和位于平台背景上的运行时状态存储270的数据。在给定时间在平台上可以存在任意数目的同步角色213操作。这允许同步请求的高效处理。这些同步角色213中的任意一个均能够处理该请求。由于来自客户端设备290的这样的请求可以在不同的时间去往同步角色213的不同实例。如前所述,同步角色213相对于文件服务和文件存储280是无状态角色。
核心服务还包括负载平衡器,其基于无状态同步/恢复处理以及高效缓存系统来实现前端请求的负载平衡。如果不随时间进行护理,则同步角色213的每个实例将最终为来自与它连接或通信的客户端设备290的每个请求缓存数据。这就是说,每个合作伙伴都会导致附加的缓存。因此,负载平衡器实现缓存策略,该缓存策略使同步角色213免于使其CPU和内存利用率超过门限限制并且还确保内部数据结构保持低于门限水平。在一种方案中,负载平衡器使用循环策略来路由请求。也就是说,针对没有请求的服务的下一同步角色213被指派来处理该请求。负载平衡器也可以采用启发式方法来优化本地使用的高速缓存的位置和资源使用情况。例如,可以基于向请求提供紧密度(affinity)的租户或同步文件夹的散列来路由对同步角色213的请求,而不向该请求引入状态全满。
后台处理角色214是处理长时间运行任务以及同步角色213卸载以尝试平衡其工作量的从同步角色213卸载的任务的系统的组件。存在花费很长时间段,并且如果在前台完成其操作,则可能会影响系统的整体性能的任务。长时间运行任务可以包括诸如使用枚举的改变检测、系统的备份和恢复等的任务。后台处理角色214从前端角色211接收要通过后台任务队列执行的各种任务。后台任务队列实现分片和优先级队列,用于管理给予后台处理角色214的任务。它使用与任务的吞吐量有关的性能度量。优先级队列主要用于需要低延迟的请求/任务,诸如文件召回。由后台处理角色214创建的结果通过向设备的通知被异步地报告给呼叫客户端设备290。
数据访问发现角色是向平台提供位置和数据访问能力的系统组件。这可以包括提供对数据的安全访问。这种安全访问可以使用REST接口和共享的访问签名密钥来实现。
备份/恢复角色216是系统的组件,其允许维护恢复数据,该恢复数据可以在发生灾难、客户端设备替换、数据丢失或其他故障的情况下恢复客户端设备290。备份数据可以使用该角色从设备提供给系统。客户端设备290的恢复将导致存储在其中的数据被推送到客户端设备290以恢复客户端设备290。
监视服务230是系统的组件,其提供服务状态、诊断和故障排除能力,作为在系统组件的最后一英里、外内(主动)和内外(被动)监视的组合视图。底层托管平台提供对平台基础架构(诸如数据中心和网络)和平台服务的监控。附加的诊断和故障排除可由监视服务230处理并在后台执行。
分析服务240是允许对系统的遥测分析的系统的组件。具体而言,分析服务240可以提供门户,管理员可以通过该门户查看业务和操作分析能力。这可以使管理员能够制定有关服务的现场或业务方面的数据驱动决策。分析服务240从多个数据源接收数据以进行后处理、报告和机器学习。这些数据源辅助生成该分析。
元数据存储250是处理用于同步过程和文件本身的元数据的系统的组件。元数据存储250实现副本和项目元数据存储、二级索引、锁定、快照隔离和垃圾收集。二级索引支持各种同步场景的查询模式,诸如范围查询。提供锁定以确保一次一个写入者可以访问特定文件或该文件所在的特定副本。在处理改变批次或在特定命名空间281的枚举期间,这些访问发生。快照隔离消耗已提交的数据,并会阻止垃圾收集,直到各个端点已经消耗已提交的数据。元数据存储250还提供交叉表一致性。知识和项目数据必须一起提交。这确保了特定副本的完整图像是已知的。即,副本是否已经改变,以及副本的状态。
管理数据存储260是管理文件存储280和对应命名空间281内的数据以及为了管理的目的而由客户端设备290提供的任意其他数据的放置的系统的组件。当文件存储280在各种不同的用户和客户端之间共享时,每个命名空间281必须与其他命名空间281保持分离。管理数据存储260维护针对由托管系统管理的每个命名空间281-1、281-2、281-N(统称为281)的表。每个表表示特定租户的副本的配置以及存储在文件存储280中的每个副本的命名空间281。此配置确保同步表示文件存储280的正确配置,并且元数据也反映该配置。
文件存储280是用于命名空间281的实际数据所在的系统的组件。文件存储280可以将数据存储在容器中。每个用户在文件存储280中具有对应容器,该对应容器对应于管理数据存储260中维护的同步文件夹。
这些用户容器也可以与多个不同的用户和设备共享。可能在相同时间或几乎同时从多个端点发生对容器的访问。针对通用共享维护单个容器。此外,通用共享对应于管理数据存储260上的同步文件夹。与托管环境中的传统文件存储280不同,用户和设备可以直接写入相应的容器,而不必通过同步角色213来执行这些读取并且写入。向各种端点(用户和设备)提供允许他们获知数据所在的文件存储280上的实际位置的信息,诸如统一资源标识符(URI)或统一命名规则(UNC)。之前的方案已经要求使用中介来访问文件存储280,因为文件存储280的位置对设备是不准确知道的。然而,对于特定容器或命名空间281,对文件存储280的访问仍然可以通过同步角色213或其他核心服务210角色来完成,如传统上完成的。因此,取决于应用程序或设备的能力,文件可以通过任一种方法被访问。如此,传统应用程序能够在不修改的情况下使用文件存储280。存储在文件存储280和特定容器中的数据以无状态方式存储。也就是说,客户端管理对与文件存储280的任意客户端交互所必须的任意瞬态。文件存储280不维护关于其自身系统中的数据的这种瞬态的这种信息中的任意信息。
在文件命名空间281可以与云端点同步之前,必须为文件、目录和元数据分配或供应存储。本方案为每个同步命名空间281提供单个文件共享或容器。以这种方式,多个命名空间281可以被托管在云上,但是每个命名空间281能够保持彼此分开。在一种方案中,文件共享是Azure文件共享。然而,可以使用其他版本和类型的文件共享。
文件共享是表示文件夹和文件的分层命名空间281的根的文件存储单元。共享可以通过诸如Azure File REST API的应用程序编程接口(API)访问,也可以通过诸如ClFS/SMB协议的协议来访问。
通过将同步命名空间281映射到文件共享,可以认识到许多优点。首先,文件共享允许直接同步到共享命名空间281根映射。诸如用户到共享映射或租户到共享映射的其他配置选项要求将各个同步命名空间281创建在文件共享根下。其次是快照隔离。本方案利用托管服务的文件共享级别快照特征。这支持在单个时间点创建和维护共享的状态的高效副本的能力。这对于支持备份还原、迁移、高可用性和需要命名空间281的一致视图的其他功能很重要。第三是安全隔离。本方案利用主机服务的共享访问签名(SAS)授权特征。这支持在每个命名空间281的基础上在根级别上控制对共享的访问的选项。共享级别访问控制可以代替或添加到文件或文件夹级别的更细粒度的访问控制。
主机系统可以实现两种不同的方案用于确定何时针对特定命名空间281提供文件共享。一种方案是通过管理控制台使用显式供应,以利用特定用户的命名空间281创建命名空间281同步伙伴关系281。第二种方案是在第一次尝试与命名空间281同步时隐式地提供命名空间281。
一旦同步命名空间281已经被供应文件共享,命名空间281就可以在参与者和云端点之间同步。同步解决方案使用同步伙伴关系的两方(端点)之间的文件同步协议。同步过程可以遵循上面关于图1讨论的过程。然而,应当注意的是,该协议涉及关于每个端点上的命名空间281内的文件/文件夹的状态的元数据的交换,随后是一个或者更多上传和下载会话,其中在每个端点上传输和创建文件和文件夹元数据和数据,直到每个端点上的命名空间281的状态匹配。在自上次同步会话以来文件在同步伙伴关系两侧均发生改变的情况下,冲突被检测到,这可以导致改变的一个或两个集合被保留。
运行时状态存储270是维护文件的状态和文件的同步状态的系统的组件。运行时状态存储270使特定同步角色213能够与文件系统和文件存储280保持无状态。当特定同步角色213需要状态来执行特定任务时,运行时状态存储270提供所需的状态关系,以使同步过程继续。由于状态远离同步角色213被维持,所以任意同步角色213都可以执行任意同步过程。
客户端设备290是可以连接到同步角色213的任意设备,用于使其数据与托管并存储在文件存储280上的数据同步。客户端设备290可以包括位于场所内的服务器、移动电话、笔记本计算机、平板计算机、或与文件存储280或核心服务210的另一实例接口的任意其他设备。此外,在设备被托管在另一平台上的情况下,设备也可以是设备的虚拟版本。客户端设备290可以直接与文件存储280交互并向文件存储280写入,或者可以通过同步角色213访问文件存储280以及其中包含的特定容器。每个客户端设备290也具有同步引擎292的其自己的版本。该同步引擎是用于客户端设备290的网关,用以启动与同步角色213的同步上传或下载。从客户端的角度来看,同步过程与其中访问数据的唯一途径是通过中介的系统并无不同。
本系统中的文件同步活动可以是周期性的并且可以通过调度来驱动,或者可以是来自同步伙伴关系的客户端端点的按需指令。文件访问活动可以在任意时间发生,因为客户端设备290可以直接访问文件存储而无需使用中间同步角色来访问基于云的文件。
图3是示出了根据一个示意实施例的用于在客户端设备290和远程文件服务之间同步文件的过程的流程图。在客户端设备290请求与核心服务210的同步会话时,同步过程开始。这在步骤310中示出。在一些方案中,请求由客户端设备290生成。在其他方案中,请求由核心服务210生成。在该方案中,核心服务210向客户端设备290发送消息,指示客户端设备290作出同步请求。同步请求可以是按需同步请求,或者它们可以是周期性同步请求。周期性同步请求的定时可以由管理员设置,以确保所有同步客户端间数据的一致性。例如,取决于相应文件中的活动级别,周期性同步请求可以每天或每小时被执行一次。
同步请求由核心服务210接收并被提供给核心服务210的前端角色211,以确定是否可以处理该请求。这在步骤320中示出。再次如前所述,前端角色211不具有对文件存储中的相应文件的直接访问,对主机系统的任意持续性存储器的有限访问并且可以对所接收的请求进行负载均衡。在过程的该步骤中,前端角色211实现其在保护客户端数据的公开中的关守模式。前端角色211验证来自客户端的请求是正确的请求并且包含正确的凭证。如果请求不符合访问底层数据存储或服务的要求,则前端角色211不再处理这些请求。如果请求确实满足对访问的要求,则前端角色211将请求路由到正确的服务角色和分片,以支持维持无状态同步所必需的资源紧密度。
前端角色211分析该请求并确定该特定请求是否用于长时间运行任务。这在步骤330中示出。长时间运行任务是诸如枚举、系统的备份和恢复等的任务,该任务使用大量或资源或者其执行超过预定门限时间量来完成。这些长时间运行任务将被发送到后台任务队列以便从那里进行处理。前端角色211此时可以尝试通过向同步角色213发送用于确定特定请求的大小的请求来确定请求的大小。同步角色213可以从元数据存储250读取以确定哪些文件已经改变。基于已经改变的文件的数目,前端角色211可以确定该特定同步请求是长时间运行请求或正常请求。在某些情况下,前端可以自行确定该请求是针对长时间运行还是短时间运行任务。例如,如果同步请求是针对特定文件或特定文件夹的,则前端角色211可以确定该任务是短时间运行任务。而如果请求是针对一系列文件夹或目录的,则前端角色211可以确定该请求是长时间运行任务。在其他情况下,前端角色211简单地将同步请求传递给同步角色213并且允许同步角色确定请求是短时间运行还是长时间运行的,以及应当由同步角色213处理还是传递给后台任务处理角色214。
后台任务处理角色从由前端角色211填充的后台任务队列接收长时间运行任务。这在步骤335中示出。后台任务处理角色获取队列中的下一任务,并确定请求或任务是否需要被分片。分片是数据库分区的一种类型,它将超大型数据库分成更小、更快、更易于管理的称为数据分片的部分。在这种情况下,文件存储280已被分成水平分区或分片。每个分片具有相同的模式,但保留自己独特的数据子集。分片本身就是数据存储,运行在文件存储280的存储节点的不同实例上。在这种情况下,请求将被分成不同的部分以到达底层数据所在的文件存储280的适当部分。后台任务处理角色然后将该请求处理到相应的文件存储280以取回或更新所包含的数据。客户端设备290将由后台任务处理角色异步地更新这些后台任务的状态。在一种方案中,后台处理角色214处理请求,并将结果存储在运行时状态存储270中。前台211可以从运行时状态存储270取回操作的结果,以便可以将响应提供给客户端设备290。在某些情况下,前端211检查运行时间状态达一小段时间,以查看该任务是否以中等时间量(在30秒的级别)完成,因此它可以立即将结果返回给客户端。这在识别某个任务为长时间运行的启发式方法错误,并且该任务实际执行很快的情况下非常有用。在其他情况下,当前端211已经等待足够长时间时,它返回一个“未决”结果返回给客户端,利用URL代表未决结果。客户端290可以通过轮询未决的结果URL来继续等待结果。在接收到该未决结果URL时,前端211可以检查运行时状态存储270,以查看任务是否已经报告了结果。如果找到一个,则将长时间运行的任务的结果返回给客户端290。长时间运行的任务的进一步处理类似于短时间运行任务的处理,并且其后是下面的步骤350-370。
如果该请求被确定为短时间运行任务,则同步请求被传递给同步角色213用于处理。这在步骤340中示出。前端角色211可以基于多个因素来选择特定同步角色213用以接收请求。当同步角色213的多个节点存在时,前端角色211可以简单地基于循环方案来选择同步节点。也就是说,例如,如果先前选择了第一同步角色213节点,则将选择该组节点中的第二同步节点用于下一同步请求。在其他方案中,前端角色211结合负载平衡器可以查看当前在节点上经历的负载和同步请求的大小,并选择低使用率同步角色213节点用于处理该请求。前端角色211对请求进行负载均衡,然后将该请求发送到选择的同步角色213。在某些方案中,由于同步请求的大小或请求在该同步中被服务所需的速度,请求可以被前端角色211分解或者被分片几个批次。这些批次中的每一个可以被发送到不同的同步角色213用于处理。在一些方案中,请求可以代之以被发送到后台处理角色214。
同步角色213从前端角色211接收同步请求并开始处理同步请求。这在步骤350中示出。此时,同步角色213需要确定哪些文件已经改变,并且因此需要与哪些文件同步。同步角色213基于这些改变来建立或识别要从文件存储280上传或下载的文件的批次。关于哪些文件将被同步过程修改的信息被提供回前端角色211,该前端角色211将该信息提供给客户端设备290。在一些方案中,同步角色213可以将该信息直接提供回客户端设备290。包括在要通过上传或下载来修改的文件中,同步角色213可以提供统一资源标识符,使得客户端设备290可以作为同步过程的一部分直接读取文件存储280或向文件存储280写入。以这种方式,任意同步角色213可以处理对同步过程的请求,因为它不需要在过程期间用文件保持状态。对于上传同步,同步角色213促使在文件存储280中创建暂存文件夹或区域。暂存文件夹是保留区域,在该区域中要同步的文件的较新版本被临时保持直到同步角色213可以通过同步过程将文件提交到文件存储280。在一些方案中,同步角色213可以确定发送给它的特定请求将超过资源使用的预定门限。在这种方案中,同步角色213可以将该请求重定向到后台处理角色214进行处理。在其他方案中,同步角色213可以自己将该请求分片并发送到其他同步角色。
客户端设备290从文件存储280接收要上传或下载什么文件的批次信息,并传输批次中指示的文件。这在步骤360中示出。在该步骤处,并且取决于上传或下载同步,客户端设备290的文件系统或者将文件上传到文件存储280中的暂存文件夹,或者从文件存储280下载相应的文件。这些文件的上传/下载直接用文件存储280执行或通过不同文件传输协议的用户执行,不且不通过核心服务210或同步角色213来执行。以这种方式,核心服务210中的特定角色在这个处理中不需要用文件本身维护状态。只用文件存储280维持状态。当文件被上传到文件存储280时,它们被上传到文件存储280中的暂存文件夹中。由同步角色213创建的每个批次可以具有其自己的暂存区域。一旦文件被上传到暂存区域,或者下载完成,客户端设备290向同步角色213发送指示客户端设备290已经完成上传/下载的消息。在一些方案中,暂存文件夹中的文件和文件存储280中的文件的相应版本在上传过程中不被锁定读写。如果文件存储280中的文件在同步可以被完成之前发生改变,诸如从另一设备访问该文件存储280,尽管直接访问功能该文件此时不会被同步或提交,但可以被阻止直到稍后同步。
同步角色213通过提交改变来响应上传/下载已经完成的指示。这在步骤370中示出。对于下载,同步角色213向客户端提供改变批次,允许客户端下载文件内容并将改变应用于其本地文件存储和本地元数据存储。在一些方案中,同步角色213通过将同步请求更新为完成来提交改变,并且在一些方案中更新元数据存储250以指示特定客户端已经用该信息更新。通过上传,同步角色213使暂存区域中的文件覆写或替换文件存储280中的相应文件以及更新元数据存储250。同步角色213使文件存储280中的文件被重命名为临时文件,然后暂存区域中的文件被重命名到文件存储280作为文件的新版本。这允许文件被更新并且该批次被处理,即使特定服务同步节点在同步过程期间将遇到故障,因为任意同步节点都可以从暂存文件夹中拾取文件并继续同步过程。
图4示出根据一个实施例的计算设备的组件图。计算设备400可以被用于实现本文描述的一个或多个计算设备、计算机处理或软件模块。在一个示例中,计算设备400可以用于处理计算、执行指令、接收和发送数字信号。在另一个示例中,如本实施例的系统所要求的,计算设备400可以用于处理计算、执行指令、接收和发送数字信号、接收和发送搜索查询以及超文本、编译计算机代码。此外,计算设备400可以是分布式计算设备,其中计算设备400的组件位于通过网络或其他形式的连接被彼此连接的不同计算设备上。另外,计算设备400可以是基于云的计算设备。
计算设备400可以是现在已知的或者变得已知的、能够以软件、硬件、固件或其组合来执行本文描述的步骤和/或执行本文描述的功能的任意通用或专用计算机。
在其最基本的配置中,计算设备400通常包括至少一个中央处理单元(CPU)402和存储器404。取决于计算设备的确切配置和类型,存储器404可以是易失性的(诸如RAM)、非易失性(如ROM、闪存等)或两者的某种组合。另外,计算设备400还可以具有附加的特征/功能。例如,计算设备400可以包括多个CPU。所描述的方法可以由计算设备400中的任意处理单元以任意方式执行。例如,所描述的处理可以由多个CPU并行执行。
计算设备400还可以包括附加存储设备(可移动和/或不可移动),包括但不限于磁盘或光盘或磁带。这种附加存储设备在图6中由存储406示出。计算机存储介质包括以任意方法或技术实现的易失性和非易失性、可移动和不可移动介质,用于诸如计算机可读指令、数据结构、程序模块或其他数据的信息的存储。存储器404和存储406都是计算机存储介质的示例。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光存储器、盒式磁带、磁带、磁盘存储器或其他磁存储设备、或可以用于存储期望的信息并且可以由计算设备400访问的任意其他介质。任意这样的计算机存储介质可以是计算设备400的一部分。
计算设备400还可以包含允许设备与其他设备通信的通信设备412。通信设备412是通信介质的示例。通信介质通常体现计算机可读指令、数据结构、程序模块或诸如载波的经调制的数据信号中的其它数据,或其他传输机制并且包括任意信息传递介质。术语“经调制的数据信号”是指以下信号,该信号使其一个或多个特性以一种方式被设置或改变使得在该信号中编码信息。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接的有线介质,以及诸如声学、RF、红外线的无线介质和其他无线介质。本文使用的术语计算机可读介质包括计算机存储介质和通信介质两者。所描述的方法可以以诸如数据、计算机可执行指令等的任意形式被编码在任意计算机可读介质中。
计算设备400还可以具有输入设备410,诸如键盘、鼠标、笔、语音输入设备、触摸输入设备等的。诸如显示器、扬声器、打印机等的输出设备408也可以被包括在内。所有这些设备在本领域中都是众所周知的,并且不需要详细讨论。
本领域技术人员将认识到,用于存储程序指令的存储设备可以跨网络分布。例如,远程计算机可以存储被描述为软件的过程的示例。本地或终端计算机可以访问远程计算机并下载部分或全部软件以运行程序。替代地,本地计算机可以下载所需要的软件的片段,或者通过在本地终端执行一些软件指令以及在远程计算机(或计算机网络)处执行一些软件指令来进行分布式处理。本领域技术人员还将认识到,通过利用本领域技术人员已知的常规技术,软件指令的全部或一部分可以由诸如DSP、可编程逻辑阵列等的专用电路执行。
Claims (9)
1.一种用于同步文件的系统,所述系统包括:
托管服务,所述托管服务被配置为向远离所述托管服务的客户端提供文件存储;
远离所述托管服务的至少一个客户端设备;
被托管在所述托管服务上的所述文件存储,所述文件存储存储由所述至少一个客户端设备可访问的文件的副本,其中所述至少一个客户端设备能够直接向所述文件存储写入;
被托管在所述托管服务上的核心服务,所述核心服务被配置为提供同步服务,包括:
前端角色,所述前端角色被配置为分析来自所述至少一个客户端设备的请求并将所述请求路由到同步角色或后台处理角色;
所述同步角色,所述同步角色被配置为以无状态方式服务来自所述至少一个客户端设备的同步请求;
所述后台处理角色,所述后台处理角色被配置为处理被确定为长时间运行请求的请求;以及
被托管在所述托管服务上的运行时状态存储,所述运行时状态存储被配置为向所述核心服务提供状态服务,所述运行时状态存储被配置为维护用于所述文件存储中的所述文件的状态。
2.根据权利要求1所述的系统,其中所述核心服务包括多个同步角色,并且所述前端角色被配置为选择所述多个同步角色中的一个同步角色用以处理所述同步请求。
3.根据权利要求2所述的系统,其中所述前端角色选择所述多个同步角色中的至少两个同步角色用以处理所述同步请求。
4.根据权利要求1所述的系统,其中所述同步角色被配置为当所述同步请求是上传请求时在所述文件存储中创建暂存文件夹。
5.根据权利要求1所述的系统,其中所述核心服务还包括负载平衡器,所述负载平衡器被配置为确定所述请求是否是长时间运行请求,并且将所述长时间运行请求路由到所述后台处理角色,并且将短时间运行请求路由到所述同步角色。
6.根据权利要求1所述的系统,其中所述同步角色还被配置为当所述同步角色确定处理所述请求所要求的资源量超过门限值时,向所述后台处理角色发送所述请求。
7.一种用于在客户端设备和远程文件存储之间同步文件的方法,包括:
接收对于所述客户端设备和所述远程文件存储之间的同步的请求;
确定所述请求是否能够被处理;
确定与所述请求相关联的任务是否是短时间运行任务;
当所述任务被确定为短时间运行任务时,向同步角色发送所述任务,所述同步角色被配置为以无状态方式处理所述任务;
通过生成一批次的文件来处理所述同步请求;
在所述客户端设备和所述远程文件存储之间传送所述批次的文件;以及
在所述客户端设备和所述文件存储之间提交改变。
8.根据权利要求1所述的方法,其中确定所述请求是否能够被处理包括确定所述客户端设备是否被授权访问所述文件存储。
9.一种计算机可读存储介质,所述计算机可读存储介质具有用于在客户端设备和远程文件存储之间同步文件的计算机可执行指令,所述计算机可执行指令在由具有至少一个处理器的至少一个计算机执行时,将所述至少一个计算机配置为:
接收对于在所述客户端设备和所述远程文件存储之间的同步的请求;
确定与所述请求相关联的任务是短时间运行任务还是长时间运行任务;
当所述任务被确定为短时间运行任务时,向至少一个同步角色发送所述任务,所述同步角色被配置为以无状态方式处理所述任务;
当所述任务被确定为长时间运行任务时,向至少一个后台处理角色发送所述任务,所述后台处理角色被配置为以无状态方式处理所述任务,并且如果所述任务超过门限大小则将所述任务分片;
通过生成一批次的文件来处理所述同步请求;
在所述客户端设备和所述远程文件存储之间传送所述批次的文件;以及
在所述客户端设备和所述文件存储之间提交改变。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210320277.7A CN114756519A (zh) | 2015-09-14 | 2016-08-30 | 与无状态同步节点的托管文件同步 |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562218430P | 2015-09-14 | 2015-09-14 | |
US62/218,430 | 2015-09-14 | ||
US14/922,179 US10440106B2 (en) | 2015-09-14 | 2015-10-25 | Hosted file sync with stateless sync nodes |
US14/922,179 | 2015-10-25 | ||
PCT/US2016/049441 WO2017048501A1 (en) | 2015-09-14 | 2016-08-30 | Hosted file sync with stateless sync nodes |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210320277.7A Division CN114756519A (zh) | 2015-09-14 | 2016-08-30 | 与无状态同步节点的托管文件同步 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108027828A true CN108027828A (zh) | 2018-05-11 |
CN108027828B CN108027828B (zh) | 2022-04-08 |
Family
ID=58260090
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680052057.3A Active CN108027828B (zh) | 2015-09-14 | 2016-08-30 | 与无状态同步节点的托管文件同步 |
CN202210320277.7A Pending CN114756519A (zh) | 2015-09-14 | 2016-08-30 | 与无状态同步节点的托管文件同步 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210320277.7A Pending CN114756519A (zh) | 2015-09-14 | 2016-08-30 | 与无状态同步节点的托管文件同步 |
Country Status (4)
Country | Link |
---|---|
US (3) | US10440106B2 (zh) |
EP (1) | EP3350723B1 (zh) |
CN (2) | CN108027828B (zh) |
WO (1) | WO2017048501A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110971482A (zh) * | 2019-11-05 | 2020-04-07 | 北京字节跳动网络技术有限公司 | 基于ebpf的后端服务器检测方法、装置及电子设备 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE112016006825T5 (de) * | 2016-07-01 | 2019-01-17 | Intel Corporation | Adaptive synchronisierung |
US10180956B2 (en) * | 2016-07-08 | 2019-01-15 | Veeva Systems Inc. | Configurable commit in a content management system |
US10521223B1 (en) * | 2017-08-22 | 2019-12-31 | Wells Fargo Bank, N.A. | Systems and methods of a metadata orchestrator augmenting application development |
CN107707643A (zh) * | 2017-09-27 | 2018-02-16 | 柏域信息科技(上海)有限公司 | 一种数据存储系统中更新数据的方法及装置 |
US10866963B2 (en) | 2017-12-28 | 2020-12-15 | Dropbox, Inc. | File system authentication |
US11258853B2 (en) * | 2018-05-04 | 2022-02-22 | EMC IP Holding Company, LLC | Storage management system and method |
US11494178B2 (en) * | 2019-09-30 | 2022-11-08 | Slack Technologies, Llc | Method, apparatus, and computer program product for organizing the booting operation of a group-based communication session |
US11086809B2 (en) * | 2019-11-25 | 2021-08-10 | Advanced Micro Devices, Inc. | Data transfer acceleration |
US11290531B2 (en) * | 2019-12-04 | 2022-03-29 | Dropbox, Inc. | Immediate cloud content item creation from local file system interface |
US11327750B1 (en) * | 2021-01-27 | 2022-05-10 | Amazon Technologies, Inc. | Domain-driven application breakout |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030076843A1 (en) * | 2001-10-23 | 2003-04-24 | David Holbrook | Messaging system utilizing proximate communications with portable units |
US20040243709A1 (en) * | 2003-05-27 | 2004-12-02 | Sun Microsystems, Inc. | System and method for cluster-sensitive sticky load balancing |
US20080092047A1 (en) * | 2006-10-12 | 2008-04-17 | Rideo, Inc. | Interactive multimedia system and method for audio dubbing of video |
US20090249222A1 (en) * | 2008-03-25 | 2009-10-01 | Square Products Corporation | System and method for simultaneous media presentation |
CN101854392A (zh) * | 2010-05-20 | 2010-10-06 | 清华大学 | 一种基于云计算环境的个人数据管理方法 |
CN101861578A (zh) * | 2007-09-28 | 2010-10-13 | 埃克斯里昂股份公司 | 网络操作系统 |
US20140164447A1 (en) * | 2012-12-12 | 2014-06-12 | Akamai Technologies Inc. | Cookie synchronization and acceleration of third-party content in a web page |
US20140337482A1 (en) * | 2009-08-13 | 2014-11-13 | Dropbox, Inc. | Network Folder Synchronization |
CN104426975A (zh) * | 2013-09-03 | 2015-03-18 | 北京网秦天下科技有限公司 | 用于数据同步的方法、设备和系统 |
CN105765923A (zh) * | 2013-11-29 | 2016-07-13 | 卡尔加里科技股份有限公司 | 客户端-服务器远程访问系统中提供客户端到非托管服务的连接的方法 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7814068B2 (en) | 2001-11-16 | 2010-10-12 | Gemalto Sa | Identifying changed records in a file stored on an electronic token |
US7707175B1 (en) | 2002-05-02 | 2010-04-27 | Palmsource Inc. | Single ended synchronization agents |
US20060230349A1 (en) * | 2005-04-06 | 2006-10-12 | Microsoft Corporation | Coalesced per-file device synchronization status |
US8260924B2 (en) * | 2006-05-03 | 2012-09-04 | Bluetie, Inc. | User load balancing systems and methods thereof |
US8149748B2 (en) * | 2006-11-14 | 2012-04-03 | Raytheon Company | Wireless data networking |
US8850073B1 (en) | 2007-04-30 | 2014-09-30 | Hewlett-Packard Development Company, L. P. | Data mirroring using batch boundaries |
US8112537B2 (en) | 2008-09-29 | 2012-02-07 | Apple Inc. | Trickle sync protocol |
US20110137991A1 (en) * | 2009-12-01 | 2011-06-09 | Lester Paul Russell | Systems and methods for management and collaboration in a private network |
WO2012057581A2 (ko) | 2010-10-28 | 2012-05-03 | 에스케이텔레콤 주식회사 | 클라우드 컴퓨팅 시스템 및 그의 데이터 동기화 방법 |
US9330245B2 (en) | 2011-12-01 | 2016-05-03 | Dashlane SAS | Cloud-based data backup and sync with secure local storage of access keys |
US9307006B2 (en) | 2012-04-11 | 2016-04-05 | Salesforce.Com, Inc. | System and method for synchronizing data objects in a cloud based social networking environment |
KR20140031451A (ko) | 2012-08-30 | 2014-03-13 | 삼성전자주식회사 | 클라우드 시스템의 컨텐츠 동기화장치 및 방법 |
US9792338B2 (en) | 2012-09-07 | 2017-10-17 | Oracle International Corporation | Role assignments in a cloud infrastructure |
US20150052105A1 (en) | 2013-08-16 | 2015-02-19 | Filelize, Inc. | Cloud-based synchronization of related file sets |
US9195702B2 (en) | 2013-08-20 | 2015-11-24 | International Business Machines Corporation | Management and synchronization of batch workloads with active/active sites OLTP workloads |
US9936018B2 (en) | 2013-09-27 | 2018-04-03 | Mcafee, Llc | Task-context architecture for efficient data sharing |
CN104935668A (zh) | 2015-06-26 | 2015-09-23 | 四川长虹电器股份有限公司 | 分布式文件系统及其数据同步的方法 |
CN105740418B (zh) | 2016-01-29 | 2019-09-24 | 杭州亿方云网络科技有限公司 | 一种基于文件监控和消息推送的实时同步系统 |
-
2015
- 2015-10-25 US US14/922,179 patent/US10440106B2/en active Active
-
2016
- 2016-08-30 EP EP16775359.9A patent/EP3350723B1/en active Active
- 2016-08-30 CN CN201680052057.3A patent/CN108027828B/zh active Active
- 2016-08-30 WO PCT/US2016/049441 patent/WO2017048501A1/en active Application Filing
- 2016-08-30 CN CN202210320277.7A patent/CN114756519A/zh active Pending
-
2019
- 2019-09-03 US US16/558,978 patent/US11943291B2/en active Active
-
2024
- 2024-02-02 US US18/430,943 patent/US20240179212A1/en active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030076843A1 (en) * | 2001-10-23 | 2003-04-24 | David Holbrook | Messaging system utilizing proximate communications with portable units |
US20040243709A1 (en) * | 2003-05-27 | 2004-12-02 | Sun Microsystems, Inc. | System and method for cluster-sensitive sticky load balancing |
US20080092047A1 (en) * | 2006-10-12 | 2008-04-17 | Rideo, Inc. | Interactive multimedia system and method for audio dubbing of video |
CN101861578A (zh) * | 2007-09-28 | 2010-10-13 | 埃克斯里昂股份公司 | 网络操作系统 |
US20090249222A1 (en) * | 2008-03-25 | 2009-10-01 | Square Products Corporation | System and method for simultaneous media presentation |
US20140337482A1 (en) * | 2009-08-13 | 2014-11-13 | Dropbox, Inc. | Network Folder Synchronization |
CN101854392A (zh) * | 2010-05-20 | 2010-10-06 | 清华大学 | 一种基于云计算环境的个人数据管理方法 |
US20140164447A1 (en) * | 2012-12-12 | 2014-06-12 | Akamai Technologies Inc. | Cookie synchronization and acceleration of third-party content in a web page |
CN104426975A (zh) * | 2013-09-03 | 2015-03-18 | 北京网秦天下科技有限公司 | 用于数据同步的方法、设备和系统 |
CN105765923A (zh) * | 2013-11-29 | 2016-07-13 | 卡尔加里科技股份有限公司 | 客户端-服务器远程访问系统中提供客户端到非托管服务的连接的方法 |
Non-Patent Citations (2)
Title |
---|
Q. LI: ""CloudSync: Multi-nodes Directory Synchronization"", 《2012 INTERNATIONAL CONFERENCE ON INDUSTRIAL CONTROL AND ELECTRONICS ENGINEERING》 * |
梁彦杰: ""基于消息中间件的数据交换平台传输框架设计"", 《计算机系统应用》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110971482A (zh) * | 2019-11-05 | 2020-04-07 | 北京字节跳动网络技术有限公司 | 基于ebpf的后端服务器检测方法、装置及电子设备 |
CN110971482B (zh) * | 2019-11-05 | 2021-07-23 | 北京字节跳动网络技术有限公司 | 基于ebpf的后端服务器检测方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
EP3350723B1 (en) | 2019-10-23 |
WO2017048501A1 (en) | 2017-03-23 |
US20240179212A1 (en) | 2024-05-30 |
US11943291B2 (en) | 2024-03-26 |
US20200014750A1 (en) | 2020-01-09 |
EP3350723A1 (en) | 2018-07-25 |
US10440106B2 (en) | 2019-10-08 |
US20170078383A1 (en) | 2017-03-16 |
CN114756519A (zh) | 2022-07-15 |
CN108027828B (zh) | 2022-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108027828A (zh) | 与无状态同步节点的托管文件同步 | |
US10268835B2 (en) | Hosted application gateway architecture with multi-level security policy and rule promulgations | |
AU2016346891B2 (en) | Synchronization protocol for multi-premises hosting of digital content items | |
AU2016346892C1 (en) | Synchronization protocol for multi-premises hosting of digital content items | |
US9852147B2 (en) | Selective synchronization and distributed content item block caching for multi-premises hosting of digital content items | |
JP6461167B2 (ja) | アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムおよび方法 | |
US11153182B2 (en) | Resource lifecycle automation | |
US20170220370A1 (en) | Approaches for managing virtual instance data | |
JP2022062705A (ja) | ブロックチェーン実装型データ移行監査証跡を生成するためのコンピュータ実装方法、コンピュータシステム、プログラム(ブロックチェーンで実装されるデータ移行監査証跡) | |
CN107690800A (zh) | 管理动态ip地址分配 | |
US10824756B2 (en) | Hosted application gateway architecture with multi-level security policy and rule promulgations | |
US11627122B2 (en) | Inter-system linking method and node | |
US11159634B1 (en) | Subscription fan out | |
US20240015143A1 (en) | Cross-regional replication of keys | |
KR20120044550A (ko) | 가상 nas를 이용한 클라우드 스토리지 서버, 시스템 및 방법 | |
US9313208B1 (en) | Managing restricted access resources | |
JP6343983B2 (ja) | 仮想記憶ゲート・システム | |
US11252157B1 (en) | Permission management for electronic resources | |
US9178867B1 (en) | Interacting with restricted environments | |
US11588801B1 (en) | Application-centric validation for electronic resources | |
Fong et al. | Secure Server Storage Based IPFS through Multi-Authentication |
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 |