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


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

ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL

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

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

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

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

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

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

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

Примечание.

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

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

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

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

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

  • Свойство RequestDiagnosticsString из пакета SDK .NET V2 описывает ответное реагирование.
  • Свойство Diagnostics из пакета SDK .NET V3 описывает ответное реагирование и исключения.
  • Метод getDiagnostics() в ответах и исключениях в пакете SDK для Java версии 4.

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

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

Следующие шаги