Sdílet prostřednictvím


Konfigurace zápisů do více oblastí v aplikacích, které používají Službu 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 vaší 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 části ConnectionPolicy, nastavena UseMultipleWriteLocations na true a předejte název oblasti, do ApplicationRegionkteré je aplikace nasazena . Tato akce naplní PreferredLocations vlastnost na základě geografické blízkosti z místa předaného. Pokud se do účtu přidá nová oblast, aplikace se nemusí aktualizovat ani znovu nasadit. Automaticky rozpozná blíže oblast a automaticky se k ní přiblíží, pokud dojde k regionální události.

Poznámka:

Účty Služby Azure Cosmos DB, které jsou původně nakonfigurované s jednou oblastí zápisu, je možné nakonfigurovat na více oblastí zápisu s nulovým časovým limitem. Další informace najdete v tématu Konfigurace oblastí s více zápisy.

portál Azure

Pokud chcete použít zápisy do více oblastí, povolte účet služby Azure Cosmos DB pro více oblastí pomocí webu Azure Portal. Určete, do kterých oblastí může vaš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ápisy.

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

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

Sada .NET SDK v2

Pokud chcete ve své aplikaci povolit zápisy do více oblastí, nastavte UseMultipleWriteLocations na truehodnotu . Nastavte SetCurrentLocation také oblast, ve které se aplikace nasazuje a kde se replikuje služba 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 vaší aplikaci povolit zápisy do více oblastí, nastavte ApplicationRegion ji na oblast, ve které se aplikace nasazuje a kde se replikuje azure Cosmos DB:

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

Volitelně můžete použít CosmosClientBuilder a WithApplicationRegion dosáhnout stejného výsledku:

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

Java V4 SDK

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

Asynchronní rozhraní 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 V2 používala maven com.microsoft.azure::azure-cosmosdb. Pokud chcete ve vaší aplikaci povolit zápisy do více oblastí, nastavte policy.setUsingMultipleWriteLocations(true) je a nastavte policy.setPreferredLocations na List oblasti, do kterých se data replikují podle předvoleb – ideálně oblasti s nejkratší vzdáleností a 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 pro Node.js, JavaScript a TypeScript

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

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 ve své aplikaci povolit zápisy do více oblastí, nastavte connection_policy.UseMultipleWriteLocations na truehodnotu . Nastavte connection_policy.PreferredLocations také oblasti, do kterých se data replikují do seřazených podle předvoleb – ideálně 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