Настройка операций записи в нескольких регионах в приложениях, использующих Azure Cosmos DB
ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL
В нескольких сценариях записи в регионе вы можете получить преимущество производительности, записав только в регион, близкий к экземпляру приложения. Azure Cosmos DB обрабатывает репликацию за кулисами.
После включения учетной записи для нескольких регионов записи необходимо внести два изменения в приложение ConnectionPolicy
. В поле ConnectionPolicy
UseMultipleWriteLocations
и передайте имя региона, в котором развернуто ApplicationRegion
приложение. Это действие заполняет PreferredLocations
свойство на основе географического расположения от переданного расположения. Если новый регион позже добавляется в учетную запись, приложение не должно быть обновлено или повторно развернуто. Он автоматически обнаруживает более близкий регион и автоматические дома к нему, если должно произойти региональное событие.
Примечание.
Изначально настроенные учетные записи Azure Cosmos DB с одним регионом записи можно настроить для нескольких регионов записи с нулевым временем простоя. Дополнительные сведения см. в статье "Настройка нескольких регионов записи".
Портал Azure
Чтобы использовать записи в нескольких регионах, включите учетную запись Azure Cosmos DB для нескольких регионов с помощью портал Azure. Укажите регионы, в которые может записываться приложение.
Чтобы включить запись в нескольких регионах, выполните следующие действия.
Войдите на портал Azure.
Перейдите к учетной записи Azure Cosmos DB и в меню откройте глобальную панель "Репликация данных ".
В разделе Операции записи в нескольких регионах выберите Включить. Это позволит автоматически добавить существующие регионы в качестве регионов для чтения и записи.
Вы можете добавить дополнительные регионы, выбрав значки на карте или нажав кнопку "Добавить регион ". Все добавленные регионы включены как для чтения, так и записи.
После обновления списка регионов нажмите кнопку "Сохранить ", чтобы применить изменения.
Пакет SDK версии 2 для .NET
Чтобы включить операции записи в нескольких регионах в приложении, задайте для UseMultipleWriteLocations
значение true
. Кроме того, задайте для SetCurrentLocation
регион, в котором развернуто приложение и реплицируется Azure Cosmos DB:
ConnectionPolicy policy = new ConnectionPolicy
{
ConnectionMode = ConnectionMode.Direct,
ConnectionProtocol = Protocol.Tcp,
UseMultipleWriteLocations = true
};
policy.SetCurrentLocation("West US 2");
Пакет SDK для .NET версии 3
Чтобы включить запись в нескольких регионах в приложении, задайте ApplicationRegion
регион, в котором развертывается приложение и где реплицируется Azure Cosmos DB:
CosmosClient cosmosClient = new CosmosClient(
"<connection-string-from-portal>",
new CosmosClientOptions()
{
ApplicationRegion = Regions.WestUS2,
});
При необходимости можно использовать CosmosClientBuilder
и WithApplicationRegion
для достижения того же результата:
CosmosClientBuilder cosmosClientBuilder = new CosmosClientBuilder("<connection-string-from-portal>")
.WithApplicationRegion(Regions.WestUS2);
CosmosClient client = cosmosClientBuilder.Build();
Пакет SDK для Java версии 4
Чтобы включить запись в приложении с несколькими регионами, вызовите .multipleWriteRegionsEnabled(true)
и .preferredRegions(preferredRegions)
в построителе клиентов, где preferredRegions
данные List
реплицируются в упорядоченные по предпочтениям, в идеале регионы с коротким расстоянием или максимальной задержкой сначала:
Async API пакета SDK для Java версии 4 (Maven com.azure::azure-cosmos):
ArrayList<String> preferredRegions = new ArrayList<String>();
preferredRegions.add(region);
CosmosAsyncClient client =
new CosmosClientBuilder()
.endpoint(HOST)
.key(MASTER_KEY)
.multipleWriteRegionsEnabled(true)
.preferredRegions(preferredRegions)
.buildAsyncClient();
Пакет SDK Async Java версии 2
Пакет средств разработки для Java версии 2 с использованием com.microsoft.azure::azure-cosmosdb. Чтобы включить запись в нескольких регионах в приложении, задайте policy.setUsingMultipleWriteLocations(true)
и задайте policy.setPreferredLocations
для List
регионов, в которые данные реплицируются по предпочтениям, в идеале регионы с самым коротким расстоянием или максимальной задержкой сначала:
ConnectionPolicy policy = new ConnectionPolicy();
policy.setUsingMultipleWriteLocations(true);
policy.setPreferredLocations(Collections.singletonList(region));
AsyncDocumentClient client =
new AsyncDocumentClient.Builder()
.withMasterKeyOrResourceToken(this.accountKey)
.withServiceEndpoint(this.accountEndpoint)
.withConsistencyLevel(ConsistencyLevel.Eventual)
.withConnectionPolicy(policy).build();
Пакеты SDK для Node.js, JavaScript и TypeScript
Чтобы включить операции записи в нескольких регионах в приложении, задайте для connectionPolicy.UseMultipleWriteLocations
значение true
. Кроме того, задайте connectionPolicy.PreferredLocations
для регионов, в которые данные реплицируются по предпочтениям, в идеале регионы с самым коротким расстоянием или максимальной задержкой сначала:
const connectionPolicy: ConnectionPolicy = new ConnectionPolicy();
connectionPolicy.UseMultipleWriteLocations = true;
connectionPolicy.PreferredLocations = [region];
const client = new CosmosClient({
endpoint: config.endpoint,
auth: { masterKey: config.key },
connectionPolicy,
consistencyLevel: ConsistencyLevel.Eventual
});
Пакет SDK для Python
Чтобы включить операции записи в нескольких регионах в приложении, задайте для connection_policy.UseMultipleWriteLocations
значение true
. Кроме того, задайте connection_policy.PreferredLocations
для регионов, в которые данные реплицируются по предпочтениям, — в идеале регионы с самым коротким расстоянием или оптимальной задержкой.
connection_policy = documents.ConnectionPolicy()
connection_policy.UseMultipleWriteLocations = True
connection_policy.PreferredLocations = [region]
client = cosmos_client.CosmosClient(self.account_endpoint, {
'masterKey': self.account_key}, connection_policy, documents.ConsistencyLevel.Session)