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
. ConnectionPolicy
No , 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:
Inicie sessão no portal do Azure.
Navegue para a sua conta do Azure Cosmos DB e, a partir do menu, abra o painel Replicar dados globalmente .
Na opção Escritas em várias regiões , selecione ativar. Adiciona automaticamente as regiões existentes às regiões de leitura e escrita.
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.
Depois de atualizar a lista de regiões, selecione Guardar para aplicar as alterações.
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)