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

ŞUNUN IÇIN GEÇERLIDIR: 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 UseMultipleWriteLocationstrue ve uygulamanın ApplicationRegiondağıtıldığı bölgenin adını geçirin. Bu eylem, geçirilen konumdan coğrafi yakınlık temelinde özelliği 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 evleri ekler.

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 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 portalında oturum açın.

  2. Azure Cosmos DB hesabınıza gidin ve menüden Verileri genel olarak çoğaltma 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 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 trueolarak ayarlayınUseMultipleWriteLocations. Ayrıca uygulamanın dağıtıldığı 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'sı

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

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 uzaklığa/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 trueolarak ayarlayı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 mesafeye/en iyi gecikme süresine sahip bölgelerdir:

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 trueolarak ayarlayı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 uzaklığa/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