Configurar gravações de várias regiões em seus aplicativos que usam o Azure Cosmos DB
APLICA-SE A: NoSQL
Em cenários de gravação de várias regiões, é possível obter um benefício de desempenho gravando 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 gravação de várias regiões, você deve fazer duas alterações em seu aplicativo no 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 do local passado. 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 será automaticamente iniciado em caso de evento regional.
Observação
Contas do Azure Cosmos DB configuradas inicialmente com uma região de gravação única podem ser configuradas para várias regiões de gravação sem nenhum tempo de inatividade. Para saber mais, veja Configurar gravação de várias regiões.
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 de várias regiões, use as seguintes etapas:
Entre no portal do Azure.
Navegue até sua conta do Azure Cosmos DB e, no menu, abra o painel Replicar dados globalmente.
Na opção Gravações de várias regiões, escolha habilitar. Isso adiciona automaticamente as regiões existentes para ler e gravar regiões.
É 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.
Depois de atualizar a lista de regiões, selecione Salvar para aplicar as alterações.
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 de várias regiões no seu aplicativo, defina ApplicationRegion
como a região na qual 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 de várias regiões no seu aplicativo, chame .multipleWriteRegionsEnabled(true)
e .preferredRegions(preferredRegions)
no construtor de clientes, em que preferredRegions
é uma List
das regiões para as quais os dados são replicados por ordem de preferência, tendo idealmente as regiões com a menor distância/melhor latência em primeiro lugar:
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 usou 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
como a List
das regiões para as quais os dados são replicados por ordem de preferência — idealmente as regiões com a menor distância/melhor latência em primeiro lugar:
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 do Node.js, do JavaScript e do TypeScript
Para habilitar gravações de várias regiões em seu aplicativo, defina connectionPolicy.UseMultipleWriteLocations
como true
. Além disso, defina connectionPolicy.PreferredLocations
como as regiões para as quais os dados são replicados por ordem de preferência — idealmente as regiões com a menor distância/melhor latência em primeiro lugar:
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 as connection_policy.PreferredLocations
como as regiões para as quais os dados são replicados por ordem de preferência — idealmente as regiões com a menor distância/melhor latência em primeiro lugar.
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)