Configurar escritas em várias regiões nas suas aplicações que utilizam o Azure Cosmos DB

APLICA-SE A: NoSQL

Em vários cenários de escrita de regiões, pode obter um benefício de desempenho ao escrever apenas na região próxima da instância da aplicação. O Azure Cosmos DB processa a replicação por si nos bastidores.

Depois de ativar a sua conta para várias regiões de escrita, tem de fazer duas alterações na sua aplicação ao ConnectionPolicy. ConnectionPolicyNo , defina UseMultipleWriteLocations para true e transmita o nome da região onde a aplicação é implementada para ApplicationRegion. Esta ação preenche a PreferredLocations propriedade com base na proximidade geográfica da localização transmitida. Se uma nova região for adicionada mais tarde à conta, a aplicação não tem de ser atualizada ou reimplementada. Deteta automaticamente a região mais próxima e as casas automáticas no mesmo caso ocorra um evento regional.

Nota

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

Portal do Azure

Para utilizar escritas em várias regiões, ative a sua conta do Azure Cosmos DB para várias regiões com o portal do Azure. Especifique as regiões nas quais a sua aplicação pode escrever.

Para ativar escritas em várias regiões, utilize os seguintes passos:

  1. Inicie sessão no portal do Azure.

  2. Navegue para a sua conta do Azure Cosmos DB e, a partir do menu, abra o painel Replicar dados globalmente .

  3. Na opção Escritas em várias regiões , selecione ativar. Adiciona automaticamente as regiões existentes às regiões de leitura e escrita.

  4. Pode adicionar mais regiões ao selecionar os ícones no mapa ou ao selecionar o botão Adicionar região . Todas as regiões que adicionar têm leituras e escritas ativadas.

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

    Captura de ecrã para ativar escritas em várias regiões com portal do Azure.

SDK v2 de .NET

Para ativar escritas em várias regiões na sua aplicação, defina UseMultipleWriteLocations como true. Além disso, defina SetCurrentLocation para a região na qual a aplicação está a ser implementada 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 ativar escritas em várias regiões na sua aplicação, defina ApplicationRegion para a região na qual a aplicação está a ser implementada e onde o Azure Cosmos DB é replicado:

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

Opcionalmente, pode utilizar 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 ativar escritas em várias regiões na sua aplicação, chame .multipleWriteRegionsEnabled(true) e .preferredRegions(preferredRegions) no construtor de clientes, onde preferredRegions é uma List das regiões em que os dados são replicados por preferência , idealmente as regiões com menor distância/melhor latência primeiro:

SDK Java V4 (Maven com.azure::azure-cosmos) API Async:


ArrayList<String> preferredRegions = new ArrayList<String>();
preferredRegions.add(region);

CosmosAsyncClient client =
        new CosmosClientBuilder()
                .endpoint(HOST)
                .key(MASTER_KEY)
                .multipleWriteRegionsEnabled(true)
                .preferredRegions(preferredRegions)
                .buildAsyncClient();

Async Java V2 SDK

O SDK Java V2 utilizou o Maven com.microsoft.azure::azure-cosmosdb. Para ativar escritas em várias regiões na sua aplicação, defina policy.setUsingMultipleWriteLocations(true) e defina policy.setPreferredLocations para as List regiões em que os dados são replicados 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 ativar escritas em várias regiões na sua aplicação, defina connectionPolicy.UseMultipleWriteLocations como true. Além disso, defina connectionPolicy.PreferredLocations para as regiões em que os dados são replicados por preferência , idealmente as regiões com a distância/melhor latência mais curtas 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 Python

Para ativar escritas em várias regiões na sua aplicação, defina connection_policy.UseMultipleWriteLocations como true. Além disso, defina connection_policy.PreferredLocations para as regiões em que os dados são replicados por preferência, idealmente as regiões com a distância/melhor latência mais curtas 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)

Passos seguintes