Configuración de escrituras en varias regiones en las aplicaciones que usan Azure Cosmos DB
SE APLICA A: NoSQL
En escenarios de escritura en varias regiones, puede obtener una ventaja de rendimiento escribiendo solo en la región cercana a la instancia de la aplicación. Azure Cosmos DB controla la replicación automáticamente en segundo plano.
Después de habilitar la cuenta para varias regiones de escritura, debe realizar dos cambios en la aplicación en el ConnectionPolicy
. Dentro de ConnectionPolicy
, establezca UseMultipleWriteLocations
en true
y pase el nombre de la región donde la aplicación se implementa a ApplicationRegion
. Esta acción rellena la propiedad PreferredLocations
según la proximidad geográfica de la ubicación pasada. Si una nueva región se agrega más adelante a la cuenta, la aplicación no tiene que actualizarse ni volver a implementarse. Detecta automáticamente la región más cercana y los hogares automáticos en ella en caso de que se produzca un evento regional.
Nota
Las cuentas de Azure Cosmos DB configuradas inicialmente con una sola región de escritura pueden configurarse para varias regiones de escritura con cero tiempo de inactividad. Para más información, consulte, Configuración de varias regiones de escritura.
Azure portal
Para usar escrituras en varias regiones, habilite la cuenta de Azure Cosmos DB para varias regiones mediante el Azure Portal. Especifique en qué regiones puede escribir la aplicación.
Siga estos pasos para habilitar las escrituras en varias regiones:
Inicie sesión en el Portal de Azure.
Vaya a la cuenta de Azure Cosmos DB y desde el menú, abra el panel Replicar datos globalmente.
En la opción Escrituras en varias regiones, seleccione Habilitar. Agrega automáticamente las regiones existentes a las regiones de lectura y escritura.
Puede agregar más regiones seleccionando los iconos en el mapa o el botón Agregar región. Todas las regiones que agregue tendrán habilitadas las operaciones de lectura y escritura.
Después de actualizar la lista de regiones, seleccione Guardar para aplicar los cambios.
SDK de .NET, versión 2
Para habilitar las escrituras en varias regiones en la aplicación, establezca UseMultipleWriteLocations
en true
. Además, establezca SetCurrentLocation
en la región en que se va a implementar la aplicación y donde se va a replicar Azure Cosmos DB:
ConnectionPolicy policy = new ConnectionPolicy
{
ConnectionMode = ConnectionMode.Direct,
ConnectionProtocol = Protocol.Tcp,
UseMultipleWriteLocations = true
};
policy.SetCurrentLocation("West US 2");
.NET SDK v3
Para habilitar escrituras en varias regiones en la aplicación, establezca ApplicationRegion
en la región en la que se va a implementar la aplicación y donde se va a replicar Azure Cosmos DB:
CosmosClient cosmosClient = new CosmosClient(
"<connection-string-from-portal>",
new CosmosClientOptions()
{
ApplicationRegion = Regions.WestUS2,
});
También puede usar CosmosClientBuilder
y WithApplicationRegion
para lograr el mismo resultado:
CosmosClientBuilder cosmosClientBuilder = new CosmosClientBuilder("<connection-string-from-portal>")
.WithApplicationRegion(Regions.WestUS2);
CosmosClient client = cosmosClientBuilder.Build();
SDK de Java V4
Para habilitar las escrituras de varias regiones en la aplicación, llame a .multipleWriteRegionsEnabled(true)
y .preferredRegions(preferredRegions)
en el generador de cliente, donde preferredRegions
es una List
de las regiones en las que los datos se replican en orden de preferencia. Lo ideal es que se ordenen las regiones con menor distancia o mejor latencia primero:
API asincrónica del SDK para 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();
Versión 2 del SDK de Java sincrónico
La versión 2 del SDK de Java usaba el Maven com.microsoft.azure::azure-cosmosdb. Para habilitar las escrituras de varias regiones en la aplicación, establezca policy.setUsingMultipleWriteLocations(true)
y establezca policy.setPreferredLocations
en la List
de las regiones en las que los datos se replican en orden de preferencia. Lo ideal es que se ordenen las regiones con menor distancia o mejor latencia primero:
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 de Node.js, JavaScript y TypeScript
Para habilitar las escrituras en varias regiones en la aplicación, establezca connectionPolicy.UseMultipleWriteLocations
en true
. Además, establezca connectionPolicy.PreferredLocations
en las regiones en las que los datos se replican en orden de preferencia, lo ideal es que las regiones con menor distancia o mejor latencia se ordenen primero:
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 de Python
Para habilitar las escrituras en varias regiones en la aplicación, establezca connection_policy.UseMultipleWriteLocations
en true
. Además, establezca connection_policy.PreferredLocations
en las regiones en las que los datos se replican en orden de preferencia, lo ideal es que las regiones con menor distancia o mejor latencia se ordenen primero.
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)