Бөлісу құралы:


Согласованность в реальном времени

Из-за особенностей некоторых распределенных систем согласованность в реальном времени между запросами сложно реализовать неявно. Решение состоит в том, чтобы разрешить поддержку протокола в форме нескольких маркеров синхронизации. Токены синхронизации необязательны.

Первоначальный запрос

Чтобы обеспечить согласованность в реальном времени между разными экземплярами клиента и запросами, используйте необязательные запрос 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>