Karena sudah ada dan jawaban yang diajukan, dan yang berguna dan valid pada saat itu, saya tidak ingin mengalihkan perhatian dari kegunaannya sendiri tetapi memang ada poin untuk meningkatkan yang melampaui komentar singkat. Jadi pertimbangkan ini "augmentasi", yang diharapkan sah tetapi terutama di samping apa yang telah dikatakan.
Yang benar adalah untuk benar-benar mempertimbangkan "bagaimana aplikasi Anda menggunakan data", dan juga untuk menyadari faktor-faktor dalam "lingkungan yang terbengkalai" serta "lingkungan wadah" yang Anda usulkan yang memengaruhi hal ini.
Kasus Latar Belakang
Pandangan umum pada rekomendasi praktik untuk co-locating mongos
proses bersama dengan contoh aplikasi adalah untuk meniadakan setiap overhead jaringan yang diperlukan agar aplikasi untuk berkomunikasi dengan mongos
proses itu. Tentu saja ini juga merupakan "praktik yang disarankan" untuk menentukan sejumlah mongos
instance dalam string koneksi aplikasi dalam kasus di mana simpul "terdekat" tidak tersedia untuk beberapa alasan maka yang lain dapat dipilih, meskipun dengan kemungkinan biaya overhead untuk menghubungi suatu simpul jarak jauh.
Kasus "buruh pelabuhan" yang Anda sebutkan tampaknya agak arbitrer. Meskipun benar bahwa salah satu tujuan utama wadah (dan sebelum itu, sesuatu seperti penjara BSD atau bahkan chroot) umumnya untuk mencapai beberapa tingkat "proses isolasi", tidak ada yang salah dengan menjalankan banyak proses selama Anda memahami implikasinya.
Dalam kasus khusus mongos
ini dimaksudkan untuk menjadi "ringan" dan dijalankan sebagai "fungsi tambahan" untuk proses aplikasi dengan cara yang cukup banyak "bagian" dari aplikasi itu sendiri. Jadi buruh pelabuhan gambar sendiri tidak memiliki proses seperti "initd" tetapi tidak ada yang salah dengan menjalankan pengontrol proses seperti supervisord (misalnya) sebagai proses utama untuk wadah yang kemudian memberi Anda titik proses kontrol atas wadah itu juga. Situasi "proses berpasangan" ini adalah kasus yang masuk akal dan juga cukup umum meminta ada dokumentasi resmi untuknya.
Jika Anda memilih jenis operasi "berpasangan" untuk ditempatkan, maka operasi itu memang menangani titik utama mempertahankan mongos
instance pada koneksi jaringan yang sama dan memang "instance server" sebagai server aplikasi itu sendiri. Ini juga dapat dilihat dalam beberapa cara sebagai kasus di mana "seluruh wadah" gagal maka simpul itu sendiri hanya akan tidak valid. Bukannya saya akan merekomendasikan itu, dan pada kenyataannya Anda mungkin harus mengkonfigurasi koneksi untuk mencari mongos
contoh lain bahkan jika ini hanya dapat diakses melalui koneksi jaringan yang meningkatkan latensi.
Khusus Versi / Penggunaan Khusus
Sekarang setelah titik itu dibuat, pertimbangan lain di sini kembali ke pertimbangan awal dari co-locating mongos
proses dengan aplikasi untuk keperluan latensi jaringan. Dalam versi MongoDB sebelum 2.6 dan secara khusus berkenaan dengan operasi seperti dengan kerangka agregasi, maka ada kasus bahwa akan ada lebih banyak lalu lintas jaringan dan selanjutnya setelah pekerjaan pemrosesan dilakukan oleh mongos
proses untuk menangani data dari pecahan yang berbeda. . Itu tidak begitu banyak terjadi sekarang karena banyak dari beban kerja pemrosesan sekarang dapat dilakukan pada pecahan itu sendiri sebelum "menyaring" ke "router".
Kasus lainnya adalah pola penggunaan aplikasi Anda sendiri terkait dengan sharding. Itu berarti apakah beban kerja utama adalah dalam "mendistribusikan tulisan" di beberapa pecahan, atau memang menjadi pendekatan "pencar-pengumpulan" dalam mengkonsolidasikan permintaan baca. Dalam skenario itu
Tes, Uji dan Uji lagi
Jadi poin terakhir di sini benar-benar jelas, dan sampai pada konsensus dasar dari setiap tanggapan yang masuk akal terhadap pertanyaan Anda. Ini bukan hal baru untuk MongoDB atau solusi penyimpanan lainnya, tetapi lingkungan penempatan Anda yang sebenarnya perlu diuji pada "pola penggunaan" itu sedekat mungkin dengan realitas aktual seperti halnya "pengujian unit" dari fungsionalitas yang diharapkan dari komponen inti atau hasil keseluruhan perlu diuji.
Benar-benar tidak ada pernyataan "pasti" untuk mengatakan "konfigurasikan dengan cara ini" atau "gunakan dengan cara ini" yang sebenarnya masuk akal selain menguji apa yang "benar-benar berfungsi terbaik" untuk kinerja dan keandalan aplikasi Anda seperti yang diharapkan.
Tentu saja "kasus terbaik" akan selalu untuk tidak "kerumunan" mongos
contoh dengan permintaan dari sumber server aplikasi "banyak". Tetapi kemudian untuk memungkinkan mereka beberapa "paritas" alami yang dapat didistribusikan oleh beban kerja sumber daya yang tersedia untuk memiliki "setidaknya" "kumpulan sumber daya" yang dapat dipilih, dan memang idealnya dalam banyak kasus tetapi mengeliminasi kebutuhan untuk mendorong tambahan "overhead transportasi jaringan".
Itulah tujuannya, tetapi idealnya Anda dapat "menguji laboratorium" konfigurasi yang dipersepsikan berbeda untuk mendapatkan solusi "paling cocok" untuk solusi penempatan Anda yang akhirnya.
Saya juga akan sangat merekomendasikan kursus "gratis" (seperti dalam bir) yang tersedia seperti yang telah disebutkan, dan tidak peduli apa tingkat pengetahuan Anda. Saya menemukan bahwa berbagai sumber materi pelajaran sering menawarkan "permata tersembunyi" untuk memberikan lebih banyak wawasan tentang hal-hal yang mungkin tidak Anda pertimbangkan atau abaikan. The M102 Kelas seperti yang disebutkan dibangun dan dilakukan oleh Adam Commerford untuk siapa saya bisa atestasi memiliki tingkat tinggi pengetahuan tentang penyebaran skala besar MongoDB dan arsitektur data lainnya. Sepadan dengan waktu untuk setidaknya mempertimbangkan perspektif baru tentang apa yang Anda pikir sudah Anda ketahui.
mongos
, maka pencocokan jumlah node yang sama harus menyediakan setidaknyamongos
contoh yang cukup . Ini bukan ilmu pasti dan tergantung pada kebutuhan Anda, tapi itulah cara saya lebih suka lingkungan produksi.