Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Neste artigo, mostramos como usar o portal do Azure para configurar a distribuição global do Azure Cosmos DB e, em seguida, conectar-se usando a API para NoSQL.
Este artigo abrange as seguintes tarefas:
- Configurar a distribuição global com o portal do Azure
- Configurar a distribuição global usando a API para NoSQLs
Adicionar regiões de base de dados globais com o Portal do Azure
O Azure Cosmos DB está disponível em todas as regiões do Azure em todo o mundo. Depois de selecionar o nível de consistência predefinido para a sua conta de base de dados, pode associar uma ou mais regiões (dependendo da sua escolha do nível de consistência predefinido e das suas necessidades de distribuição global).
No Portal do Azure, na barra esquerda, clique em Azure Cosmos DB.
Na página Azure Cosmos DB, selecione a conta de base de dados a modificar.
Na página da conta, clique em Replicar dados globalmente no menu.
Na página Replicar dados globalmente, selecione as regiões a adicionar ou remover, clicando em regiões do mapa e, em seguida, clique em Guardar. Existe um custo para a adição de regiões, consulte a página de preços ou o artigo Distribuir dados globalmente com o Azure Cosmos DB para obter mais informações.
Depois de adicionar uma segunda região, a opção Falha Manual é ativada na página Replicar dados globalmente no portal. Pode utilizar esta opção para testar o processo de failover ou alterar a região de escrita principal. Depois de adicionar uma terceira região, a opção Prioridades da Ativação Pós-falha fica ativada na mesma página, para que possa alterar a ordem de ativação pós-falha para as leituras.
Selecionar regiões globais de bases de dados
Existem dois cenários comuns para configurar duas ou mais regiões:
- Proporcionar acesso de latência baixa aos dados pelos utilizadores finais, independentemente da respetiva localização em todo o mundo
- Adicionar resiliência regional para continuidade empresarial e recuperação após desastre (BCDR)
Para proporcionar latência baixa aos utilizadores finais, recomenda-se que implemente a aplicação e o Azure Cosmos DB nas regiões que correspondem àquelas onde os utilizadores da aplicação estão localizados.
Para BCDR, é recomendável adicionar regiões com base nos pares de regiões descritos no artigo Replicação entre regiões no Azure: continuidade de negócios e recuperação de desastres.
Conectando-se a uma região preferencial usando a API para NoSQL
Para tirar o máximo partido da distribuição global, as aplicações cliente podem especificar a lista de preferência ordenada de regiões a utilizar nas operações de documentos. Com base na configuração da conta do Azure Cosmos DB, disponibilidade regional atual e lista de preferência especificada, o SDK SQL selecionará o ponto final ideal para efetuar operações de escrita e leitura.
Esta lista de preferência é especificada ao inicializar uma ligação com os SDKs SQL. Os SDKs aceitam um parâmetro PreferredLocations opcional que é uma lista ordenada de regiões do Azure.
O SDK enviará automaticamente todas as escritas para a região de escrita atual. Todas as leituras de dados são enviadas para a primeira região disponível na lista de localizações preferenciais. Se a solicitação falhar, o cliente passará para o próximo da lista na região seguinte.
O SDK só tentará ler a partir das regiões especificadas nos locais preferidos. Assim, por exemplo, se a conta do Azure Cosmos DB estiver disponível em quatro regiões, mas o cliente especificar apenas duas regiões de leitura (não gravação) dentro do PreferredLocations, nenhuma leitura será servida fora da região de leitura não especificada em PreferredLocations. Se as regiões de leitura especificadas na PreferredLocations lista não estiverem disponíveis, as leituras serão servidas fora da região de gravação.
O aplicativo pode verificar o ponto de extremidade de gravação atual e o ponto de extremidade de leitura escolhidos pelo SDK verificando duas propriedades WriteEndpoint e ReadEndpoint, disponíveis no SDK versão 1.8 e superior. Se a PreferredLocations propriedade não estiver definida, todas as solicitações serão atendidas a partir da região de gravação atual.
Se você não especificar os locais preferenciais, mas usar o setCurrentLocation método, o SDK preencherá automaticamente os locais preferidos com base na região atual em que o cliente está sendo executado. O SDK ordena as regiões com base na proximidade de uma região com a região atual.
SDK para .NET
O SDK pode ser utilizado sem quaisquer alterações de código. Neste caso, o SDK direciona automaticamente as leituras e as escritas para a região de escrita atual.
Na versão 1.8 e posterior do SDK .NET, o parâmetro ConnectionPolicy do construtor DocumentClient tem uma propriedade denominada Microsoft.Azure.Documents.ConnectionPolicy.PreferredLocations. Esta propriedade é do tipo de Coleção <string> e deve conter uma lista de nomes de região. Os valores de cadeia de caracteres são formatados de acordo com a coluna de nome da região na página Regiões do Azure, sem espaços antes ou depois do primeiro e do último caractere, respectivamente.
Os pontos finais de escrita e leitura atuais estão disponíveis em DocumentClient.WriteEndpoint e DocumentClient.ReadEndpoint, respetivamente.
Observação
As URLs dos pontos de extremidade não devem ser consideradas como constantes de longa duração. O serviço pode atualizá-los em qualquer momento. O SDK processa esta alteração automaticamente.
Se você estiver usando o SDK do .NET V2, use a PreferredLocations propriedade para definir a região preferida.
// Getting endpoints from application settings or other configuration location
Uri accountEndPoint = new Uri(Properties.Settings.Default.GlobalDatabaseUri);
ConnectionPolicy connectionPolicy = new ConnectionPolicy();
//Setting read region selection preference
connectionPolicy.PreferredLocations.Add(LocationNames.WestUS); // first preference
connectionPolicy.PreferredLocations.Add(LocationNames.EastUS); // second preference
connectionPolicy.PreferredLocations.Add(LocationNames.NorthEurope); // third preference
// initialize connection
DocumentClient docClient = new DocumentClient(
accountEndPoint,
credential,
connectionPolicy);
// connect to DocDB
await docClient.OpenAsync().ConfigureAwait(false);
Como alternativa, você pode usar a SetCurrentLocation propriedade e deixar o SDK escolher o local preferido com base na proximidade.
// Getting endpoints from application settings or other configuration location
Uri accountEndPoint = new Uri(Properties.Settings.Default.GlobalDatabaseUri);
ConnectionPolicy connectionPolicy = new ConnectionPolicy();
connectionPolicy.SetCurrentLocation("West US 2"); /
// initialize connection
DocumentClient docClient = new DocumentClient(
accountEndPoint,
credential,
connectionPolicy);
// connect to DocDB
await docClient.OpenAsync().ConfigureAwait(false);
Node.js/JavaScript
Observação
As URLs dos pontos de extremidade não devem ser consideradas como constantes de longa duração. O serviço pode atualizá-los em qualquer momento. O SDK processa esta alteração automaticamente.
Abaixo está um exemplo de código para Node.js/JavaScript.
// Setting read region selection preference, in the following order -
// 1 - West US
// 2 - East US
// 3 - North Europe
const preferredLocations = ['West US', 'East US', 'North Europe'];
// initialize the connection
const client = new CosmosClient({ endpoint, aadCredentials: tokenCredential, connectionPolicy: { preferredLocations } });
Python SDK
O código a seguir mostra como definir locais preferenciais usando o Python SDK:
connectionPolicy = documents.ConnectionPolicy()
connectionPolicy.PreferredLocations = ['West US', 'East US', 'North Europe']
client = cosmos_client.CosmosClient(ENDPOINT, credential=token_credential, connectionPolicy)
Java V4 SDK
O código a seguir mostra como definir locais preferenciais usando o Java SDK:
ArrayList<String> preferredRegions = new ArrayList<String>();
preferredRegions.add("East US");
preferredRegions.add( "West US");
preferredRegions.add("Canada Central");
CosmosAsyncClient client =
new CosmosClientBuilder()
.endpoint(HOST)
.credential(tokenCredential)
.preferredRegions(preferredRegions)
.contentResponseOnWriteEnabled(true)
.buildAsyncClient();
Conector Spark 3
Você pode definir a lista regional preferida usando a spark.cosmos.preferredRegionsListconfiguração, por exemplo:
val sparkConnectorConfig = Map(
"spark.cosmos.accountEndpoint" -> cosmosEndpoint,
"spark.cosmos.preferredRegionsList" -> "[West US, East US, North Europe]"
// other settings
)
Kit de Desenvolvimento de Software Go
Para habilitar a multi-região em seu aplicativo, use PreferredRegions em ClientOptions:
client, err := azcosmos.NewClient(endpoint, token, &azcosmos.ClientOptions{
PreferredRegions: []string{"West US", "Central US"},
})
REST
Depois que uma conta de banco de dados tiver sido disponibilizada em várias regiões, os clientes poderão consultar sua disponibilidade executando uma solicitação GET nesse URI https://{databaseaccount}.documents.azure.com/
O serviço retorna uma lista de regiões e os URIs de ponto de extremidade correspondentes do Azure Cosmos DB para as réplicas. A região de gravação atual é indicada na resposta. Em seguida, o cliente pode selecionar o ponto final adequado para obter todos os pedidos da API REST da seguinte forma.
Resposta de exemplo
{
"_dbs": "//dbs/",
"media": "//media/",
"writableLocations": [
{
"Name": "West US",
"DatabaseAccountEndpoint": "https://globaldbexample-westus.documents.azure.com:443/"
}
],
"readableLocations": [
{
"Name": "East US",
"DatabaseAccountEndpoint": "https://globaldbexample-eastus.documents.azure.com:443/"
}
],
"MaxMediaStorageUsageInMB": 2048,
"MediaStorageUsageInMB": 0,
"ConsistencyPolicy": {
"defaultConsistencyLevel": "Session",
"maxStalenessPrefix": 100,
"maxIntervalInSeconds": 5
},
"addresses": "//addresses/",
"id": "globaldbexample",
"_rid": "globaldbexample.documents.azure.com",
"_self": "",
"_ts": 0,
"_etag": null
}
- Todas as solicitações PUT, POST e DELETE devem ir para o URI de escrita indicado
- Todos os GETs e outras solicitações somente de leitura (por exemplo, consultas) podem ir para qualquer endpoint à escolha do cliente
Os pedidos de escrita para regiões só de leitura falharão com o código de erro HTTP 403 ("Proibido").
Se a região de gravação mudar após a fase de descoberta inicial do cliente, as gravações subsequentes na região de gravação anterior falharão com o código de erro HTTP 403 ("Proibido"). Em seguida, o cliente deve obter novamente a lista de regiões para obter a região de escrita atualizada.
Já está, isto conclui este tutorial. Pode saber como gerir a consistência da sua conta replicada globalmente ao ler Níveis de consistência no Azure Cosmos DB. Para obter mais informações sobre como funciona a replicação de base de dados global no Azure Cosmos DB, veja Distribuir dados globalmente com o Azure Cosmos DB.
Próximos passos
Neste tutorial, fez o seguinte:
- Configurar a distribuição global com o portal do Azure
- Configurar a distribuição global usando a API para NoSQLs
Agora, pode avançar para o próximo tutorial para saber como desenvolver localmente com o emulador local do Azure Cosmos DB.
Tentando fazer o planejamento de capacidade para uma migração para o Azure Cosmos DB? Você pode usar informações sobre seu cluster de banco de dados existente para planejamento de capacidade.
- Se tudo o que você sabe é o número de vcores e servidores em seu cluster de banco de dados existente, leia sobre como estimar unidades de solicitação usando vCores ou vCPUs
- Se você souber as taxas de solicitação típicas para sua carga de trabalho de banco de dados atual, leia sobre como estimar unidades de solicitação usando o planejador de capacidade do Azure Cosmos DB