Stavo leggendo un litte sui cluster in nodejs e in tutti i casi era banale il clusterizzare l'applicazione. In effetti, è stato così facile che ho iniziato a chiedermi: ci sono dei casi in cui non utilizzo il clustering?
Stavo leggendo un litte sui cluster in nodejs e in tutti i casi era banale il clusterizzare l'applicazione. In effetti, è stato così facile che ho iniziato a chiedermi: ci sono dei casi in cui non utilizzo il clustering?
Diversi aspetti negativi o problemi che devi codificare:
Le sessioni di accesso devono essere archiviate in un database centrale (come redis) che tutti i cluster possono accedere o le connessioni devono essere rese appiccicose in modo che un determinato client torni sempre allo stesso processo cluster.
Lo stato lato altro server viene gestito separatamente da ogni processo in cluster o deve essere spostato su un server database separato a cui tutti i processi in cluster possono accedere.
Le connessioni Socket.io non funzioneranno correttamente a meno che non si imposti webSocket dall'inizio o si creino connessioni appiccicose.
Per eseguire socket.io su un cluster, è necessario eseguire la scheda cluster che può trovare correttamente la connessione corretta su qualsiasi istanza cluster a cui è connessa.
Gli aggiornamenti allo stato condiviso in un processo separato non sono immuni alle condizioni di gara quando più node.js elabora tutti in grado di accedervi, quindi devi codificare gli aggiornamenti di stato condivisi in modo appropriato per evitare condizioni di competizione.
L'uso del debugger può essere notevolmente più complicato, in particolare quando si cerca di tenere traccia delle attività in più richieste successive (perché ogni richiesta può finire in un processo diverso).
Tutti questi problemi possono essere gestiti con gestione o risoluzione con ulteriore codifica o installazione e configurazione di moduli aggiuntivi (a costo di una complessità extra).
are there any cases that I shouldn't use clustering?
Quando non ne hai bisogno. È una complicazione in più. Quindi, seguendo le linee guida generali per rendere il tuo codice solo complicato quanto necessario, non dovresti usare il clustering se non hai realmente bisogno della scala extra.
Inoltre, in genere non utilizzi il clustering se non hai più core nella CPU.
Leggi altre domande sui tag concurrency node.js cluster