System and methods for a fast and scalable synchronization server
First Claim
1. 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;
otherwise processing the unqueued message;
reading a change identifier from a change message;
writing the change identifiers to a change ID list; and
reading the change identifiers from the change ID list to prepare 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.
-
Citations
10 Claims
-
1. 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;
otherwise processing the unqueued message;
reading a change identifier from a change message;
writing the change identifiers to a change ID list; and
reading the change identifiers from the change ID list to prepare a change confirmation message. - View Dependent Claims (2, 3, 4)
-
-
5. 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 arid, 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;
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; and
a change ID list;
wherein, when the smart queue loader receives a change message from the synchronization client, the smart queue loader reads a change identifier from the change message and writes the change identifier into the change ID list, and wherein, when the synchronization engine receives a message requesting confirmation of received changes, the synchronization engine reads change identifiers from the change ID list and prepares a change confirmation message. - View Dependent Claims (6, 7)
-
-
8. 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, wherein the synchronizer also synchronizes data records on other synchronization clients with data records in corresponding reference datasets, and wherein the synchronizer works with multiple instances of each of the listener, the smart queue loader and the smart queue unloader to synchronize with multiple synchronization clients.
-
-
9. 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;
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;
an output queue for queuing messages from the synchronizer server to the synchronizer client; and
a writer for receiving messages from the output queue, and for placing the messages onto a communications channel between the synchronization client and the synchronizer.
-
-
10. 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, wherein the smart queue may be disabled, and, when the smart queue is disabled, all messages are passed directly from the smart queue loader to the synchronization engine.
-
Specification