Bagikan melalui


Cara mendistribusikan bacaan secara global menggunakan API Azure Cosmos DB for MongoDB

BERLAKU UNTUK: MongoDB

Artikel ini memperlihatkan cara mendistribusikan operasi baca secara global dengan pengaturan Preferensi Baca MongoDB menggunakan API Azure Cosmos DB for MongoDB.

Prasyarat

Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai.

Atau, Anda dapat Mencoba Microsoft Azure Cosmos DB secara gratis tanpa langganan Azure, tanpa biaya dan komitmen. Atau Anda dapat menggunakan Azure Cosmos DB Emulator untuk tutorial ini dengan string koneksi:

mongodb://localhost:C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==@localhost:10255/admin?ssl=true

Lihat artikel Mulai Cepat ini untuk instruksi tentang menggunakan portal Azure untuk menyiapkan akun Azure Cosmos DB dengan distribusi global lalu sambungkan ke sana.

Buat klon sampel aplikasi

Buka jendela terminal git, seperti git bash, dan cd ke direktori kerja.

Jalankan perintah berikut untuk mengkloning repositori sampel. Berdasarkan platform minat Anda, gunakan salah satu repositori sampel berikut:

  1. Aplikasi sampel .NET
  2. Aplikasi sampel NodeJS
  3. Aplikasi sampel Mongoose
  4. Aplikasi sampel Java
  5. Aplikasi sampel SpringBoot
git clone <sample repo url>

Jalankan aplikasi

Tergantung pada platform yang digunakan, instal paket yang diperlukan dan mulai aplikasi. Untuk menginstal dependensi, ikuti README yang disertakan dalam repositori aplikasi sampel. Misalnya, dalam aplikasi sampel NodeJS, gunakan perintah berikut untuk menginstal paket yang diperlukan dan memulai aplikasi.

cd mean
npm install
node index.js

Aplikasi mencoba untuk terhubung ke sumber MongoDB dan gagal karena string koneksi tidak valid. Ikuti langkah-langkah dalam README untuk memperbarui string koneksi url. Selain itu readFromRegion , perbarui ke wilayah baca di akun Azure Cosmos DB Anda. Instruksi berikut berasal dari sampel NodeJS:

* Next, substitute the `url`, `readFromRegion` in App.Config with your Azure Cosmos DB account's values. 

Setelah mengikuti langkah-langkah ini, aplikasi sampel berjalan dan menghasilkan output berikut:

connected!
readDefaultfunc query completed!
readFromNearestfunc query completed!
readFromRegionfunc query completed!
readDefaultfunc query completed!
readFromNearestfunc query completed!
readFromRegionfunc query completed!
readDefaultfunc query completed!
readFromSecondaryfunc query completed!

Membaca menggunakan mode Preferensi Baca

Protokol MongoDB menyediakan mode Preferensi Baca berikut untuk digunakan klien:

  1. PRIMARY
  2. PRIMARY_PREFERRED
  3. SECONDARY
  4. SECONDARY_PREFERRED
  5. NEAREST

Lihat dokumentasi terperinci Perilaku Preferensi Baca MongoDB untuk detail tentang perilaku masing-masing mode preferensi baca. Di Azure Cosmos DB, peta utama ke wilayah WRITE dan peta sekunder ke wilayah READ.

Berdasarkan skenario umum, sebaiknya gunakan pengaturan berikut:

  1. Jika ketersediaan tinggi dan bacaan latensi rendah diperlukan, gunakan mode preferensi baca NEAREST . Pengaturan ini mengarahkan operasi baca ke wilayah terdekat yang tersedia. Perhatikan bahwa jika wilayah terdekat adalah wilayah WRITE, operasi akan diarahkan ke wilayah tersebut.
  2. Jika diperlukan ketersediaan tinggi dan distribusi geografis bacaan (latensi tidak menjadi kendala), gunakan mode preferensi baca PRIMARY PREFERRED atau SECONDARY PREFERRED. Pengaturan ini mengarahkan operasi baca ke masing-masing wilayah WRITE atau READ yang tersedia. Jika wilayah tidak tersedia, permintaan diarahkan ke wilayah berikutnya yang tersedia sesuai dengan perilaku preferensi baca.

Cuplikan berikut dari aplikasi sampel menunjukkan cara mengonfigurasi Preferensi Baca NEAREST di NodeJS:

  var query = {};
  var readcoll = client.db('regionDB').collection('regionTest', {readPreference: ReadPreference.NEAREST});
  readcoll.find(query).toArray(function(err, data) {
    assert.equal(null, err);
    console.log("readFromNearestfunc query completed!");
  });

Demikian pula, cuplikan di bawah ini menunjukkan cara mengonfigurasi Preferensi Baca SECONDARY_PREFERRED di NodeJS:

  var query = {};
  var readcoll = client.db('regionDB').collection('regionTest', {readPreference: ReadPreference.SECONDARY_PREFERRED});
  readcoll.find(query).toArray(function(err, data) {
    assert.equal(null, err);
    console.log("readFromSecondaryPreferredfunc query completed!");
  });

Preferensi Baca juga dapat diatur dengan meneruskan readPreference sebagai parameter dalam opsi URI string koneksi:

const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');

// Connection URL
const url = 'mongodb://localhost:27017?ssl=true&replicaSet=globaldb&readPreference=nearest';

// Database Name
const dbName = 'myproject';

// Use connect method to connect to the Server
MongoClient.connect(url, function(err, client) {
  console.log("Connected correctly to server");

  const db = client.db(dbName);

  client.close();
});

Lihat repositori aplikasi sampel yang sesuai untuk platform lainnya, seperti .NET dan Java.

Membaca menggunakan tag

Selain mode Preferensi Baca, protokol MongoDB memungkinkan penggunaan tag untuk mengarahkan operasi baca. Di API Azure Cosmos DB untuk MongoDB, region tag disertakan secara default sebagai bagian isMaster dari respons:

"tags": {
         "region": "West US"
      }

Oleh karena itu, MongoClient dapat menggunakan tag region bersama dengan nama wilayah untuk mengarahkan operasi baca ke wilayah tertentu. Untuk akun Azure Cosmos DB, nama wilayah dapat ditemukan di portal Azure di sebelah kiri di bawah Data Pengaturan-Replika> secara global. Pengaturan ini berguna untuk mencapai isolasi baca: kasus di mana aplikasi klien ingin mengarahkan operasi baca ke wilayah tertentu saja. Pengaturan ini sangat ideal untuk skenario jenis nonproduksi/analitik, yang berjalan di latar belakang dan bukan layanan penting produksi.

Cuplikan dari aplikasi sampel berikut menunjukkan cara mengonfigurasi Preferensi Baca dengan tag di NodeJS:

 var query = {};
  var readcoll = client.db('regionDB').collection('regionTest',{readPreference: new ReadPreference(ReadPreference.SECONDARY_PREFERRED, {"region": "West US"})});
  readcoll.find(query).toArray(function(err, data) {
    assert.equal(null, err);
    console.log("readFromRegionfunc query completed!");
  });

Lihat repositori aplikasi sampel yang sesuai untuk platform lainnya, seperti .NET dan Java.

Dalam artikel ini, Anda telah mempelajari cara mendistribusikan operasi baca secara global menggunakan Preferensi Baca dengan API Azure Cosmos DB for MongoDB.

Membersihkan sumber daya

Jika Anda tidak lagi menggunakan aplikasi ini, ikuti langkah-langkah berikut untuk menghapus semua sumber daya yang dibuat oleh tutorial ini di portal Microsoft Azure:

  1. Dari menu sebelah kiri di portal Azure, klik Grup sumber daya, lalu klik nama sumber daya yang Anda buat.
  2. Di halaman grup sumber daya, klik Hapus, ketik nama sumber daya yang akan dihapus dalam kotak teks, lalu klik Hapus.

Langkah berikutnya