Configurer les fonctionnalités multirégions dans les applications qui utilisent Azure Cosmos DB
S’APPLIQUE À : NoSQL
Dans les scénarios d’écriture dans plusieurs régions, vous pouvez obtenir un avantage en matière de performances en écrivant uniquement dans la région proche de votre instance d’application. Azure Cosmos DB gère la réplication pour vous en arrière-plan.
Après avoir activé votre compte pour plusieurs régions d’écriture, vous devez apporter deux modifications à votre application dans ConnectionPolicy
. Dans ConnectionPolicy
, définissez UseMultipleWriteLocations
sur true
et passez le nom de la région où l’application est déployée à ApplicationRegion
. Cette action remplira la propriété PreferredLocations
en fonction de la géo-proximité à partir de l’emplacement transmis. Si une nouvelle région est ajoutée ultérieurement au compte, l’application n’a pas besoin d’être mise à jour ou redéployée. Elle détecte automatiquement la région plus proche et passe automatiquement dessus en cas d’événement régional.
Notes
Les comptes Azure Cosmos DB initialement configurés avec une seule région d’écriture peuvent être configurés pour plusieurs régions d’écriture avec un temps de non-disponibilité égal à zéro. Pour en savoir plus, consultez Configurer plusieurs régions d’écriture.
Portail Azure
Pour utiliser les écritures multirégions, activez votre compte Azure Cosmos DB pour plusieurs régions à l’aide du Portail Azure. Spécifiez les régions dans lesquelles votre application peut écrire.
Pour activer les écritures multirégions, procédez comme suit :
Connectez-vous au portail Azure.
Accédez à votre compte Azure Cosmos DB et, dans le menu, ouvrez le volet Répliquer les données globalement.
Sous l’option Écritures multirégions, choisissez Activer. Cela ajoute automatiquement les régions existantes aux régions en lecture et en écriture.
Vous pouvez ajouter des régions supplémentaires en sélectionnant les icônes sur la carte ou en sélectionnant le bouton Ajouter une région. Toutes les régions que vous ajoutez sont disponibles en lecture et en écriture.
Après avoir mis à jour la liste des régions, sélectionnez Enregistrer pour appliquer les modifications.
SDK .NET v2
Pour activer les écritures multirégions dans votre application, définissez UseMultipleWriteLocations
sur true
. Définissez également SetCurrentLocation
en fonction de la région sur laquelle l’application est déployée et où Azure Cosmos DB est répliquée :
ConnectionPolicy policy = new ConnectionPolicy
{
ConnectionMode = ConnectionMode.Direct,
ConnectionProtocol = Protocol.Tcp,
UseMultipleWriteLocations = true
};
policy.SetCurrentLocation("West US 2");
SDK .NET v3
Pour activer les écritures multirégions dans votre application, définissez ApplicationRegion
en fonction de la région sur laquelle l’application est déployée et où le service Azure Cosmos DB est répliqué :
CosmosClient cosmosClient = new CosmosClient(
"<connection-string-from-portal>",
new CosmosClientOptions()
{
ApplicationRegion = Regions.WestUS2,
});
Si vous le souhaitez, vous pouvez utiliser CosmosClientBuilder
et WithApplicationRegion
pour obtenir le même résultat :
CosmosClientBuilder cosmosClientBuilder = new CosmosClientBuilder("<connection-string-from-portal>")
.WithApplicationRegion(Regions.WestUS2);
CosmosClient client = cosmosClientBuilder.Build();
SDK Java V4
Pour activer les écritures multirégions à votre application, appelez .multipleWriteRegionsEnabled(true)
et .preferredRegions(preferredRegions)
dans le générateur de client, où preferredRegions
est un List
des régions dans lesquelles les données sont répliquées de préférence, idéalement en premier les régions avec la distance la plus courte/la meilleure latence :
API Async du Kit de développement logiciel (SDK) 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();
Kit de développement logiciel (SDK) Async Java v2
Le kit de développement logiciel (SDK) Java v2 utilisait l’outil Maven com.microsoft.azure::azure-cosmosdb. Pour activer les écritures multi-régions à votre application, définissez policy.setUsingMultipleWriteLocations(true)
et policy.setPreferredLocations
au List
des régions dans lesquelles les données sont répliquées de préférence, idéalement en premier les régions avec la distance la plus courte/la meilleure latence :
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();
Kits SDK Node.js, JavaScript et TypeScript
Pour activer les écritures multirégions dans votre application, définissez connectionPolicy.UseMultipleWriteLocations
sur true
. En outre, définissez connectionPolicy.PreferredLocations
vers les régions dans lesquelles les données sont répliquées de préférence, idéalement en premier les régions avec la distance la plus courte/la meilleure latence :
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
});
Kit de développement logiciel (SDK) Python
Pour activer les écritures multirégions dans votre application, définissez connection_policy.UseMultipleWriteLocations
sur true
. En outre, définissez connection_policy.PreferredLocations
vers les régions dans lesquelles les données sont répliquées de préférence, idéalement en premier les régions avec la distance la plus courte/la meilleure latence.
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)