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:

  1. Melden Sie sich beim Azure-Portalan.

  2. Navigieren Sie zu Ihrem Azure Cosmos DB-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 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.

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

    Screenshot zum Aktivieren von Schreibvorgängen in mehreren Regionen über das 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 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)

Nächste Schritte