リアルタイムの整合性
一部の分散システムの性質上、要求間のリアルタイムの整合性は、暗黙的に適用するのが困難です。 解決策は、複数の同期トークンの形式でプロトコル サポートを許可することです。 同期トークンは省略可能です。
最初の要求
異なるクライアント インスタンスと要求の間でリアルタイムの整合性を保証するには、省略可能な Sync-Token
要求および応答ヘッダーを使用します。
構文:
Sync-Token: <id>=<value>;sn=<sn>
パラメーター | 説明 |
---|---|
<id> |
トークン ID (不透明) |
<value> |
トークン値 (不透明)。 base64 でエンコードされた文字列を使用できます。 |
<sn> |
トークン シーケンス番号 (バージョン)。 数字が高いほど、同じトークンの新しいバージョンを意味します。 コンカレンシーとクライアント キャッシュが向上します。 トークンのバージョンが含まれているため、クライアントではトークンの最後のバージョンのみを使用することができます。 このパラメーターは要求では必要ありません。 |
Response
サービスからの各応答には、Sync-Token
ヘッダーが含まれます。
Sync-Token: jtqGc1I4=MDoyOA==;sn=28
後続の要求
後続の要求では、指定された Sync-Token
に対するリアルタイムで整合性の取れた応答が保証されます。
Sync-Token: <id>=<value>
Sync-Token
ヘッダーを要求から除外した場合、サービスが内部的に落ち着くまでの短い期間 (最大数秒間) に、キャッシュされたデータがサービスによって返される可能性があります。 この動作により、読み取りの直前に変更が行われた場合に、読み取りに不整合が生じる可能性があります。
複数の同期トークン
サーバーでは、1 つの要求に対して複数の同期トークンを使用して応答する場合があります。 次の要求でリアルタイムの整合性を維持するには、クライアントでは、受信したすべての同期トークンを使用して応答する必要があります。 複数のヘッダー値は、コンマで区切る必要があります。
Sync-Token: <token1-id>=<value>,<token2-id>=<value>