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 ConnectionPolicy
iki değişiklik yapmanız gerekir. içinde ConnectionPolicy
olarak ayarlayın UseMultipleWriteLocations
true
ve uygulamanın ApplicationRegion
dağı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:
Azure portalında oturum açın.
Azure Cosmos DB hesabınıza gidin ve menüden Verileri genel olarak çoğaltma bölmesini açın.
Ç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.
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.
Bölge listesini güncelleştirdikten sonra, değişiklikleri uygulamak için Kaydet'i seçin.
.NET SDK v2
Uygulamanızda çok bölgeli yazmaları etkinleştirmek için true
olarak 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 true
olarak 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 true
olarak 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)