Cohérence en temps réel
En raison de la nature de certains systèmes distribués, il est difficile d’appliquer la cohérence en temps réel entre les demandes de manière implicite. Une solution consiste à autoriser la prise en charge du protocole sous la forme de plusieurs jetons de synchronisation. Les jetons de synchronisation sont facultatifs.
Demande initiale
Pour garantir la cohérence en temps réel entre les différentes instances et demandes de client, utilisez des en-têtes de demande et réponse Sync-Token
facultatifs.
Syntaxe :
Sync-Token: <id>=<value>;sn=<sn>
Paramètre | Description |
---|---|
<id> |
ID de jeton (opaque) |
<value> |
Valeur de jeton (opaque). Autorise une chaîne encodée en base64. |
<sn> |
Numéro de séquence du jeton (version). Une valeur plus élevée correspond à une version plus récente du même jeton. Permet une meilleure concurrence et une mise en cache client. Le client peut choisir d’utiliser uniquement la dernière version du jeton, car les versions de jeton sont inclusives. Ce paramètre n’est pas requis pour les demandes. |
response
Le service fournit un en-tête Sync-Token
avec chaque réponse.
Sync-Token: jtqGc1I4=MDoyOA==;sn=28
Demandes suivantes
Il est garanti que toute demande ultérieure recevra une réponse cohérente en temps réel par rapport au Sync-Token
fourni.
Sync-Token: <id>=<value>
Si vous omettez l’en-tête Sync-Token
de la demande, il est possible que le service réponde avec des données mises en cache pendant une brève période de temps (jusqu’à quelques secondes) avant d’être réglé en interne. Ce comportement peut provoquer des lectures incohérentes si des modifications ont eu lieu immédiatement avant la lecture.
Jetons de synchronisation multiples
Le serveur peut répondre avec plusieurs jetons de synchronisation à une demande individuelle. Pour conserver la cohérence en temps réel pour la demande suivante, le client doit répondre avec tous les jetons de synchronisation reçus. Plusieurs valeurs d’en-tête doivent être séparées par des virgules.
Sync-Token: <token1-id>=<value>,<token2-id>=<value>