MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Gambaran Umum MongoDB dan Load Balancing

Pengimbangan beban basis data mendistribusikan permintaan klien secara bersamaan ke beberapa server basis data untuk mengurangi jumlah beban pada server tunggal mana pun. Hal ini dapat meningkatkan kinerja database Anda secara drastis. Untungnya, MongoDB dapat menangani beberapa permintaan klien untuk membaca dan menulis data yang sama secara bersamaan secara default. Ini menggunakan beberapa mekanisme kontrol konkurensi dan protokol penguncian untuk memastikan konsistensi data setiap saat.

Dengan cara ini, MongoDB juga memastikan bahwa semua klien mendapatkan tampilan data yang konsisten setiap saat. Karena fitur bawaan untuk menangani permintaan dari banyak klien, Anda tidak perlu khawatir tentang menambahkan penyeimbang beban eksternal di atas server MongoDB Anda. Meskipun, jika Anda masih ingin meningkatkan kinerja database Anda menggunakan penyeimbangan beban, berikut beberapa cara untuk mencapainya.

Penskalaan Vertikal MongoDB

Dalam istilah sederhana, Penskalaan vertikal berarti menambahkan lebih banyak sumber daya ke server Anda untuk menangani pemuatan. Seperti semua sistem database, MongoDB lebih menyukai lebih banyak RAM dan kapasitas IO. Ini adalah cara paling sederhana untuk meningkatkan kinerja MongoDB tanpa menyebarkan beban ke beberapa server. Penskalaan vertikal database MongoDB biasanya mencakup peningkatan kapasitas CPU atau kapasitas disk dan peningkatan throughput (operasi I/O). Dengan menambahkan lebih banyak sumber daya, server mongo Anda menjadi lebih mampu menangani banyak permintaan klien. Dengan demikian, penyeimbangan beban yang lebih baik untuk database Anda.

Kelemahan dari penggunaan pendekatan ini adalah keterbatasan teknis dalam menambahkan sumber daya ke sistem tunggal mana pun. Selain itu, semua penyedia cloud memiliki batasan untuk menambahkan konfigurasi perangkat keras baru. Kerugian lain dari pendekatan ini adalah satu titik kegagalan. Dalam pendekatan ini, semua data Anda disimpan dalam satu sistem, yang dapat menyebabkan hilangnya data Anda secara permanen.

Penskalaan Horizontal MongoDB

Penskalaan horizontal mengacu pada membagi database Anda menjadi beberapa bagian dan menyimpannya di beberapa server. Keuntungan utama dari pendekatan ini adalah Anda dapat menambahkan server tambahan dengan cepat untuk meningkatkan kinerja database Anda tanpa downtime. MongoDB menyediakan penskalaan horizontal melalui sharding. Sharding MongoDB memberikan kapasitas tambahan untuk mendistribusikan beban tulis di beberapa server (pecahan). Di sini, setiap pecahan dapat dilihat sebagai satu basis data independen dan kumpulan semua pecahan dapat dilihat sebagai satu basis data logis yang besar. Sharding memungkinkan MongoDB Anda untuk mendistribusikan data di beberapa server untuk menangani permintaan klien secara bersamaan secara efisien. Oleh karena itu, ini meningkatkan throughput baca dan tulis database Anda.

Sharding MongoDB

Sebuah shard dapat berupa instance mongod tunggal atau set replika yang menyimpan subset dari database sharded mongo. Anda dapat mengonversi pecahan dalam kumpulan replika untuk memastikan ketersediaan data dan redundansi yang tinggi.

Seperti yang Anda lihat pada gambar di atas, pecahan 1 menyimpan subset dari koleksi 1 dan seluruh koleksi2, sedangkan pecahan 2 hanya berisi subset lain dari koleksi1. Anda dapat mengakses setiap pecahan menggunakan instance mongos. Misalnya, jika Anda terhubung ke instance shard1, Anda hanya dapat melihat/mengakses sebagian dari collection1.

Mongo

Mongos adalah router kueri yang menyediakan akses ke sharded cluster untuk aplikasi klien. Anda dapat memiliki beberapa instance mongos untuk penyeimbangan beban yang lebih baik. Misalnya, di cluster produksi Anda, Anda dapat memiliki satu instance mongos untuk setiap server aplikasi. Sekarang di sini Anda dapat menggunakan penyeimbang beban eksternal, yang akan mengarahkan permintaan server aplikasi Anda ke instance mongos yang sesuai. Saat menambahkan konfigurasi tersebut ke server produksi Anda, pastikan bahwa koneksi dari klien mana pun selalu terhubung ke instance mongos yang sama setiap kali karena beberapa sumber daya mongo seperti kursor khusus untuk instance mongos.

Server Konfigurasi

Server konfigurasi menyimpan setelan konfigurasi dan metadata tentang cluster Anda. Dari MongoDB versi 3.4, Anda harus menggunakan server konfigurasi sebagai kumpulan replika. Jika Anda mengaktifkan sharding di lingkungan produksi, maka wajib menggunakan tiga server konfigurasi terpisah, masing-masing pada mesin yang berbeda.

Anda dapat mengikuti panduan ini untuk mengonversi kumpulan kumpulan replika menjadi kumpulan pecahan. Berikut adalah contoh ilustrasi cluster produksi sharded:

MongoDB Load Balancing Menggunakan Replikasi

Terkadang replikasi MongoDB dapat digunakan untuk menangani lebih banyak lalu lintas dari klien dan untuk mengurangi beban pada server utama. Untuk melakukannya, Anda dapat menginstruksikan klien untuk membaca dari sekunder, bukan dari server utama. Hal ini dapat mengurangi jumlah beban pada server utama karena semua permintaan baca yang datang dari klien akan ditangani oleh server sekunder, dan server utama hanya akan menangani permintaan tulis.

Berikut adalah perintah untuk menyetel preferensi baca ke sekunder:

db.getMongo().setReadPref('secondary')

Anda juga dapat menentukan beberapa tag untuk menargetkan sekunder tertentu saat menangani kueri baca.

db.getMongo().setReadPref(

   "secondary", [

{ "datacenter": "APAC" },

{ "region": "East"},

{}

])

Di sini, MongoDB akan mencoba menemukan simpul sekunder dengan nilai tag pusat data sebagai APAC. Jika ditemukan, maka Mongo akan melayani permintaan baca dari semua sekunder dengan tag datacenter:“APAC”. Jika tidak ditemukan, maka Mongo akan mencoba mencari sekunder dengan tag region:“East”. Jika masih tidak ada sekunder yang ditemukan, maka {} akan berfungsi sebagai kasus default, dan Mongo akan melayani permintaan dari sekunder yang memenuhi syarat.

Namun, pendekatan untuk penyeimbangan beban ini tidak disarankan untuk digunakan untuk meningkatkan throughput baca. Karena mode preferensi baca apa pun selain primer dapat mengembalikan data lama jika terjadi pembaruan tulis terbaru di server utama. Biasanya, server utama akan membutuhkan waktu untuk menangani permintaan tulis dan menyebarkan perubahan ke server sekunder. Selama waktu ini, jika seseorang meminta operasi baca pada data yang sama, server sekunder akan mengembalikan data basi karena tidak sinkron dengan server utama. Anda dapat menggunakan pendekatan ini jika aplikasi Anda adalah operasi baca yang berat dibandingkan dengan operasi tulis.

Kesimpulan

Karena MongoDB dapat menangani permintaan bersamaan dengan sendirinya, tidak perlu menambahkan penyeimbang beban di klaster MongoDB Anda. Untuk penyeimbangan beban permintaan klien, Anda dapat memilih penskalaan vertikal atau penskalaan horizontal karena tidak disarankan menggunakan sekunder untuk menskalakan operasi baca dan tulis Anda. Penskalaan vertikal dapat mencapai batas teknis, seperti yang dibahas di atas. Oleh karena itu, sangat cocok untuk aplikasi skala kecil. Untuk aplikasi besar, penskalaan horizontal melalui sharding adalah pendekatan terbaik untuk penyeimbangan beban operasi baca dan tulis.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana saya bisa mengubah ukuran koleksi yang dibatasi mongodb tanpa kehilangan data?

  2. Bagaimana saya bisa membuat indeks dengan pymongo

  3. Bagaimana cara bergabung dengan kueri di mongodb?

  4. Memperbarui Kamus di Mongodb

  5. Meminta MongoDB untuk dicocokkan dengan item pertama dalam array