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:
Inicie sessão 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 em várias regiões, escolha ativar. Ele adiciona automaticamente as regiões existentes para ler e gravar regiões.
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.
Depois de atualizar a lista de regiões, selecione Salvar para aplicar as alterações.
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)