Многорегиональная запись в Azure Cosmos DB

Чтобы достичь почти нулевого простоя во время частичного или общего сбоя, если согласованность чтения не требуется, настройте учетную запись для записи в нескольких регионах. В этой статье объясняются ключевые концепции, которые необходимо знать при настройке мульти-региональной учетной записи записи.

Регион концентратора

В учетной записи базы данных с поддержкой записи в нескольких регионах и двумя или более регионами, основной регион, где создается ваша учетная запись, называется "концентратор". Все остальные регионы, которые вы добавляете в учетную запись, называются "вспомогательными" регионами. При удалении центрального региона из учетной записи следующий регион в порядке их добавления автоматически выбирается в качестве центрального региона.

Все записи, поступающие в спутниковые регионы, утверждаются кворумом в локальном регионе, а затем отправляются в центральный регион для разрешения конфликтов асинхронно. Когда запись отправляется в узловой регион и конфликт разрешается, она становится "подтвержденной" записью. До тех пор это "предварительная" или "неподтвержденная" запись. Любая запись, обслуживаемая из центрального региона, сразу же становится подтвержденной записью.

Общие сведения о метках времени

Учетная запись с многорегиональной записью использует два значения метки времени сервера для каждой сущности. Первое — время эпохи сервера, когда сущность записывается в этом регионе. Эта метка времени отображается как в учетных записях с записью в одном регионе, так и в учетных записях с записью в нескольких регионах. Вторая метка времени сервера — это время эпохи, когда подтверждение отсутствия конфликта или конфликт фиксируется в концентраторе. Подтверждённая или исправленная запись конфликта получает временную метку разрешения конфликтов (crts), но неподтверждённая или предварительная запись не получает crts. Cosmos DB задает две метки времени на сервере. Основное различие заключается в том, используется ли учетная запись с одной записью или конфигурацией региона с несколькими записями.

Timestamp Значение Когда подвергается
_ts Эпоха сервера, в которую была записана сущность Всегда доступно через все API для чтения и запросов.
crts Время эпохи, когда исправлен конфликт при многократной записи, или подтверждено отсутствие конфликта. Для настройки нескольких регионов эта метка времени задает порядок изменений для канала изменений: находит время начала запросов канала изменений, задает порядок сортировки в ответах канала изменений. Отображается в ответах ленты изменений, только если запрос включает "новую модель взаимодействия". Это поведение установлено по умолчанию для режима ленты изменений "все версии и удаления".