Dela via


Konfigurera skrivningar i flera regioner i program som använder Azure Cosmos DB

GÄLLER FÖR: NoSQL

I skrivscenarier med flera regioner kan du få en prestandaförmån genom att bara skriva till regionen nära programinstansen. Azure Cosmos DB hanterar replikeringen åt dig i bakgrunden.

När du har aktiverat ditt konto för flera skrivregioner måste du göra två ändringar i programmet till ConnectionPolicy. Inom ConnectionPolicy anger du UseMultipleWriteLocations till true och skickar namnet på den region där programmet distribueras till ApplicationRegion. Den här åtgärden fyller egenskapen PreferredLocations baserat på geografisk närhet från den angivna platsen. Om en ny region senare läggs till i kontot behöver programmet inte uppdateras eller distribueras om. Den identifierar automatiskt den närmare regionen och autofokuserar på den om en regional händelse inträffar.

Anteckning

Azure Cosmos DB-konton som ursprungligen konfigurerats med en enda skrivregion kan konfigureras till flera skrivregioner med noll nedtid. Mer information finns i Konfigurera flera skrivregioner.

Azure Portal

Om du vill använda skrivningar i flera regioner aktiverar du ditt Azure Cosmos DB-konto för flera regioner med hjälp av Azure Portal. Ange vilka regioner programmet kan skriva till.

  1. Logga in på Azure-portalen.

  2. Gå till ditt Azure Cosmos DB-konto. Öppna fönstret Replikera data globalt på menyn.

  3. Under alternativet Skrivningar i flera regioner, välj Aktivera. De redan befintliga regionerna läggs automatiskt till som läs- och skrivregioner.

  4. Du kan lägga till fler regioner genom att välja ikonerna på kartan eller genom att välja knappen Lägg till region . Alla regioner som du lägger till har både läs- och skrivåtgärder aktiverade.

  5. När du har uppdaterat regionlistan väljer du Spara för att tillämpa ändringarna.

    Skärmbild som visar hur du aktiverar skrivningar i flera regioner med Hjälp av Azure-portalen.

.NET SDK v2

Om du vill aktivera skrivningar i flera regioner i ditt program anger du UseMultipleWriteLocations till true. SetCurrentLocation Ange också till den region där programmet distribueras och där Azure Cosmos DB replikeras:

ConnectionPolicy policy = new ConnectionPolicy
    {
        ConnectionMode = ConnectionMode.Direct,
        ConnectionProtocol = Protocol.Tcp,
        UseMultipleWriteLocations = true
    };
policy.SetCurrentLocation("West US 2");

.NET SDK v3

Om du vill aktivera skrivningar i flera regioner i ditt program anger du ApplicationRegion till den region där programmet distribueras och där Azure Cosmos DB replikeras:

CosmosClient cosmosClient = new CosmosClient(
    "<connection-string-from-portal>", 
    new CosmosClientOptions()
    {
        ApplicationRegion = Regions.WestUS2,
    });

Du kan också använda CosmosClientBuilder och WithApplicationRegion för att uppnå samma resultat:

CosmosClientBuilder cosmosClientBuilder = new CosmosClientBuilder("<connection-string-from-portal>")
            .WithApplicationRegion(Regions.WestUS2);
CosmosClient client = cosmosClientBuilder.Build();

Java V4 SDK

För att aktivera skrivningar i flera regioner i ditt program, anropar du .multipleWriteRegionsEnabled(true) och .preferredRegions(preferredRegions) i klientverktyget, där preferredRegions är en List av de regioner till vilka data replikeras, ordnade efter önskemål. Helst visas de regioner med kortast avstånd eller bästa svarstid först:

Java SDK V4 (Maven com.azure::azure-cosmos) Async 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

Java V2 SDK använder Maven com.microsoft.azure::azure-cosmosdb. Om du vill aktivera skrivningar i flera regioner i ditt program anger du policy.setUsingMultipleWriteLocations(true) och anger policy.setPreferredLocations till de List regioner som data replikeras till, ordnade efter preferens. Helst visas de regioner med kortast avstånd eller bästa svarstid först:

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();

SDK:er för Node.js, JavaScript och TypeScript

Om du vill aktivera skrivningar i flera regioner i ditt program anger du connectionPolicy.UseMultipleWriteLocations till true. Ange också connectionPolicy.PreferredLocations till de regioner som data replikeras till som är ordnade efter prioritet. Helst visas de regioner med kortast avstånd eller bästa svarstid först:

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

Om du vill aktivera skrivningar i flera regioner i ditt program anger du connection_policy.UseMultipleWriteLocations till true. Ange också de regioner som data replikeras till, ordnade efter prioritet. Helst visas de regioner med kortast avstånd eller bästa svarstid först:

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

Om du vill aktivera flera regioner i ditt program använder du PreferredRegions i ClientOptions:

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

Nästa steg