Mengonfigurasi penulisan beberapa wilayah di aplikasi Anda yang menggunakan Azure Cosmos DB

BERLAKU UNTUK: NoSQL

Dalam skenario penulisan beberapa wilayah, Anda bisa mendapatkan manfaat performa dengan menulis hanya ke wilayah yang dekat dengan instans aplikasi Anda. Azure Cosmos DB menangani replikasi untuk Anda di belakang layar.

Setelah mengaktifkan akun untuk beberapa wilayah tulis, Anda harus membuat dua perubahan dalam aplikasi Anda ke ConnectionPolicy. ConnectionPolicyDalam , atur UseMultipleWriteLocations ke true dan berikan nama wilayah tempat aplikasi disebarkan ke ApplicationRegion. Tindakan ini mengisi PreferredLocations properti berdasarkan kedekatan geografis dari lokasi yang diteruskan. Jika wilayah baru kemudian ditambahkan ke akun, aplikasi tidak harus diperbarui atau disebarkan ulang. Ini secara otomatis mendeteksi wilayah yang lebih dekat dan rumah otomatis di dalamnya jika terjadi peristiwa regional.

Catatan

Akun Azure Cosmos DB yang awalnya dikonfigurasi dengan wilayah tulis tunggal dapat dikonfigurasi ke beberapa wilayah tulis dengan waktu henti nol. Untuk mempelajari selengkapnya, lihat Mengonfigurasi beberapa wilayah tulis.

portal Microsoft Azure

Untuk menggunakan penulisan multi-wilayah, aktifkan akun Azure Cosmos DB Anda untuk beberapa wilayah dengan menggunakan portal Azure. Tentukan wilayah mana yang dapat ditulis aplikasi Anda.

Untuk mengaktifkan penulisan multi-wilayah, gunakan langkah-langkah berikut:

  1. Masuk ke portal Microsoft Azure.

  2. Navigasi ke akun Azure Cosmos DB Anda dan dari menu, buka panel Replikasi data secara global .

  3. Di bawah opsi Penulisan multi-wilayah, pilih aktifkan. Ini secara otomatis menambahkan wilayah yang ada untuk membaca dan menulis wilayah.

  4. Anda dapat menambahkan lebih banyak wilayah dengan memilih ikon di peta atau dengan memilih tombol Tambahkan wilayah . Semua wilayah yang Anda tambahkan mengaktifkan baca dan tulis.

  5. Setelah Anda memperbarui daftar wilayah, pilih Simpan untuk menerapkan perubahan.

    Cuplikan layar untuk mengaktifkan penulisan multi-wilayah menggunakan portal Azure.

.NET SDK v2

Untuk mengaktifkan penulisan multi-wilayah di aplikasi Anda, atur UseMultipleWriteLocations ke true . Juga, SetCurrentLocation atur ke wilayah di mana aplikasi sedang digunakan dan di mana Azure Cosmos DB direplikasi:

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

.NET SDK v3

Untuk mengaktifkan penulisan multi-wilayah di aplikasi Anda, atur ApplicationRegion ke wilayah tempat aplikasi disebarkan dan tempat Azure Cosmos DB direplikasi:

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

Secara opsional, Anda dapat menggunakan CosmosClientBuilder dan untuk mencapai hasil yang WithApplicationRegion sama:

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

Java V4 SDK

Untuk mengaktifkan penulisan multi-wilayah di aplikasi Anda, panggil .multipleWriteRegionsEnabled(true) dan .preferredRegions(preferredRegions) di penyusun klien, di mana preferredRegions merupakan List wilayah data direplikasi ke dalam urutan berdasarkan preferensi - idealnya wilayah dengan jarak terpendek/latensi terbaik terlebih dahulu:

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

Java V2 SDK menggunakan Maven com.microsoft.azure::azure-cosmosdb. Untuk mengaktifkan penulisan multi-wilayah di aplikasi Anda, atur policy.setUsingMultipleWriteLocations(true) dan atur policy.setPreferredLocations ke List wilayah data direplikasi ke dalam urutan berdasarkan preferensi - idealnya wilayah dengan jarak terpendek/latensi terbaik terlebih dahulu:

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, dan TypeScript SDK

Untuk mengaktifkan penulisan multi-wilayah di aplikasi Anda, atur connectionPolicy.UseMultipleWriteLocations ke true . Selain itu, atur connectionPolicy.PreferredLocations ke wilayah data direplikasi ke dalam urutan berdasarkan preferensi - idealnya wilayah dengan jarak terpendek/latensi terbaik terlebih dahulu:

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

Untuk mengaktifkan penulisan multi-wilayah di aplikasi Anda, atur connection_policy.UseMultipleWriteLocations ke true . Selain itu, atur connection_policy.PreferredLocations ke wilayah data direplikasi ke dalam urutan berdasarkan preferensi - idealnya wilayah dengan jarak terpendek/latensi terbaik terlebih dahulu.

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)

Langkah berikutnya