Real-time consistency
Due to the nature of some distributed systems, real-time consistency between requests is difficult to enforce implicitly. A solution is to allow protocol support in the form of multiple synchronization tokens. Synchronization tokens are optional.
Initial request
To guarantee real-time consistency between different client instances and requests, use optional Sync-Token
request and response headers.
Syntax:
Sync-Token: <id>=<value>;sn=<sn>
Parameter | Description |
---|---|
<id> |
Token ID (opaque) |
<value> |
Token value (opaque). Allows base64 encoded string. |
<sn> |
Token sequence number (version). Higher means a newer version of the same token. Allows for better concurrency and client caching. The client can choose to use only the token's last version, because token versions are inclusive. This parameter isn't required for requests. |
Response
The service provides a Sync-Token
header with each response.
Sync-Token: jtqGc1I4=MDoyOA==;sn=28
Subsequent requests
Any subsequent request is guaranteed real-time consistent response in relation to the provided Sync-Token
.
Sync-Token: <id>=<value>
If you omit the Sync-Token
header from the request, it's possible for the service to respond with cached data during a short period of time (up to a few seconds), before it settles internally. This behavior might cause inconsistent reads if changes occurred immediately before reading.
Multiple sync-tokens
The server might respond with multiple synchronization tokens for a single request. To keep real-time consistency for the next request, the client must respond with all of the received synchronization tokens. Multiple header values must be comma-separated.
Sync-Token: <token1-id>=<value>,<token2-id>=<value>