US10356218B2ActiveUtilityA1

Subscription-notification mechanisms for synchronization of distributed states

84
Assignee: GOOGLE LLCPriority: Sep 22, 2012Filed: Jan 8, 2014Granted: Jul 16, 2019
Est. expirySep 22, 2032(~6.2 yrs left)· nominal 20-yr term from priority
H04L 63/08H04L 67/1095H04L 67/42
84
PatentIndex Score
5
Cited by
86
References
20
Claims

Abstract

Apparatus, systems, methods, and related computer program products for synchronizing distributed states amongst a plurality of entities and authenticating devices to access information and/or services provided by a remote server. Synchronization techniques include client devices and remote servers storing buckets of information. The client device sends a subscription request to the remote serve identifying a bucket of information and, when that bucket changes, the remote server sends the change to the client device. Authentication techniques include client devices including unique default credentials that, when presented to a remote server, provide limited access to the server. The client device may obtain assigned credentials that, when presented to the remote server, provide less limited access to the server.

Claims

exact text as granted — not AI-modified
The invention claimed is: 
     
       1. A method of synchronizing data between a first client device, a second client device, and a remote server, the method comprising:
 receiving, at the remote server from the first client device, a device type of the first client device; 
 allocating, after receiving the device type, a first plurality of buckets of information at the remote server for the first client device, wherein:
 a configuration of the first plurality of buckets is determined based on the device type; and 
 the first plurality of buckets of information corresponds to an already existing second plurality of buckets of information stored on the first client device; 
 
 receiving, from the first client device, content with which to populate the first plurality of buckets of information; 
 receiving, at the remote server and from the second client device after receiving the device type, a subscription request identifying at least a first bucket of information in the first plurality of buckets of information provided for the first client device and stored on the remote server, the first bucket of information corresponding to a second bucket of information stored at the second client device; 
 receiving, at the remote server, a change to the first bucket of information in the first plurality of buckets of information stored at the remote server; 
 determining, by the remote server, that there is a difference between the first bucket of information stored at the remote server and the second bucket of information stored at the second client device; and 
 sending, in response to a determination of the difference between the first bucket of information stored at the remote server and the second bucket of information stored at the second client device, a notification of the difference to the second client device. 
 
     
     
       2. The method of  claim 1 , further comprising:
 receiving, at the remote server, a second change to the first bucket of information in the first plurality of buckets of information stored at the remote server; 
 determining, by the remote server, that there is not a second difference between the first bucket of information stored at the remote server and the second bucket of information stored at the second client device; and 
 when it is determined that there is not a second difference between the first bucket of information stored at the remote server and the second bucket of information stored at the second client device, preventing a response from being communicated from the remote server to the second client device until a condition has been satisfied. 
 
     
     
       3. The method of  claim 2 , wherein determining that the condition has been satisfied includes:
 determining that there is a difference between the first bucket of information stored at the remote server and the second bucket of information stored at the second client device 
 determining that a predetermined amount of time has elapsed since receiving the subscription request; and 
 determining that the subscription request excludes at least one of a timestamp and a version of the first bucket of information. 
 
     
     
       4. The method of  claim 3 , further comprising disconnecting a connection between the remote server and the second client device when it is determined that the predetermined amount of time has elapsed since receiving the subscription request. 
     
     
       5. The method of  claim 3 , further comprising communicating, to the second client device, values for field-value pairs included in the first bucket of information stored on the remote server when it is determined that the subscription request excludes at least one of a timestamp or a version of the first bucket of information identified by the subscription request. 
     
     
       6. The method of  claim 1 , further comprising:
 determining, by the remote server, whether any other client devices have pending subscription requests for the first bucket of information stored on the remote server; and 
 notifying, if it is determined that there is at least one other client device that has a pending subscription request for the first bucket of information stored on the remote server, the at least one other client device with the difference. 
 
     
     
       7. The method of  claim 1 , wherein the difference includes a timestamp and a version of the first bucket of information stored at the remote server. 
     
     
       8. The method of  claim 7 , wherein the difference includes values of field-value pairs of the first bucket of information stored at the remote server. 
     
     
       9. The method of  claim 1 , further comprising:
 receiving a desired update to the first bucket; and 
 reconciling the desired update with the first bucket of information stored on the remote server. 
 
     
     
       10. The method of  claim 9 , wherein reconciling the desired update with the first bucket of information stored on the remote server includes merging or refusing to merge the desired update with the first bucket of information stored on the remote server. 
     
     
       11. A computer system, comprising:
 a storage element; and 
 a remote server coupled to the storage element and comprising one or more processors and one or more memory devices, the one of more memory devices comprising instructions that, when executed by the one or more processors, cause the one or more processor to perform operations comprising:
 receiving, from a first client device, a device type of the first client device; 
 allocating, after receiving the device type, a first plurality of buckets of information at the remote server for the first client device, wherein:
 a configuration of the first plurality of buckets is determined based on the device type; and 
 the first plurality of buckets of information corresponds to an already existing second plurality of buckets of information stored on the first client device; 
 
 receiving, from the first client device, content with which to populate the first plurality of buckets of information; 
 receiving, at the remote server and from a second client device after receiving the device type, a subscription request identifying at least a first bucket of information in the first plurality of buckets of information provided for the first client device and stored on the remote server, the first bucket of information corresponding to a second bucket of information stored at the second client device; 
 receiving a change to the first bucket of information in the first plurality of buckets of information; 
 determining that there is a difference between the first bucket of information stored at the storage element and the second bucket of information stored at the second client device; and 
 sending, in response to a determination of the difference between the first bucket of information stored at the storage element and the second bucket of information stored at the second client device, a notification of the difference to the second client device. 
 
 
     
     
       12. The computer system of  claim 11 , wherein the one or more memory devices comprise further instructions that, when executed by the one or more processors, cause the one or more processors to perform additional operations comprising:
 receiving a second change to the first bucket of information in the first plurality of buckets of information stored at the remote server; 
 determining that there is not a second difference between the first bucket of information stored at the remote server and the second bucket of information stored at the second client device; and 
 preventing a response from being communicated to the second client device until a condition has been satisfied when it is determined that there is not a second difference between the first bucket of information stored at the storage element and the second bucket of information stored at the second client device. 
 
     
     
       13. The computer system of  claim 11 , wherein the one or more memory devices comprise further instructions that, when executed by the one or more processors, cause the one or more processors to perform additional operations comprising:
 determining whether any other client devices have pending subscription requests for the first bucket of information stored on the storage element; and 
 when it is determined that there is at least one other client device that has a pending subscription request for the first bucket of information stored on the storage element, notifying the at least one other client device with the difference. 
 
     
     
       14. The computer system of  claim 11 , wherein the difference includes a timestamp and a version of the first bucket of information stored at the storage element. 
     
     
       15. The computer system of  claim 11 , wherein the one or more memory devices comprise further instructions that, when executed by the one or more processors, cause the one or more processors to perform additional operations comprising:
 receiving a desired updated to the first bucket; and 
 reconciling the desired update with the first bucket of information stored on the storage element. 
 
     
     
       16. A non-transitory computer-readable storage medium having instructions stored thereon that, when executed by one or more computer processors, cause the one or more computer processors to perform operations including:
 receiving, from a first client device, a device type of the first client device; 
 allocating, after receiving the device type, a first plurality of buckets of information at a remote server for the first client device, wherein:
 a configuration of the first plurality of buckets is determined based on the device type; and 
 the first plurality of buckets of information corresponds to an already existing second plurality of buckets of information stored on the first client device; 
 
 receiving, from the first client device, content with which to populate the first plurality of buckets of information; 
 receiving, at the remote server and from a second client device after receiving the device type, a subscription request identifying at least a first bucket of information in the first plurality of buckets of information provided for the first client device and stored on the remote server, the first bucket of information corresponding to a second bucket of information stored at the second client device; 
 receiving a change to the first bucket of information in the first plurality of buckets of information; 
 determining that there is a difference between the first bucket of information and the second bucket of information stored at the second client device; and 
 sending, in response to a determination of the difference between the first bucket of information and the second bucket of information stored at the second client device, a notification of the difference to the second client device. 
 
     
     
       17. The storage medium of  claim 16 , wherein having additional instructions stored thereon that, when executed by the one or more computer processors, cause the one or more computer processors to perform additional operations including:
 receiving a second change to the first bucket of information in the first plurality of buckets of information stored at a remote server; 
 determining that there is not a second difference between the first bucket of information stored at the remote server and the second bucket of information stored at the second client device; and 
 when it is determined that there is not a second difference between the first bucket of information and the second bucket of information stored at the second client device, preventing a response from being communicated to the second client device until a condition has been satisfied. 
 
     
     
       18. The storage medium of  claim 16 , having additional instructions stored thereon that, when executed by the one or more computer processors, cause the one or more computer processors to perform additional operations including:
 determining whether any other client devices have pending subscription requests for the first bucket of information; and 
 notifying, if it is determined that there is at least one other client device that has a pending subscription request for the first bucket of information, the at least one other client device with the difference. 
 
     
     
       19. The storage medium of  claim 16 , wherein the difference includes a timestamp and a version of the first bucket of information. 
     
     
       20. The storage medium of  claim 16 , having additional instructions stored thereon that, when executed by the one or more computer processors, cause the one or more computer processors to perform additional operations including:
 receiving a desired updated to the first bucket; and 
 reconciling the desired update with the first bucket of information.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.