Partilhar via


Configurar gravações de várias regiões em seus aplicativos que usam o Azure Cosmos DB

APLICA-SE A: NoSQL

Em vários cenários de gravação de região, você pode obter um benefício de desempenho gravando somente na região próxima à instância do aplicativo. O Azure Cosmos DB lida com a replicação para você nos bastidores.

Depois de habilitar sua conta para várias regiões de gravação, você deve fazer duas alterações no aplicativo para o ConnectionPolicy. Dentro do ConnectionPolicy, defina UseMultipleWriteLocations true como e passe o nome da região onde o aplicativo é implantado para ApplicationRegion. Esta ação preenche a PreferredLocations propriedade com base na proximidade geográfica do local passado. Se uma nova região for adicionada posteriormente à conta, o aplicativo não precisará ser atualizado ou reimplantado. Ele deteta automaticamente a região mais próxima e se conecta automaticamente a ela caso ocorra um evento regional.

Nota

As contas do Azure Cosmos DB inicialmente configuradas com uma única região de gravação podem ser configuradas para várias regiões de gravação com tempo de inatividade zero. Para saber mais, consulte Configurar regiões de gravação múltipla.

Portal do Azure

Para usar gravações de várias regiões, habilite sua conta do Azure Cosmos DB para várias regiões usando o portal do Azure. Especifique em quais regiões seu aplicativo pode gravar.

Para habilitar gravações em várias regiões, use as seguintes etapas:

  1. Inicie sessão no portal do Azure.

  2. Navegue até sua conta do Azure Cosmos DB e, no menu, abra o painel Replicar dados globalmente .

  3. Na opção Gravações em várias regiões, escolha ativar. Ele adiciona automaticamente as regiões existentes para ler e gravar regiões.

  4. Você pode adicionar mais regiões selecionando os ícones no mapa ou selecionando o botão Adicionar região . Todas as regiões adicionadas têm leitura e gravação habilitadas.

  5. Depois de atualizar a lista de regiões, selecione Salvar para aplicar as alterações.

    Captura de tela para habilitar gravações em várias regiões usando o portal do Azure.

SDK v2 de .NET

Para habilitar gravações em várias regiões em seu aplicativo, defina UseMultipleWriteLocations como true. Além disso, defina SetCurrentLocation para a região na qual o aplicativo está sendo implantado e onde o Azure Cosmos DB é replicado:

ConnectionPolicy policy = new ConnectionPolicy
    {
        ConnectionMode = ConnectionMode.Direct,
        ConnectionProtocol = Protocol.Tcp,
        UseMultipleWriteLocations = true
    };
policy.SetCurrentLocation("West US 2");

SDK v3 de .NET

Para habilitar gravações em várias regiões em seu aplicativo, defina ApplicationRegion como a região na qual o aplicativo está sendo implantado e onde o Azure Cosmos DB é replicado:

CosmosClient cosmosClient = new CosmosClient(
    "<connection-string-from-portal>", 
    new CosmosClientOptions()
    {
        ApplicationRegion = Regions.WestUS2,
    });

Opcionalmente, você pode usar o CosmosClientBuilder e WithApplicationRegion para obter o mesmo resultado:

CosmosClientBuilder cosmosClientBuilder = new CosmosClientBuilder("<connection-string-from-portal>")
            .WithApplicationRegion(Regions.WestUS2);
CosmosClient client = cosmosClientBuilder.Build();

Java V4 SDK

Para habilitar gravações em várias regiões em seu aplicativo, chame .multipleWriteRegionsEnabled(true) e .preferredRegions(preferredRegions) no construtor de clientes, onde preferredRegions é uma List das regiões em que os dados são replicados ordenados por preferência - idealmente as regiões com menor distância/melhor latência primeiro:

API assíncrona do Java SDK V4 (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 Java V2 assíncrono

O Java V2 SDK usou o Maven com.microsoft.azure::azure-cosmosdb. Para habilitar gravações em várias regiões em seu aplicativo, defina policy.setUsingMultipleWriteLocations(true) e defina policy.setPreferredLocations para as regiões em que os List dados são replicados ordenados por preferência - idealmente as regiões com menor distância/melhor latência primeiro:

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();

SDKs Node.js, JavaScript e TypeScript

Para habilitar gravações em várias regiões em seu aplicativo, defina connectionPolicy.UseMultipleWriteLocations como true. Além disso, defina connectionPolicy.PreferredLocations para as regiões em que os dados são replicados ordenados por preferência - idealmente as regiões com menor distância/melhor latência primeiro:

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
});

Python SDK

Para habilitar gravações em várias regiões em seu aplicativo, defina connection_policy.UseMultipleWriteLocations como true. Além disso, defina connection_policy.PreferredLocations para as regiões em que os dados são replicados ordenados por preferência - idealmente as regiões com menor distância/melhor latência primeiro.

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)

Próximos passos