Megosztás a következőn keresztül:


Többrégiós írások konfigurálása az Azure Cosmos DB-t használó alkalmazásokban

A KÖVETKEZŐKRE VONATKOZIK: NoSQL

Több régió írási forgatókönyvében teljesítménybeli előnyt érhet el, ha csak az alkalmazáspéldányhoz közeli régióba ír. Az Azure Cosmos DB kezeli a replikációt a színfalak mögött.

Miután engedélyezte a fiókját több írási régióban, két módosítást kell végrehajtania az alkalmazásban a ConnectionPolicy-ben. A értéken ConnectionPolicybelül állítsa be a értéket UseMultipleWriteLocationstrue , és adja meg annak a régiónak a nevét, amelyben az alkalmazás üzembe van helyezve ApplicationRegion. Ez a művelet a PreferredLocations megadott hely földrajzi közelsége alapján tölti fel a tulajdonságot. Ha később új régiót adnak hozzá a fiókhoz, az alkalmazást nem kell frissíteni vagy újra üzembe helyezni. Automatikusan észleli a közelebbi régiót és az automatikus otthonokat, ha regionális esemény történik.

Megjegyzés

Az eredetileg egyetlen írási régióval konfigurált Azure Cosmos DB-fiókok több írási régióra is konfigurálhatók nulla leállási idővel. További információ: Több írási régió konfigurálása.

Azure Portal

Többrégiós írási műveletek használatához engedélyezze az Azure Cosmos DB-fiókot több régióhoz a Azure Portal használatával. Adja meg, hogy az alkalmazás mely régiókba írhat.

A többrégiós írás engedélyezéséhez kövesse az alábbi lépéseket:

  1. Jelentkezzen be az Azure Portalba.

  2. Lépjen az Azure Cosmos DB-fiókjához, és a menüből nyissa meg az Adatok replikálása globálisan panelt .

  3. A Többrégiós írások beállításnál válassza az Engedélyezés lehetőséget. Automatikusan hozzáadja a meglévő régiókat az olvasási és írási régiókhoz.

  4. További régiók hozzáadásához kattintson a térkép ikonjaira, vagy válassza a Régió hozzáadása gombot. Minden hozzáadott régióban engedélyezve van az olvasás és az írás.

  5. A régiólista frissítése után válassza a Mentés lehetőséget a módosítások alkalmazásához.

    Képernyőkép a többrégiós írás engedélyezéséről Azure Portal használatával.

.NET SDK v2

Ha engedélyezni szeretné a többrégiós írásokat az alkalmazásban, állítsa a következőre UseMultipleWriteLocations : true. Állítsa be SetCurrentLocation azt a régiót is, amelyben az alkalmazás üzembe van helyezve, és ahol az Azure Cosmos DB replikálva van:

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

.NET SDK v3

Ha engedélyezni szeretné a többrégiós írásokat az alkalmazásban, állítsa be ApplicationRegion azt a régiót, amelyben az alkalmazás üzembe van helyezve, és ahol az Azure Cosmos DB replikálva van:

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

A és WithApplicationRegion a használatával CosmosClientBuilder is elérheti ugyanezt az eredményt:

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

Java V4 SDK

Ha engedélyezni szeretné a többrégiós írásokat az alkalmazásban, hívja meg a és .multipleWriteRegionsEnabled(true).preferredRegions(preferredRegions) az ügyfélszerkesztőben, ahol az a régió, ahol preferredRegionsList az adatok sorrendbe vannak replikálva– ideális esetben a legrövidebb távolsággal/legjobb késéssel rendelkező régiókba:

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

A Java V2 SDK a Maven com.microsoft.azure::azure-cosmosdb nevet használta. Ha engedélyezni szeretné a többrégiós írásokat az alkalmazásban, állítsa be policy.setUsingMultipleWriteLocations(true) és állítsa be policy.setPreferredLocations azokat a régiókat, amelyekbe az List adatok a beállítások szerint lesznek replikálva – ideális esetben a legrövidebb távolsággal/legjobb késéssel rendelkező régiókba:

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 és TypeScript SDK-k

Ha engedélyezni szeretné a többrégiós írásokat az alkalmazásban, állítsa a következőre connectionPolicy.UseMultipleWriteLocations : true. Állítsa be connectionPolicy.PreferredLocations azokat a régiókat is, amelyekbe az adatokat a rendszer sorrendbe rendezi – ideális esetben a legrövidebb távolsággal/legjobb késéssel rendelkező régiókat:

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

Ha engedélyezni szeretné a többrégiós írásokat az alkalmazásban, állítsa a következőre connection_policy.UseMultipleWriteLocations : true. Emellett állítsa be connection_policy.PreferredLocations azokat a régiókat, amelyekbe az adatok sorrendbe kerülnek – ideális esetben a legrövidebb távolsággal/legjobb késéssel rendelkező régiókba.

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)

Következő lépések