Согласованность в реальном времени
Из-за особенностей некоторых распределенных систем согласованность в реальном времени между запросами сложно реализовать неявно. Решение состоит в том, чтобы разрешить поддержку протокола в форме нескольких маркеров синхронизации. Токены синхронизации необязательны.
Первоначальный запрос
Чтобы обеспечить согласованность в реальном времени между разными экземплярами клиента и запросами, используйте необязательные запрос Sync-Token
и заголовки ответа.
Синтаксис:
Sync-Token: <id>=<value>;sn=<sn>
Параметр | Описание |
---|---|
<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>