Saya telah mencari banyak untuk mencari tahu pertanyaan ini, tetapi saya tidak mendapatkan penjelasan yang jelas. Apakah hanya ada satu hal yang membedakan aplikasi berkerumun dapat diskalakan dan aplikasi bercabang tidak bisa?
Situs publik PM2 menjelaskan mode Cluster dapat melakukan fitur ini tetapi tidak ada yang mengatakan tentang kelebihan mode Fork (mungkin, ini bisa NODE_APP_INSTANCE
bervariasi).
Saya merasa Cluster mungkin menjadi bagian dari Fork karena Fork sepertinya digunakan secara umum. Jadi, menurut saya Fork berarti hanya 'proses bercabang' dari titik PM2 dan Cluster berarti 'proses bercabang yang dapat diskalakan'. Lalu, mengapa saya harus menggunakan mode Fork?
pm2 start -i 30 app.js
dan membiarkan cluster nodejs melakukan pekerjaannya.cluster mode
proses master adalah satu titik kegagalan.Node.js adalah utas tunggal.
Itu berarti hanya 1 inti dari CPU quad-core Intel Anda yang dapat menjalankan aplikasi node.
Ini disebut:
fork_mode
.Kami menggunakannya untuk pengembang lokal .
pm2 start server.js -i 0
membantu Anda menjalankan 1 utas node pada setiap inti CPU Anda.Dan otomatis menyeimbangkan permintaan yang datang tanpa kewarganegaraan.
Di port yang sama .
Kami menyebutnya:
cluster_mode
.Yang digunakan demi performa pada produksi .
Anda juga dapat memilih untuk melakukan ini pada pengembang lokal jika Anda ingin menguji PC Anda :)
sumber
Dokumentasi dan sumber sangat menyesatkan di sini.
Membaca ini di sumber, satu-satunya perbedaan tampaknya, bahwa mereka menggunakan node
cluster
atauchild_process
API. Sejakcluster
menggunakan yang terakhir, Anda sebenarnya melakukan hal yang sama. Hanya ada lebih banyak kebiasaan yangstdio
terjadi di sekitar penginapanfork_mode
. Jugacluster
hanya dapat dikomunikasikan dengan melalui string, bukan objek.Secara default Anda menggunakan
fork_mode
. Jika Anda lulus-i [number]
opsi-, Anda akan masukcluster_mode
, yang biasanya Anda tuju w /pm2
.Juga
fork_mode
contoh mungkin tidak dapat mendengarkan pada port yang sama karenaEADDRINUSE
.cluster_mode
bisa. Dengan cara ini Anda juga dapat menyusun aplikasi Anda agar berjalan pada port yang sama dengan beban seimbang secara otomatis. Anda harus membangun aplikasi tanpa status, misalnya sesi, dbs.sumber
cluster
modul built-in menggunakan secarachild_process
internal? dan saran Anda adalah jika saya membutuhkan fleksibelstdio
, saya harus menggunakan mode Fork?stdio
hal adalah sesuatu daripm2
implementasi 's. Jangan khawatir tentang ini. Anda ingin menggunakancluster_mode
dalam produksi karena ini memperkuat instance Anda karena menjalankan-i [number]
instance di latar belakang. Gunakanfork_mode
jika pengerasan tidak diperlukan atau Anda ingin log dan barang yang lebih baik.cluster_mode
menggunakan lebih banyak sumber daya sistem Anda karena Anda menjalankan-i [number]
proses.cluster_mode
, keseimbangan bebancluster_mode
,cluster_mode
menggunakan lebih banyak sumber daya ..). Itulah alasan mengapa saya belum memilih. Bisakah Anda menjelaskan kedua kasus penggunaan sederhana? Setiap case harus memiliki alasan yang masuk akal mengapa mengambil modenya.