2013-08-02 8 views
10

Sto provando a scegliere una tecnologia web giusta sia per i carichi pesanti I/O che per quelli pesanti della CPU. NodeJs è perfetto per gestire carichi di grandi dimensioni e può anche essere ridimensionato. Tuttavia, sono bloccato con la parte pesante della cpu. È possibile integrare un'altra tecnologia (ad es. Java) nel nodo, in modo tale che eseguirò i miei algoritmi in altri thread e quindi utilizzerò di nuovo i risultati nel nodo. C'è qualche soluzione esistente? Qualsiasi altro suggerimento sarà molto buono.Come integrare Java con nodejs per la gestione di attività pesanti per la CPU?

+2

La cosa più semplice da fare è provarlo e vedere come le varie tecnologie soddisfano le vostre esigenze. Ricorda inoltre che l'infrastruttura non è costosa come lo era 10 anni fa. Spuntare nuove istanze del server per supportare il caricamento è banale in questi giorni. –

+1

Perché scegliere un'altra tecnologia, quando è possibile esternalizzare il codice JS cpu-heavy ad un altro thread? Dai un'occhiata ai thread-a-gogo https://github.com/xk/node-threads-a-gogo e ad altri strumenti di threading di nodejs :) – randunel

+0

Grazie mille ragazzi, gli strumenti di threading del nodo sembra quello che stavo cercando. Ci proverò di sicuro. :) –

risposta

11

È possibile integrare NodeJS con Java utilizzando node-java.

+0

Grazie mille, ci proverò anche io. –

2

Come menzionato in una risposta precedente, è possibile utilizzare node-java che è un modulo npm che parla con Java. Puoi anche utilizzare J2V8 che avvolge Node.js come libreria Java e fornisce un'API Node.js in Java.

+1

Grazie per la risposta. La domanda è stata posta 3 anni fa. Conclusioni attuali: i broker di messaggi come rabbit mq, o kafka (come soluzione distribuita) possono effettivamente aiutare a evitare questo tipo di integrazioni. Inoltre, i compiti computazionalmente pesanti possono essere delegati a moduli specializzati come la scintilla di apache. In generale, in questa fase, l'architettura lambda è la risposta alla domanda in cui credo. –

0

La risposta è lambda architecture.

NodeJs è bello da solo: gestisce le query veloci in modo leggero, senza eseguire calcoli aggiuntivi sui dati.

Le attività pesanti della CPU possono essere facilmente delegate a componenti specializzati basati su JVM (beh, quelli più famosi sono su JVM). Questo è ben implementato utilizzando i broker di messaggi e i microservizi.

Un'architettura basata su eventi, in cui i nodijs possono essere collegati a database come Cassandra o Mongodb e framework di calcolo cluster come Apache Spark (non necessariamente, tuttavia, dipende dal problema) per gestire le parti pesanti della CPU sistema. E i contenitori leggeri aggiungono una ciliegina alla torta fornendo piacevoli ambienti runtime isolati per ciascuno dei componenti in cui vivere.

Questa è la mia conclusione finora riguardo a questa domanda. Penso che i suggerimenti sopra elencati eliminino la necessità di avvolgere il nodo sotto java o altra soluzione basata su JVM per compiti cpu-pesanti.

Problemi correlati