实时一致性
由于某些分布式系统的性质,很难隐式强制实施请求之间的实时一致性。 解决方案是以多个同步令牌的形式提供协议支持。 同步令牌是可选的。
初始请求
为了保证不同客户端实例和请求之间的实时一致性,请使用可选的 Sync-Token
请求和响应标头。
语法:
Sync-Token: <id>=<value>;sn=<sn>
参数 | 描述 |
---|---|
<id> |
令牌 ID(不透明) |
<value> |
令牌值(不透明)。 允许 base64 编码的字符串。 |
<sn> |
令牌序列号(版本)。 此值越高意味着同一令牌的版本越新。 可提供更好的并发性和客户端缓存。 客户端可以选择只使用令牌的最新版本,因为令牌版本是包含性的。 请求无需此参数。 |
响应
服务为每个响应提供一个 Sync-Token
标头。
Sync-Token: jtqGc1I4=MDoyOA==;sn=28
后续请求
任何后续请求都获得与提供的 Sync-Token
相关的实时一致响应保证。
Sync-Token: <id>=<value>
如果请求中省略了 Sync-Token
标头,那么该服务就有可能在短时间内(最多几秒钟)使用缓存的数据进行响应,然后再进行内部处理。 如果刚好在读取前进行了更改,则此行为可能会导致读取不一致。
多个同步令牌
对于单个请求,服务器可以使用多个同步令牌进行响应。 为了在下一请求中保持实时一致性,客户端必须使用所有收到的同步令牌进行响应。 多个标头值必须以逗号分隔。
Sync-Token: <token1-id>=<value>,<token2-id>=<value>