Konfigurace zápisů do více oblastí v aplikacích, které používají Azure Cosmos DB

PLATÍ PRO: NoSQL

Ve scénářích zápisu do více oblastí můžete získat výhodu výkonu zápisem pouze do oblasti blízko instance aplikace. Azure Cosmos DB zpracovává replikaci za vás na pozadí.

Po povolení účtu pro více oblastí zápisu musíte v aplikaci ConnectionPolicyprovést dvě změny v . V rámci nastavte UseMultipleWriteLocationsConnectionPolicyna true a předejte název oblasti, ve které je aplikace nasazená do ApplicationRegion. Tato akce naplní PreferredLocations vlastnost na základě geografické blízkosti z předaného umístění. Pokud se do účtu později přidá nová oblast, není nutné aplikaci aktualizovat ani znovu nasazovat. Automaticky zjistí bližší oblast a automaticky se k ní přiblíží, pokud dojde k místní události.

Poznámka

Účty Služby Azure Cosmos DB, které byly původně nakonfigurované s jednou oblastí zápisu, je možné nakonfigurovat na několik oblastí zápisu s nulovou dobou výpadku. Další informace najdete v tématu Konfigurace více oblastí zápisu.

portál Azure

Pokud chcete používat zápisy do více oblastí, povolte účet služby Azure Cosmos DB pro více oblastí pomocí Azure Portal. Určete, do kterých oblastí může aplikace zapisovat.

Pokud chcete povolit zápisy do více oblastí, postupujte následovně:

  1. Přihlaste se k webu Azure Portal.

  2. Přejděte do svého účtu služby Azure Cosmos DB a v nabídce otevřete podokno Globální replikace dat .

  3. V části Zápisy do více oblastí zvolte Povolit. Automaticky přidá existující oblasti do oblastí čtení a zápisu.

  4. Další oblasti můžete přidat tak, že vyberete ikony na mapě nebo vyberete tlačítko Přidat oblast . Všechny oblasti, které přidáte, mají povolené čtení i zápis.

  5. Po aktualizaci seznamu oblastí vyberte Uložit , aby se změny použily.

    Snímek obrazovky s povolením zápisu do více oblastí pomocí Azure Portal

Sada .NET SDK v2

Pokud chcete v aplikaci povolit zápisy do více oblastí, nastavte UseMultipleWriteLocations na true. Nastavte SetCurrentLocation také oblast, ve které se aplikace nasazuje a ve které se replikuje Azure Cosmos DB:

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

Sada .NET SDK v3

Pokud chcete ve své aplikaci povolit zápisy do více oblastí, nastavte ApplicationRegion na oblast, ve které se aplikace nasazuje a ve které se replikuje Azure Cosmos DB:

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

Volitelně můžete k dosažení stejného výsledku CosmosClientBuilder použít a WithApplicationRegion :

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

Java V4 SDK

Pokud chcete ve své aplikaci povolit zápisy do více oblastí, zavolejte .multipleWriteRegionsEnabled(true) a .preferredRegions(preferredRegions) v tvůrci klienta, kde preferredRegions je List oblast, do které se data replikují do seřazených podle preference – v ideálním případě nejdříve oblasti s nejkratší vzdáleností nebo nejlepší latencí:

Async API sady Java SDK v4 (Maven com.azure::azure-cosmos):


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

Sada Java SDK verze 2 používala Maven com.microsoft.azure::azure-cosmosdb. Pokud chcete ve své aplikaci povolit zápisy do více oblastí, nastavte policy.setUsingMultipleWriteLocations(true) a nastavte policy.setPreferredLocations na List oblasti, do kterých se data replikují seřazené podle předvoleb – v ideálním případě nejdříve oblasti s nejkratší vzdáleností nebo nejlepší latencí:

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

sady SDK Node.js, JavaScript a TypeScript

Pokud chcete v aplikaci povolit zápisy do více oblastí, nastavte connectionPolicy.UseMultipleWriteLocations na true. Nastavte connectionPolicy.PreferredLocations také oblasti, do kterých se data replikují seřazené podle preference – ideálně nejdřív oblasti s nejkratší vzdáleností nebo nejlepší latencí:

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

Pokud chcete v aplikaci povolit zápisy do více oblastí, nastavte connection_policy.UseMultipleWriteLocations na true. Nastavte connection_policy.PreferredLocations také na oblasti, do kterých se data replikují seřazené podle preference – v ideálním případě nejdříve oblasti s nejkratší vzdáleností nebo nejlepší latencí.

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)

Další kroky