System and methods for a fast and scalable synchronization server
First Claim
1. A method of synchronizing a client dataset of a synchronization client with a reference dataset of a synchronization server, the method comprising:
- receiving at the synchronization server a plurality of synchronization messages from the synchronization client and controlling the queuing of said messages according to the following rules;
if a message is a change message, reading a change identifier from the message and writing the change identifier into a change ID list, placing the message in a queue for possible nonsequential processing, and proceeding to receive another message; and
if a message is not a change message, making the message available for immediate processing as an unqueued message, and waiting until the message is processed before proceeding to receive another message; and
processing said plurality of synchronization messages, according to the following rules;
if there is at least one queued message and there is no unqueued message, processing the next queued message;
if there is an unqueued message and there is no queued message, processing the unqueued message;
if there is at least one queued message and there is an unqueued message, then;
if processing the unqueued message requires that the reference dataset be up-to-date, processing the next queued message;
otherwise processing the unqueued message, wherein, processing a change confirmation request message involves reading change identifiers from the change ID list and generating a change confirmation message.
4 Assignments
0 Petitions
Accused Products
Abstract
A sync server responds to messages from a client to synchronize data between a client dataset and a reference dataset. Various messages may be received from the client, including changes to the client dataset, requests for confirmation of received changes, or requests for changes to the reference dataset. When the server receives client changes, the server reads record ID'"'"'s from the messages, writes the ID'"'"'s into a change ID list, and places the changes into a queue for processing. When the server receives a request for confirmation of changes, the server uses the change ID list to confirm receipt of changes, including changes that have not yet been processed. If the server receives a message that requires that the reference dataset be up-to-date, such as a request for changes from the reference dataset, the sync server processes all of the changes in the queue before processing the new message.
25 Citations
20 Claims
-
1. A method of synchronizing a client dataset of a synchronization client with a reference dataset of a synchronization server, the method comprising:
-
receiving at the synchronization server a plurality of synchronization messages from the synchronization client and controlling the queuing of said messages according to the following rules;
if a message is a change message, reading a change identifier from the message and writing the change identifier into a change ID list, placing the message in a queue for possible nonsequential processing, and proceeding to receive another message; and
if a message is not a change message, making the message available for immediate processing as an unqueued message, and waiting until the message is processed before proceeding to receive another message; and
processing said plurality of synchronization messages, according to the following rules;
if there is at least one queued message and there is no unqueued message, processing the next queued message;
if there is an unqueued message and there is no queued message, processing the unqueued message;
if there is at least one queued message and there is an unqueued message, then;
if processing the unqueued message requires that the reference dataset be up-to-date, processing the next queued message;
otherwiseprocessing the unqueued message, wherein, processing a change confirmation request message involves reading change identifiers from the change ID list and generating a change confirmation message. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method for processing a plurality of synchronization messages received from a synchronization client, the method comprising:
-
receiving said plurality of synchronization messages from the synchronization client and controlling the queuing of said messages according to the following rules;
if a message is queueable, placing the message on a queue for possible nonsequential processing and proceeding to receive another message; and
if a message is nonqueueable, making the message available for immediate processing as an unqueued message and waiting until the message is processed before proceeding to receive another message; and
processing said plurality of synchronization messages, according to the following rules;
if there is at least one queued message and there is no unqueued message, processing the next queued message;
if there is an unqueued message and there is no queued message, processing the unqueued message;
if there is at least one queued message and there is an unqueued message, then;
if the unqueued message requires that the queue be cleared before processing the unqueued message, processing the next queued message;
otherwiseprocessing the unqueued message. - View Dependent Claims (7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20)
-
-
12. A synchronizer for synchronizing data records on a synchronization client with data records in a reference dataset wherein the synchronization client sends messages to the synchronizer during a synchronization process, the synchronizer comprising:
-
an input queue for initially queuing messages received from the synchronization client;
a smart queue for queuing messages that are determined to be queueable;
a smart queue loader for retrieving a message from the input queue and, if the message is queueable, placing the message on the smart queue and proceeding to retrieve another message from the input queue, or, if the message is not queueable, making the message available for immediate processing as an unqueued messaged and waiting until the message is processed before proceeding to retrieve another message from the input queue; and
a synchronization engine for receiving messages one at a time from either the smart queue or directly from the smart queue loader, processing the synchronization messages, and making any required changes to the reference dataset, wherein the synchronization engine receives messages from the smart queue or the smart queue loader according to the following rules;
if there is at least one queued message and there is no unqueued message, receiving and processing the next queued message;
if there is an unqueued message and there is no queued message, receiving and processing the unqueued message;
if there is at least one queued message and there is an unqueued message, then;
if the unqueued message requires that the queue be cleared before processing the unqueued message, receiving and processing the next queued message;
otherwisereceiving and processing the unqueued message.
-
Specification