Sto usando nodejs per un server Web che decodifica i parametri GET e restituisce i dati in qualche formato codificato. La decodifica/codifica viene eseguita utilizzando il modulo crittografico di nodejs, che sembra essere sincrono. Mentre il tempo necessario per servire una singola richiesta è abbastanza veloce, il blocco del ciclo degli eventi ha reso il servizio scarso con la concorrenza.Metodi per implementare le attività associate alla CPU nei nodi
Il mio requisito è semplice, rendere la funzionalità di codifica/decodifica al di fuori del ciclo degli eventi.
- separato processo (child_process o gruppo)
Questo può essere un processo separato esclusivamente per questo scopo, ma dal momento che la codifica/decodifica sarà il blocco nel processo figlio Questo fermerà il processo figlio per ricevere nuovi messaggi, cioè non ci sarà mai una situazione in cui due stringhe sono codificate mentre il processo figlio sarà anche a thread singolo.
- filettatura separata per ogni richiesta (thread-a-gogo o fibra o nodo WebWorker)
creare un thread separato per ciascuna richiesta di effettuare l'operazione di codifica/decodifica, ma nessuno dei i moduli sembrano funzionare come previsto, ovvero thread-a-gogo non si installa tramite npm, fibra non ha creato un thread separato su run(), node-webworker not working.
Qualcuno ha riscontrato un problema simile o esiste un modo per creare facilmente thread in nodejs con un semplice passaggio di messaggi.
La risposta è a # 1 è necessario per attivare il blocco/attesa attiva in stile di evento passivo guidato – ControlAltDel
Penso che le attività e il nodo legati alla CPU non siano una buona scelta. Quindi è meglio usare Java ad esempio e lasciare che i nodi/java comunichino tra loro in modo efficace. – Alfred
Capisco che le attività associate alla CPU in nodejs sono terribili, quindi mi aspettavo che il modulo crypto integrato potesse gestirlo separatamente. Ma non ci sono altre opzioni rispetto alla trasmissione su Java/C? – mdprasadeng