Uygulamalarınızda Azure Cosmos DB kullanan çok bölgeli yazmaları yapılandırma

UYGULANANLAR: NoSQL

Birden çok bölge yazma senaryosunda, yalnızca uygulama örneğinize yakın bölgeye yazarak bir performans avantajı elde edebilirsiniz. Azure Cosmos DB, çoğaltmayı arka planda sizin için işler.

Hesabınızı birden çok yazma bölgesi için etkinleştirdikten sonra, uygulamasında ConnectionPolicyiki değişiklik yapmanız gerekir. içinde ConnectionPolicyolarak ayarlayın UseMultipleWriteLocations true ve uygulamanın dağıtıldığı ApplicationRegionbölgenin adını geçirin. Bu eylem, geçirilen konumdan coğrafi yakınlık temelinde özelliğini doldurur PreferredLocations . Hesaba daha sonra yeni bir bölge eklenirse uygulamanın güncelleştirilmesi veya yeniden dağıtılması gerekmez. Bölgesel bir olay gerçekleştiğinde, yakın bölgeyi otomatik olarak algılar ve bu bölgeye otomatik olarak ev sağlar.

Not

Başlangıçta tek yazma bölgesiyle yapılandırılan Azure Cosmos DB hesapları, sıfır azaltma süresiyle birden çok yazma bölgesine yapılandırılabilir. Daha fazla bilgi edinmek için bkz . Çoklu yazma bölgelerini yapılandırma.

Azure portal

Çok bölgeli yazmaları kullanmak için Azure portalını kullanarak Azure Cosmos DB hesabınızı birden çok bölgede etkinleştirin. Uygulamanızın hangi bölgelere yazabileceğini belirtin.

Çok bölgeli yazmaları etkinleştirmek için aşağıdaki adımları kullanın:

  1. Azure portalda oturum açın.

  2. Azure Cosmos DB hesabınıza gidin ve menüden Verileri genel olarak çoğalt bölmesini açın.

  3. Çok bölgeli yazmalar seçeneğinin altında etkinleştir'i seçin. Mevcut bölgeleri okuma ve yazma bölgelerine otomatik olarak ekler.

  4. Haritadaki simgeleri seçerek veya Bölge ekle düğmesini seçerek daha fazla bölge ekleyebilirsiniz. Eklediğiniz tüm bölgelerde hem okuma hem de yazma etkindir.

  5. Bölge listesini güncelleştirdikten sonra, değişiklikleri uygulamak için Kaydet'i seçin.

    Azure portalını kullanarak çok bölgeli yazmaları etkinleştirme ekran görüntüsü.

.NET SDK v2

Uygulamanızda çok bölgeli yazmaları etkinleştirmek için olarak trueayarlayınUseMultipleWriteLocations. Ayrıca, uygulamanın dağıtıldığı bölgeye ve Azure Cosmos DB'nin çoğaltıldığı bölgeye ayarlayın SetCurrentLocation :

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

.NET SDK v3

Uygulamanızda çok bölgeli yazmaları etkinleştirmek için uygulamanın dağıtıldığı ve Azure Cosmos DB'nin çoğaltıldığı bölgeye ayarlayın ApplicationRegion :

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

İsteğe bağlı olarak, aynı sonucu elde etmek için ve WithApplicationRegion kullanabilirsinizCosmosClientBuilder:

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

Java V4 SDK

Uygulamanızda çok bölgeli yazmaları etkinleştirmek için, verilerin tercihe göre sıralı olarak çoğaltıldığı bölgelerden birini (ideal olarak en kısa uzaklığa/en iyi gecikme süresine sahip bölgeler) istemci oluşturucusunda preferredRegions çağırın .multipleWriteRegionsEnabled(true) .preferredRegions(preferredRegions):List

Java SDK V4 (Maven com.azure::azure-cosmos) Zaman Uyumsuz API:


ArrayList<String> preferredRegions = new ArrayList<String>();
preferredRegions.add(region);

CosmosAsyncClient client =
        new CosmosClientBuilder()
                .endpoint(HOST)
                .key(MASTER_KEY)
                .multipleWriteRegionsEnabled(true)
                .preferredRegions(preferredRegions)
                .buildAsyncClient();

Zaman Uyumsuz Java V2 SDK'sı

Java V2 SDK'sı Maven com.microsoft.azure::azure-cosmosdb'yi kullandı. Uygulamanızda çok bölgeli yazmaları etkinleştirmek için, verilerin tercihe List göre sıralı olarak çoğaltıldığı bölgeleri ayarlayın policy.setUsingMultipleWriteLocations(true) ve ayarlayınpolicy.setPreferredLocations; ideal olarak önce en kısa mesafe/en iyi gecikme süresine sahip bölgeler:

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 ve TypeScript SDK'ları

Uygulamanızda çok bölgeli yazmaları etkinleştirmek için olarak trueayarlayınconnectionPolicy.UseMultipleWriteLocations. Ayrıca, verilerin tercihe göre sıralı olarak çoğaltıldığı bölgelere ayarlayın connectionPolicy.PreferredLocations ; ideal olarak en kısa mesafe/en iyi gecikme süresine sahip bölgeler:

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'sı

Uygulamanızda çok bölgeli yazmaları etkinleştirmek için olarak trueayarlayınconnection_policy.UseMultipleWriteLocations. Ayrıca, verilerin tercihe göre sıralı olarak çoğaltıldığı bölgelere ayarlayın connection_policy.PreferredLocations ; ideal olarak en kısa mesafeye/en iyi gecikme süresine sahip bölgelerdir.

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)

Sonraki adımlar