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?
risposta
È possibile integrare NodeJS con Java utilizzando node-java.
Grazie mille, ci proverò anche io. –
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.
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. –
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.
- 1. strategie per la gestione di attività HardDeadlineExceededError
- 2. Numero di CPU per attività in Scintilla
- 3. Il modo migliore per integrare NodeJS con Angular
- 4. Metodi per implementare le attività associate alla CPU nei nodi
- 5. "Coda di attività" minima con strumenti Linux di serie per sfruttare la CPU multicore
- 6. Processo figlio per attività intensiva CPU?
- 7. Qual è la migliore pratica per la gestione di più profili in primavera con java config?
- 8. Buone pratiche per la gestione delle eccezioni Java
- 9. Quale sarebbe la motivazione per integrare mongodb con solr
- 10. strumento per la gestione e il refactoring java .properties file
- 11. Come integrare la leva con la console IRB RubyMine?
- 12. Esistono strumenti per integrare Java e C++?
- 13. GUI per la gestione di Redis
- 14. Gestione errori Nodejs con domini e socket.io
- 15. problema con la risoluzione di attività per un intento - resolveActivityInfo()
- 16. come integrare la gestione di TODO nella fase di test di Maven?
- 17. Caricamento della CPU medio per Linux per la settimana scorsa
- 18. La migliore interfaccia grafica per la gestione di MySQL 5.1?
- 19. Come integrare Karma con la pipeline di asset di Rails?
- 20. Impostazione java per utilizzare una cpu
- 21. Come integrare la libreria di codici Matlab con Android?
- 22. Gestione delle sessioni per la scalabilità
- 23. Nessun ricevitore EJB disponibile per la gestione
- 24. Grafici per la gestione del magazzino analisi
- 25. Come utilizzare AWS SQS/SNS come coda di notifica push per attività di elaborazione pesanti tramite PHP?
- 26. Come reimpostare l'utente per la gestione di rabbitmq
- 27. Enfasi polimorfiche per la gestione dello stato
- 28. Best practice per la gestione della ricerca
- 29. Perché la deserializzazione di Java è legata alla CPU?
- 30. Buon parser XML Python per lavorare con documenti pesanti namespace
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. –
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
Grazie mille ragazzi, gli strumenti di threading del nodo sembra quello che stavo cercando. Ci proverò di sicuro. :) –