Konfigurieren von Schreibvorgängen in mehreren Regionen in Ihren Anwendungen, die Azure Cosmos DB verwenden
GILT FÜR: NoSQL
In Schreibszenarien für mehrere Regionen können Sie einen Leistungsvorteil erzielen, indem Sie nur in die Region in der Nähe Ihrer Anwendungsinstanz schreiben. Azure Cosmos DB übernimmt für Sie die Replikation im Hintergrund.
Nachdem Sie Ihr Konto für mehrere Schreibregionen aktiviert haben, müssen Sie in Ihrer Anwendung zwei Änderungen an der ConnectionPolicy
vornehmen. Innerhalb der ConnectionPolicy
setzen Sie UseMultipleWriteLocations
auf true
und übergeben den Namen der Region, in der die Anwendung bereitgestellt wird, an ApplicationRegion
. Durch diese Aktion wird die PreferredLocations
-Eigenschaft basierend auf der geografischen Nähe zum übergebenen Standort aufgefüllt. Wenn dem Konto später eine neue Region hinzugefügt wird, muss die Anwendung nicht aktualisiert oder erneut bereitgestellt werden. Es erkennt automatisch die nähere Region und richtet sich automatisch darauf aus, falls ein regionales Ereignis eintritt.
Hinweis
Azure Cosmos DB-Konten, die ursprünglich mit einer einzelnen Schreibregion konfiguriert wurden, können ohne Ausfallzeiten für die Verwendung mehrerer Schreibregionen konfiguriert werden. Weitere Informationen finden unter Konfigurieren mehrerer Schreibregionen.
Azure-Portal
Um Schreibvorgänge für mehrere Regionen zu verwenden, aktivieren Sie Ihr Azure Cosmos DB-Konto für mehrere Regionen, indem Sie das Azure-Portal verwenden. Geben Sie an, in welche Regionen Ihre Anwendung schreiben kann.
Führen Sie die folgenden Schritte aus, um Schreibvorgänge für mehrere Regionen zu aktivieren:
Melden Sie sich beim Azure-Portalan.
Navigieren Sie zu Ihrem Azure Cosmos DB-Konto, und öffnen Sie über das Menü den Bereich Daten global replizieren.
Wählen Sie unter Schreibvorgänge in mehreren Regionen die Option Aktivieren aus. Die vorhandenen Regionen werden automatisch den Lese- und Schreibregionen hinzugefügt.
Sie können weitere Regionen hinzufügen, indem Sie die Symbole auf der Karte auswählen oder die Schaltfläche Region hinzufügen auswählen. Für alle Regionen, die Sie hinzufügen, werden sowohl Lese- als auch Schreibvorgänge aktiviert.
Nachdem Sie die Liste der Regionen aktualisiert haben, wählen Sie Speichern aus, um die Änderungen zu übernehmen.
.NET SDK v2
Um in Ihrer Anwendung Schreibvorgänge in mehreren Regionen zu aktivieren, legen Sie UseMultipleWriteLocations
auf true
fest. Legen Sie außerdem SetCurrentLocation
auf die Region fest, in der die Anwendung bereitgestellt wird und wo Azure Cosmos DB repliziert wird:
ConnectionPolicy policy = new ConnectionPolicy
{
ConnectionMode = ConnectionMode.Direct,
ConnectionProtocol = Protocol.Tcp,
UseMultipleWriteLocations = true
};
policy.SetCurrentLocation("West US 2");
.NET SDK v3
Um in Ihrer Anwendung Schreibvorgänge in mehreren Regionen zu aktivieren, legen Sie ApplicationRegion
auf die Region fest, in der die Anwendung bereitgestellt und Azure Cosmos DB repliziert wird:
CosmosClient cosmosClient = new CosmosClient(
"<connection-string-from-portal>",
new CosmosClientOptions()
{
ApplicationRegion = Regions.WestUS2,
});
Optional können Sie CosmosClientBuilder
und WithApplicationRegion
verwenden, um das gleiche Ergebnis zu erzielen:
CosmosClientBuilder cosmosClientBuilder = new CosmosClientBuilder("<connection-string-from-portal>")
.WithApplicationRegion(Regions.WestUS2);
CosmosClient client = cosmosClientBuilder.Build();
Java V4 SDK
Um Schreibvorgänge in mehreren Regionen in Ihrer Anwendung zu aktivieren, rufen Sie .multipleWriteRegionsEnabled(true)
und .preferredRegions(preferredRegions)
im Client-Generator auf, wobei preferredRegions
eine List
der Regionen ist, in denen die Daten nach Präferenz geordnet repliziert werden – idealerweise zuerst die Regionen mit der kürzesten Entfernung bzw. der besten Latenz:
Asynchrone Java SDK V4 (Maven com.azure::azure-cosmos-API:
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
Das Java V2 SDK verwendete Maven com.microsoft.azure::azure-cosmosdb. Um Schreibvorgänge in mehreren Regionen in Ihrer Anwendung zu aktivieren, legen Sie policy.setUsingMultipleWriteLocations(true)
fest und legen Sie policy.setPreferredLocations
auf die List
der Regionen fest, in denen die Daten nach Präferenz geordnet repliziert werden – idealerweise zuerst die Regionen mit der kürzesten Entfernung bzw. der besten Latenz:
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();
Node.js, JavaScript und TypeScript SDK
Um in Ihrer Anwendung Schreibvorgänge in mehreren Regionen zu aktivieren, legen Sie connectionPolicy.UseMultipleWriteLocations
auf true
fest. Legen Sie außerdem connectionPolicy.PreferredLocations
auf die Regionen fest, in denen die Daten nach Präferenz repliziert werden – idealerweise zuerst die Regionen mit der kürzesten Entfernung bzw. der besten Latenz:
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
Um in Ihrer Anwendung Schreibvorgänge in mehreren Regionen zu aktivieren, legen Sie connection_policy.UseMultipleWriteLocations
auf true
fest. Legen Sie außerdem connection_policy.PreferredLocations
auf die Regionen fest, in denen die Daten nach Präferenz repliziert werden – idealerweise zuerst die Regionen mit der kürzesten Entfernung bzw. der besten Latenz.
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)