Freigeben über


Konfigurieren von Multi-Region-Schreibvorgängen in Anwendungen, die Azure Cosmos DB verwenden

GILT FÜR: NoSQL

In Szenarien mit mehreren Schreiblokationen können Sie einen Performancevorteil erzielen, indem Sie nur in die Region schreiben, die sich in der Nähe Ihrer Anwendungsinstanz befindet. 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 anfänglich mit einem einzelnen Schreibbereich konfiguriert wurden, können für mehrere Schreibbereiche mit Null-Down-Zeit konfiguriert werden. Weitere Informationen finden Sie unter Konfigurieren mehrerer Schreibbereiche.

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.

  1. Melden Sie sich beim Azure-Portal an.

  2. Navigieren Sie zu Ihrem Azure Cosmos DB-Konto. Öffnen Sie im 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, der zeigt, wie Multi-Region-Schreibvorgänge mithilfe des Azure-Portals aktiviert werden.

.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. Im Idealfall werden die Regionen mit kürzester Entfernung oder bester Latenz zuerst aufgeführt:

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 verwendet maven com.microsoft.azure::azure-cosmosdb. Um Schreibvorgänge in mehreren Regionen in Ihrer Anwendung zu aktivieren, legen Sie policy.setUsingMultipleWriteLocations(true) und policy.setPreferredLocations auf die List der Regionen fest, in die die Daten in der angegebenen Reihenfolge repliziert werden. Im Idealfall werden die Regionen mit kürzester Entfernung oder bester Latenz zuerst aufgeführt:

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 connectionPolicy.PreferredLocations außerdem fest, dass die Daten in den Regionen repliziert werden, die nach Präferenz sortiert werden. Im Idealfall werden die Regionen mit kürzester Entfernung oder bester Latenz zuerst aufgeführt:

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 connection_policy.PreferredLocations außerdem fest, dass die Daten in den Regionen repliziert werden, die nach Präferenz sortiert werden. Im Idealfall werden die Regionen mit kürzester Entfernung oder bester Latenz zuerst aufgeführt:

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)

Go Software Development Kit (SDK)

Um mehrere Regionen in Ihrer Anwendung zu aktivieren, verwenden Sie PreferredRegionsin ClientOptions:

client, err := azcosmos.NewClient(endpoint, token, &azcosmos.ClientOptions{
	PreferredRegions: []string{"West US", "Central US"},
})

Nächste Schritte