Поделиться через


Диагностика и устранение неполадок доступности пакетов SDK Azure Cosmos DB в многорегиональных средах

В этой статье описывается поведение последней версии пакетов SDK Azure Cosmos DB при возникновении проблемы с подключением к конкретному региону или при отказе региона.

Все пакеты SDK Для Azure Cosmos DB позволяют настроить региональные предпочтения. Следующие свойства используются в разных пакетах SDK:

Когда SDK инициализируется с конфигурацией, указывающей региональные предпочтения, оно сначала получит информацию об учетной записи, включая доступные регионы, из глобальной конечной точки. Затем он будет применять пересечение настроенных региональных предпочтений и доступных регионов учетной записи и использовать порядок в региональных предпочтениях для определения приоритета результата.

Если конфигурация региональных предпочтений содержит регионы, которые не являются доступным регионом в учетной записи, значения будут игнорироваться. Если эти недопустимые регионы добавляются позже в учетную запись, пакет SDK будет использовать их, если они выше в конфигурации предпочтения.

Тип аккаунта Чтение Запись
Один регион записи Предпочтительный регион с высшим приоритетом Основной регион
Несколько регионов записи Предпочтительный регион с самым высоким приоритетом Предпочтительный регион с наивысшим приоритетом

Если вы не задаете предпочтительный регион, клиент SDK по умолчанию использует основной регион:

Тип аккаунта Чтение Запись
Один регион записи Основной регион Основной регион
Несколько регионов записи Основной регион Основной регион

Замечание

Основной регион относится к первому региону в списке регионов учетной записи Azure Cosmos DB. Если значения, указанные как региональные предпочтения, не соответствуют существующим регионам Azure, они будут игнорироваться. Если они соответствуют существующему региону, но учетная запись не реплицируется в нее, клиент подключается к следующему предпочтительному региону, который соответствует или к основному региону.

Предупреждение

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

В обычных обстоятельствах клиент ПАКЕТА SDK будет подключаться к предпочтительному региону (если задано региональное предпочтение) или к основному региону (если предпочтения не заданы), а операции будут ограничены этим регионом, если ни один из приведенных ниже сценариев не будет выполняться.

В таких случаях клиент, использующий пакет SDK Azure Cosmos DB, предоставляет журналы и включает сведения о повторных попытках в рамках диагностических сведений об операции:

  • Свойство RequestDiagnosticsString для ответов в пакете SDK для .NET версии 2.
  • Свойство Diagnostics для ответов и исключений в пакете SDK для .NET версии 3.
  • Метод getDiagnostics() для ответов и исключений в пакете SDK java версии 4.

При определении следующего региона в порядке предпочтения клиент ПАКЕТА SDK будет использовать список регионов учетной записи, приоритетизируя предпочитаемые регионы (если таковые есть).

Подробные сведения о гарантиях в рамках SLA во время этих событий см. в разделе уровень доступности SLA.

Удаление региона из учетной записи

При удалении региона из учетной записи Azure Cosmos DB любой клиент SDK, активно использующий эту учетную запись, обнаружит удаление региона с помощью кода ответа от серверной части. Затем клиент помечает региональную конечную точку как недоступную. Клиент повторяет текущую операцию и все будущие операции окончательно направляются в следующий регион в порядке предпочтения. Если в списке предпочтений есть только одна запись (или пустая), но у учетной записи есть другие регионы, она будет перенаправлена в следующий регион в списке учетных записей.

Добавление региона в учетную запись

Каждые 5 минут клиент пакета SDK Azure Cosmos DB считывает конфигурацию учетной записи и обновляет регионы, о которых он знает.

Если вы удалите регион и позже добавите его обратно в учетную запись, если добавленный регион имеет более высокий региональный порядок предпочтений в конфигурации пакета SDK, чем текущий подключенный регион, пакет SDK переключится на постоянное использование этого региона. После обнаружения добавленного региона все будущие запросы направляются в него.

Если клиент настроен для предпочтительного подключения к региону, который не имеет учетной записи Azure Cosmos DB, предпочтительный регион игнорируется. Если вы добавите этот регион позже, клиент обнаруживает его и будет постоянно переключаться в этот регион.

Отказоустойчивость региона записи в учетной записи с одним регионом записи

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

Региональный сбой

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

Гарантии согласованности сеансов

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

Временные проблемы с подключением к протоколу TCP

В сценариях, когда клиент пакета SDK Для Azure Cosmos DB настроен для использования протокола TCP для данного запроса, могут возникнуть ситуации, когда условия сети временно влияют на связь с определенной конечной точкой. Эти временные сетевые условия могут проявляться как тайм-ауты TCP и ошибки "Служба недоступна" (HTTP 503). По возможности клиент повторит запрос локально в той же конечной точке в течение нескольких секунд.

Если пользователь настроил предпочтительный список регионов с несколькими регионами и клиент исчерпал все локальные повторные попытки, он может попытаться повторить одну операцию в следующем регионе из списка предпочтений. Операции записи могут повторно выполняться в другом регионе, только если в учетной записи Azure Cosmos DB включено несколько регионов записи, а операции чтения можно повторно выполнять в любом доступном регионе.

Дальнейшие шаги