Compartilhar via


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

APLICA-SE A: NoSQL

Em cenários de gravação em múltiplas regiões, você pode obter um benefício de desempenho ao gravar apenas 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 ConnectionPolicy. Em ConnectionPolicy, defina UseMultipleWriteLocations como true e passe o nome da região em que o aplicativo será implantado para ApplicationRegion. Essa ação preenche a propriedade PreferredLocations com base na proximidade geográfica em relação ao local fornecido. Se uma nova região for adicionada posteriormente à conta, o aplicativo não precisará ser atualizado ou reimplantado. Ele detecta automaticamente a região mais próxima e se dirige automaticamente até ela caso ocorra um evento regional.

Observação

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, confira Configurar várias regiões de gravação.

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.

  1. Entre no portal do Azure.

  2. Navegue até a conta do Azure Cosmos DB. No menu, abra o painel Replicar dados globalmente .

  3. Na opção Gravações de várias regiões, escolha habilitar. Ele adiciona automaticamente as regiões existentes às regiões de leitura e gravação.

  4. É possível adicionar mais regiões selecionando os ícones no mapa ou selecionando o botão Adicionar região. Todas as regiões que você adicionar terão leitura e gravação habilitadas.

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

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

SDK v2 do .NET

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

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

SDK v3 do .NET

Para habilitar gravações em várias regiões no seu aplicativo, configure ApplicationRegion para a região em que o aplicativo está sendo implantado e onde o Azure Cosmos DB está replicado:

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

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

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

SDK do Java v4

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

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

O SDK do Java V2 usa o Maven com.microsoft.azure::azure-cosmosdb. Para habilitar gravações de várias regiões no seu aplicativo, defina policy.setUsingMultipleWriteLocations(true) e defina policy.setPreferredLocations para as List das regiões em que os dados são replicados, ordenados por preferência. Idealmente, as regiões com menor distância ou melhor latência são listadas 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 do Node.js, JavaScript e TypeScript

Para habilitar gravações de 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, ordenadas por preferência. Idealmente, as regiões com menor distância ou melhor latência são listadas 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
});

SDK do Python

Para habilitar gravações de 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, ordenadas por preferência. Idealmente, as regiões com menor distância ou melhor latência são listadas 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)

SDK do Go

Para habilitar várias regiões em seu aplicativo, use PreferredRegions em ClientOptions:

client, err := azcosmos.NewClient(endpoint, token, &azcosmos.ClientOptions{
	PreferredRegions: []string{"West US", "Central US"},
})

Próximas etapas