Search

US-12627732-B2 - Hosted file sync with stateless sync nodes

US12627732B2US 12627732 B2US12627732 B2US 12627732B2US-12627732-B2

Abstract

Disclosed herein is a system and method to synchronize files from a hosted file system where the client endpoint devices have direct access to the files stored on a hosted file store. When the client desires to synchronize with the files stored on the hosted file store the process identifies a sync role that can process the request. The particular sync role does not need to maintain state with the client device or the file store. The state necessary for the processing of the synchronization process is maintained separate from the sync role such that any sync role in the system can pick up the requests and process the requests. Once the role has been selected the synchronization process proceeds as normal. As state is not maintained by the sync role multiple roles can process the request or two roles can handle different portions of the process.

Inventors

  • Michael Murstein
  • Cristian Teodorescu
  • Jason Shay
  • James Benton
  • Ivelin Zheglov

Assignees

  • MICROSOFT TECHNOLOGY LICENSING, LLC

Dates

Publication Date
20260512
Application Date
20240202

Claims (20)

  1. 1 . A method comprising: storing, at a host service, a synchronization state of a sync node synchronizing data between a client device and a remote data store; receiving, by the host service from a client device, a sync request to resume synchronizing the data between the client device and the remote data store, wherein the sync request comprises a plurality of data sync tasks for synchronizing the data between the client device and the remote data store; transmitting the synchronization state to a stateless sync node that is stateless in synchronizing the data between the client device and the remote data store, thereby resuming synchronizing, via the stateless sync node, the data based on the synchronization state, wherein the resumed synchronizing results in changes to the data stored in at least one of the client device or the remote data store by assigning a data sync task of the plurality of data sync tasks to the stateless sync node; and committing, by the host service, the changes.
  2. 2 . The method of claim 1 , wherein the synchronization state comprises a synchronization history of the data between the client device and the remote file store performed by at least one different stateless sync node.
  3. 3 . The method of claim 1 , further comprising selecting the stateless sync node from among a plurality of stateless sync nodes based on a current sync load among the plurality of stateless sync nodes.
  4. 4 . The method of claim 1 , further comprising selecting the stateless sync node from among a plurality of stateless sync nodes based on an expected duration of a sync task identified by the sync request.
  5. 5 . The method of claim 1 , further comprising selecting the stateless sync node from among a plurality of stateless sync nodes based on a round-robin approach.
  6. 6 . The method of claim 5 , wherein the selecting comprises selecting a different stateless sync node than a most recently selected stateless sync node from among the plurality of stateless sync nodes.
  7. 7 . The method of claim 1 , further comprising dividing a sync task associated with the sync request into a plurality of shards, and distributing the plurality of shards to a plurality of stateless sync nodes, respectively.
  8. 8 . The method of claim 1 , wherein the synchronizing is resumed based on a point at which a different stateless sync node finished synchronizing the data between the client device and the remote file store.
  9. 9 . A computing system comprising: at least one processor; and a memory storing instructions that, when executed by the at least one processor, cause the computing system to perform a set of operations, the set of operations comprising: storing, at a host service, a synchronization state of a sync node synchronizing data between a client device and a remote data store; receiving, by the host service from a client device, a sync request to resume synchronizing the data between the client device and the remote data store, wherein the sync request comprises a plurality of data sync tasks for synchronizing the data between the client device and the remote data store; transmitting the synchronization state to a stateless sync node that is stateless synchronizing the data between the client device and the remote data store, thereby resuming synchronizing, via the stateless sync node, the data based on the synchronization states, wherein the resumed synchronizing results in changes to the data stored in at least one of the client device or the remote data store by assigning a data sync task of the plurality of data sync tasks to the stateless sync node; and committing the changes.
  10. 10 . The computing system of claim 9 , wherein the synchronization state comprises a synchronization history of the data between the client device and the remote file store performed by at least one different stateless sync node.
  11. 11 . The computing system of claim 9 , wherein the set of operations further comprises selecting the stateless sync node from among a plurality of stateless sync nodes based on a current sync load among the plurality of stateless sync nodes.
  12. 12 . The computing system of claim 9 , wherein the set of operations further comprises selecting the stateless sync node from among a plurality of stateless sync nodes based on an expected duration of a sync task identified by the sync request.
  13. 13 . The computing system of claim 9 , wherein the set of operations further comprises selecting the stateless sync node from among a plurality of stateless sync nodes based on a round-robin approach.
  14. 14 . The computing system of claim 13 , wherein a different stateless sync node is selected than a most recently selected stateless sync node from among the plurality of stateless sync nodes.
  15. 15 . The computing system of claim 9 , wherein the set of operations further comprises dividing a sync task associated with the sync request into a plurality of shards and distributing the plurality of shards to a plurality of stateless sync nodes, respectively.
  16. 16 . The computing system of claim 9 , wherein synchronizing is resumed based on a point at which a different stateless sync node finished synchronizing the data between the client device and the remote file store.
  17. 17 . A non-transitory computer-readable medium comprising instructions which when executed by a processor cause a computer to perform a method comprising: storing, at a host service, a synchronization state of a sync node synchronizing data between a client device and a remote data store; receiving, by the host service from a client device, a sync request to resume synchronizing the data between the client device and the remote data store, wherein the sync request comprises a plurality of data sync tasks for synchronizing the data between the client device and the remote data store; transmitting the synchronization state to a stateless sync node that is stateless in synchronizing the data between the client device and the remote data store, thereby resuming synchronizing, via the stateless sync node, the data based on the synchronization state, wherein the resumed synchronizing results in changes to the data stored in at least one of the client device or the remote data store by assigning a data sync task of the plurality of data sync tasks to the stateless sync node; and committing, by the host service, the changes to the data.
  18. 18 . The non-transitory computer-readable medium of claim 17 , wherein the method further comprises selecting the stateless sync node from among a plurality of stateless sync nodes based on a current sync load among the plurality of stateless sync nodes.
  19. 19 . The non-transitory computer-readable medium of claim 17 , wherein the method further comprises selecting the stateless sync node from among a plurality of stateless sync nodes based on an expected duration of a sync task identified by the sync request.
  20. 20 . The non-transitory computer-readable medium of claim 17 , wherein the method further comprises selecting the stateless sync node from among a plurality of stateless sync nodes based on a round-robin approach in which a different stateless sync node than a most recently selected stateless sync node is selected from among the plurality of stateless sync nodes.

Description

CROSS-REFERENCE TO RELATED APPLICATION(S) The present application is a continuation of U.S. patent application Ser. No. 16/558,978, filed on Sep. 3, 2019, which is a continuation of U.S. patent application Ser. No. 14/922,179, filed on Oct. 25, 2015, now U.S. Pat. No. 10,440,106, which claims the benefit of U.S. Provisional Patent Application No. 62/218,430, filed on Sep. 14, 2015, all of which are hereby incorporated by reference in their entireties. BACKGROUND Various file sync solutions have been generated through the years. In these solutions the sync end-points are accessible to users and applications. When files are being created, modified or deleted, an active-active sync engine is responsible for syncing these changes and bringing all end-points to a consistent state. Some sync solutions support having a hosted file endpoint. However, these solutions suffer from one or both of the following limitations. First the hosted end-point is not accessible to end-users or applications. Instead, the hosted end-point serves only as a ‘hub’ to sync files between other (non-cloud) end points. Second the hosted end point may be accessible, but is accessible only via a sync solution specific access protocol. In essence, there is no ‘direct access’ to files at the hosted end point. Instead, the application or service must implement the sync solution specific protocol and access the files through the sync solution as an intermediate layer. Further, a sync session requires that some state is persisted throughout the session. This requires that state is maintained between the servicing node and both endpoints such that in a scalable system the process is tied to a specific node. SUMMARY The following presents a simplified summary of the disclosure in order to provide a basic understanding to the reader. This summary is not an extensive overview of the disclosure and it does not identify key/critical elements of the invention or delineate the scope of the invention. Its sole purpose is to present some concepts disclosed herein in a simplified form as a prelude to the more detailed description that is presented later. The present disclosure presents a system and method that can be used to synchronize files from a hosted file system where the client endpoint devices have direct access to the files stored on a hosted file store/system. When the client desires to synchronize with the files stored on the hosted file store the process identifies a sync role on a hosted platform that can process the request. The particular sync role does not need to maintain state or the file store. The state necessary for the processing of the synchronization process is maintained separate from the sync role such that any sync role in the system can pick up the requests and process the requests. Once the role has been selected the synchronization process proceeds as normal. As state is not maintained by the sync role multiple roles can process the request or two roles can handle different portions of the synchronization process. This permits the core service to scale out or down the size of the sync roles based on need as well as to manage the use of resources efficiently. Many of the attendant features will be more readily appreciated as the same becomes better understood by reference to the following detailed description considered in connection with the accompanying drawings. DESCRIPTION OF THE DRAWINGS The present description will be better understood from the following detailed description read in light of the accompanying drawings, wherein: FIG. 1 is a high level block diagram illustrating components of a file synchronization system according to one illustrative embodiment. FIG. 2 is block diagram of a file synchronization system where the client devices have direct access to a hosted file store according to one illustrative embodiment. FIG. 3 is a flow diagram illustrating a process for synchronizing files a client and a hosted endpoint with a stateless sync role according to one illustrative embodiment. FIG. 4 illustrates a component diagram of a computing device according to one embodiment. Like reference numerals are used to designate like parts in the accompanying drawings. DETAILED DESCRIPTION The detailed description provided below in connection with the appended drawings is intended as a description of the present examples and is not intended to represent the only forms in which the present example may be constructed or utilized. The description sets forth the functions of the example and the sequence of steps for constructing and operating the example. However, the same or equivalent functions and sequences may be accomplished by different examples. When elements are referred to as being “connected” or “coupled,” the elements can be directly connected or coupled together or one or more intervening elements may also be present. In contrast, when elements are referred to as being “directly connected” or “directly coupled,” there