Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL
В этой статье описывается поведение последних версий пакетов SDK Azure Cosmos DB при возникновении проблем с подключением к конкретному региону или при отказе региона.
Все пакеты SDK Для Azure Cosmos DB позволяют настроить региональные предпочтения. В различных пакетах SDK используются следующие свойства:
- Свойство, имеющееся в пакете SDK .NET V2: ConnectionPolicy.PreferredLocations.
- Свойства, имеющиеся в пакете SDK .NET V3: CosmosClientOptions.ApplicationRegion или CosmosClientOptions.ApplicationPreferredRegions.
- Метод, имеющийся в пакете SDK Java V4: CosmosClientBuilder.preferredRegions.
- Параметр, имеющийся в пакете SDK Python: CosmosClient.preferred_locations.
- Параметр, имеющийся в пакете SDK JS: CosmosClientOptions.ConnectionPolicy.preferredLocations.
Когда пакет SDK инициализируется с конфигурацией, указывающей региональные предпочтения, сначала оно получит сведения об учетной записи, включая доступные регионы из глобального пункта доступа. Затем он будет применять пересечение настроенных региональных предпочтений и доступных регионов учетной записи и использовать порядок в региональных предпочтениях для определения приоритета результата.
Если конфигурация региональных предпочтений содержит регионы, которые не являются доступным регионом в учетной записи, значения будут игнорироваться. Если эти недопустимые регионы добавляются позже в учетную запись, пакет SDK будет использовать их, если они выше в конфигурации предпочтения.
Тип счета | Читает | Пишет |
---|---|---|
Один регион записи | Предпочтительный регион с наибольшим числом заказов | Основной регион |
Несколько регионов записи | Предпочтительный регион с наивысшим приоритетом | Предпочтительный регион с высшим приоритетом |
Если не задать предпочитаемый регион, клиент пакета SDK по умолчанию будет использовать основной регион:
Тип счета | Чтение | Пишет |
---|---|---|
Один регион записи | Основной регион | Основной регион |
Несколько регионов записи | Основной регион | Основной регион |
Примечание
Основной регион относится к первому региону в списке регионов учетной записи Azure Cosmos DB. Если значения, указанные в качестве региональных настроек, не совпадают с существующими регионами Azure, они игнорируются. Если эти значения совпадают с существующим регионом, но учетная запись не реплицирована в этот регион, клиент будет подключаться к следующему по предпочтительности региону, который соответствует настройкам, или к основному региону.
Предупреждение
Логику резервирования и доступности, описанную в этом документе, можно отключить в конфигурации клиента, что не рекомендуется, если только пользовательское приложение не будет самостоятельно обрабатывать ошибки доступности. Это выполняется посредством следующих настроек.
- Установка свойства ConnectionPolicy.EnableEndpointDiscovery в значение false в SDK .NET V2.
- Установить свойство CosmosClientOptions.LimitToEndpoint в пакете SDK .NET V3 в значение true.
- Установка значения «false» для метода CosmosClientBuilder.endpointDiscoveryEnabled в SDK Java V4.
- Установка параметра CosmosClient.enable_endpoint_discovery в SDK Python на false.
- Заданием значения «false» для параметра CosmosClientOptions.ConnectionPolicy.enableEndpointDiscovery из пакета SDK JS.
В нормальных условиях клиент SDK подключается к предпочтительному региону (если региональные настройки заданы) или к основному региону (если региональные настройки не заданы), и работа будет происходить с выбранным таким образом регионом, если не произойдет ни один из следующих сценариев.
В таких случаях клиент, использующий пакет SDK Azure Cosmos DB, предоставляет журналы и включает сведения о повторных попытках в рамках диагностических сведений об операции:
- Свойство RequestDiagnosticsString из пакета SDK .NET V2 описывает ответное реагирование.
- Свойство Diagnostics из пакета SDK .NET V3 описывает ответное реагирование и исключения.
- Метод getDiagnostics() для ответов и исключений в SDK для Java V4.
При определении следующего предпочтительного региона клиент пакета SDK будет использовать список регионов из учетной записи, определяя приоритетность регионов по их предпочтительности (если она задана).
Подробные сведения о гарантиях SLA во время таких событий см. в документе Соглашения об уровне обслуживания для обеспечения доступности.
При удалении региона из учетной записи Azure Cosmos DB любой клиент SDK, активно использующий учетную запись, обнаружит удаление региона с помощью кода ответа от серверной части. После этого клиент помечает региональную конечную точку как недоступную. Клиент повторяет текущую операцию, и все последующие операции будут постоянно направляться в следующий по предпочтению регион. Если в списке предпочтений имеется только одна запись (или этот список пуст), но в списке учетной записи есть другие доступные регионы, дальше будет перенаправлено в следующий регион.
Каждые 5 минут клиент пакета SDK Azure Cosmos DB считывает конфигурацию учетной записи и обновляет регионы, о которых он знает.
В случае удаления региона из учетной записи и повторного его добавления в последствии в эту учетную запись, если при этом в конфигурации пакета SDK для этого добавляемого региона задан более высокий приоритет, чем у текущего подключенного региона, то пакет SDK переключается на постоянное использование этого добавляемого региона. После обнаружения добавленного региона в него направляются все последующие запросы.
Если клиент настроен для предпочтительного подключения к региону, который не имеет учетной записи Azure Cosmos DB, предпочтительный регион игнорируется. Если этот регион добавить в учетную запись позже, клиент обнаружит его и переключится на его постоянное использование.
При переключении на резервный узел в текущем регионе записи следующий запрос на запись завершится ошибкой с известным ответом серверной части. При обнаружении этого ответа клиент обращается к учетной записи, чтобы определить новый регион записи, повторяет текущую операцию и навсегда перенаправляет все будущие операции записи в новый регион.
Если учетная запись использует один регион записи, и в процессе выполнения операции записи в этом регионе происходит сбой, поведение системы аналогично отказоустойчивости вручную. Для запросов на чтение или учетных записей с несколькими регионами для записи, поведение аналогично удалению региона.
При использовании функции согласованности сеанса клиенту нужно гарантировать, что он может считывать собственные записи. В учетных записях с одним регионом записи, в которых предпочтительный регион чтения отличается от региона записи, могут возникнуть случаи, когда пользователь выдает запись, а затем выполняет чтение из локального региона, локальный регион еще не получил репликацию данных (скорость легкого ограничения). В таких случаях пакет SDK получает конкретный сбой от службы в операции чтения и повторно выполняет операцию чтения в основном регионе, чтобы обеспечить целостность сеанса. Для учетных записей с несколькими регионами записи применяется та же самая сессийная семантика, но из-за наличия нескольких доступных регионов записи повторные попытки совершаются в соответствии с предпочтительным списком регионов или порядком регионов учетной записи.
В сценариях, когда клиент пакета SDK Для Azure Cosmos DB настроен для использования протокола TCP для данного запроса, могут возникнуть ситуации, когда условия сети временно влияют на связь с определенной конечной точкой. Эти временные условия в сети могут проявляться как истечение времени ожидания по условиям протокола TCP и как ошибки типа «Служба недоступна» (HTTP 503). По возможности клиент повторит запрос локально для той же самой конечной точки в течение нескольких секунд.
Если пользователь настроил предпочтительный список регионов с несколькими регионами, а клиент исчерпал все локальные повторные попытки, он может попытаться повторить одну операцию в следующем регионе из списка предпочтений. Операции записи можно повторить только в другом регионе, если в учетной записи Azure Cosmos DB включено несколько регионов записи, а операции чтения можно повторить в любом доступном регионе.
- Ознакомьтесь с Соглашениями об уровне обслуживания для доступности.
- Используйте новейший выпуск пакета SDK для .NET
- Используйте новейший выпуск пакета SDK для Java
- Используйте новейший выпуск пакета SDK для Python
- Используйте новейший выпуск пакет SDK для Node