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

GÄLLER FÖR: NoSQL

I skrivscenarier för 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. I anger ConnectionPolicyUseMultipleWriteLocationstrue och skickar du namnet på den region där programmet distribueras till ApplicationRegion. Den här åtgärden fyller i PreferredLocations egenskapen baserat på geo-närhet från den plats som skickades. 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 den automatiska hemmen 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 regioner med flera skrivning.

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 som programmet kan skriva till.

Använd följande steg för att aktivera skrivningar i flera regioner:

  1. Logga in på Azure-portalen.

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

  3. Under alternativet Skrivningar i flera regioner väljer du Aktivera. De befintliga regionerna läggs automatiskt till i 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 för att aktivera skrivningar i flera regioner med hjälp av Azure Portal.

.NET SDK v2

Om du vill aktivera skrivningar i flera regioner i ditt program anger du UseMultipleWriteLocations till true. Ange SetCurrentLocation även till den region där programmet distribueras och var 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

Om du vill aktivera skrivningar i flera regioner i ditt program anropar .multipleWriteRegionsEnabled(true) du och .preferredRegions(preferredRegions) i klientverktyget, där är en List av de regioner som preferredRegions data replikeras till sorterade efter önskemål – helst de regioner med kortast avstånd/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ände Maven com.microsoft.azure::azure-cosmosdb. Om du vill aktivera skrivningar i flera regioner i ditt program ställer du in policy.setUsingMultipleWriteLocations(true) och ställer in policy.setPreferredLocations på de List regioner som data replikeras till sorterade efter önskemål – helst de regioner med kortast avstånd/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. connectionPolicy.PreferredLocations Ange också till de regioner som data replikeras till sorterade efter önskemål – helst de regioner med kortast avstånd/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. connection_policy.PreferredLocations Ange också till de regioner som data replikeras till ordnade efter önskemål – helst de regioner med kortast avstånd/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)

Nästa steg