Konfigurieren von Schreibvorgängen in mehreren Regionen in Ihren Anwendungen, die Azure Cosmos DB verwenden

GILT FÜR: SQL-API

Nachdem ein Konto mit mehreren aktivierten Schreibregionen erstellt wurde, müssen Sie in Ihrer Anwendung zwei Änderungen an der ConnectionPolicy für den Cosmos-Client vornehmen, um die Funktionen für Schreibvorgänge in mehreren Regionen in Azure Cosmos DB zu aktivieren. Legen Sie in der ConnectionPolicy das „UseMultipleWriteLocations“-Element auf „true“ fest, und übergeben Sie den Namen der Region, in der die Anwendung bereitgestellt wird, an „ApplicationRegion“. Dadurch wird die PreferredLocations-Eigenschaft basierend auf der geografischen Nähe zum eingegebenen Standort aufgefüllt. Wenn dem Konto später eine neue Region hinzugefügt wird, muss die Anwendung nicht aktualisiert oder neu bereitgestellt werden. Sie erkennt automatisch die nähere Region und greift automatisch darauf zurück, wenn ein regionales Ereignis eintritt.

Hinweis

Cosmos-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

Führen Sie die folgenden Schritte aus, um Schreibvorgänge in mehreren Regionen über das Azure-Portal zu aktivieren:

  1. Melden Sie sich beim Azure-Portalan.

  2. Navigieren Sie zu Ihrem Azure Cosmos-Konto, und öffnen Sie über das Menü den Bereich Daten global replizieren.

  3. Wählen Sie unter Schreibvorgänge in mehreren Regionen die Option Aktivieren aus. Die vorhandenen Regionen werden automatisch den Lese- und Schreibregionen hinzugefügt.

  4. Sie können zusätzliche Regionen hinzufügen, indem Sie die Symbole auf der Karte auswählen oder auf die Schaltfläche Region hinzufügen klicken. Für alle Regionen, die Sie hinzufügen, werden Lese- und Schreibvorgänge aktiviert.

  5. Nachdem Sie die Liste der Regionen aktualisiert haben, wählen Sie Speichern aus, um die Änderungen zu übernehmen.

    Screenshot: Aktivieren von Schreibvorgängen in mehreren Regionen im Azure-Portal

.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 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 in Ihrer Anwendung Schreibvorgänge in mehreren Regionen zu aktivieren, rufen Sie .multipleWriteRegionsEnabled(true) und .preferredRegions(preferredRegions) im Client-Generator auf. Dabei ist preferredRegions eine List, die ein Element enthält. Dies ist die Region, in der die Anwendung bereitgestellt und Cosmos DB repliziert wird:

Java SDK V4 (Maven com.azure::azure-cosmos) Asynchrone 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 in Ihrer Anwendung Schreibvorgänge in mehreren Regionen zu aktivieren, legen Sie policy.setUsingMultipleWriteLocations(true) fest. Legen Sie außerdem policy.setPreferredLocations auf die Region fest, in der die Anwendung bereitgestellt und Cosmos DB repliziert wird:

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 SDKs

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 Region fest, in der die Anwendung bereitgestellt wird und wo Cosmos DB repliziert wird:

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 Region fest, in der die Anwendung bereitgestellt wird und wo Cosmos DB repliziert wird.

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)

Nächste Schritte

Lesen Sie die folgenden Artikel: