Node.js e applicazioni web ad alta intensità di CPU

6

Qualche tempo fa ho fatto questa domanda sul porting di un'applicazione Silverlight sul web. Ci manca esperienza nel lavoro con le applicazioni web e abbiamo iniziato a cercare formazione e risorse. Abbiamo notato che al momento c'è una strong tendenza su Node.js e, mentre ne conosciamo la popolarità e il supporto, nutriamo alcuni dubbi sulla sua idoneità alle nostre esigenze. La nostra applicazione consisterebbe in una o più applicazioni Web, collegate a diverse unità operative dell'azienda, ognuna delle quali svolge diverse funzioni. Alcune di queste funzioni, tuttavia, includevano l'analisi dei rapporti e dei dati, richiedendo a volte (ma non sempre) operazioni a lungo termine relative al numero di scricchiolii e alla trasformazione di quantità significative di dati.

In passato, queste operazioni cpu-costose erano gestite lato client con Silverlight, ma nel nostro futuro set-up, sarebbero state fatte nel server, e ho trovato diverse risorse nella rete che puntavano a possibili problemi che un'applicazione con questi requisiti potrebbe trovarsi in Node.js a causa della sua architettura. Naturalmente, ci sono molte altre risorse che affermano che questi problemi non esistono o sono facilmente risolvibili con alcuni moduli o che trasferiscono compiti pesanti a un altro server. L'ultima soluzione, tuttavia, sarebbe difficile da implementare per noi a causa di diversi motivi.

Quindi ora la domanda. Node.js è in grado di gestire le applicazioni richieste per eseguire attività a uso intensivo della CPU come descritto?

L'applicazione è stata avviata come un'applicazione Windows Form, ma siamo stati più o meno costretti a spostarci sul Web a causa dei maggiori aumenti abbiamo deciso che era la soluzione per diversi problemi dell'applicazione, e non pensano che tornare a un'applicazione desktop è un'opzione. Inoltre, abbiamo poco o nessun controllo sul server di produzione (un server e un server di backup che rispecchia il primo, con un sistema di bilanciamento del carico) e dobbiamo fidarci della società che li gestisce per fare tutta l'installazione. Ciò significa che, per mantenere il nostro equilibrio e il loro, l'impostazione dell'applicazione dovrebbe essere il più semplice possibile.

La maggior parte di noi ha uno sfondo limitato alle applicazioni desktop .net e Silverlight, e dobbiamo affidarci ad altri per consulenze in applicazioni web pure. Questa domanda è solo una delle tante che stiamo cercando di dare una risposta al fine di avere una chiara comprensione di quali opzioni abbiamo a disposizione e dei pro e contro di ciascuno. Poiché "Qual è il pro e il contro di X" potrebbe non essere un formato appropriato per una domanda in questo sito, e poiché la maggior parte di essi è coperta comunque in tutta la rete, ho deciso di fare la domanda su uno di quei punti che ero avere più dubbi.

    
posta MACN 31.05.2015 - 18:32
fonte

1 risposta

5

Il problema principale che Node.js ha nel tuo usecase è che viene eseguito su un singolo thread. Ciò significa che un'attività ad alta intensità di CPU ha una grande possibilità di bloccare l'intero server fino al suo completamento.

D'altro canto, è possibile utilizzare una coda di attività in esecuzione su un altro server (o processo), come descritto in questa risposta . Se lo fai, il tuo server client non deve bloccare.

    
risposta data 31.05.2015 - 20:41
fonte

Leggi altre domande sui tag