web-dev-qa-db-fra.com

Comment intégrer Java à nodejs pour gérer des tâches gourmandes en ressources processeur?

J'essaie de choisir une technologie Web adaptée aux tâches lourdes d'E/S et de processeur. NodeJs est parfait pour gérer une charge importante et peut également être étendu. Cependant, je suis coincé avec la partie lourde de l'unité centrale de traitement. Est-il possible d'intégrer une autre technologie (par exemple, Java) dans un nœud, afin que je puisse lui faire exécuter mes algorithmes dans d'autres threads, puis utiliser à nouveau les résultats dans un nœud. Y a-t-il une solution existante? Toutes les autres suggestions seront très bonnes.

13
Gevorg Soghomonyan

Vous pouvez intégrer Node JS à Java à l’aide de node-Java .

15
JustDanyul

Comme mentionné dans une réponse précédente, vous pouvez utiliser node-Java, un module npm qui parle à Java. Vous pouvez également utiliser J2V8 qui encapsule Node.js en tant que bibliothèque Java et fournit une API Node.js en Java.

4
irbull

La réponse est architecture lambda .

NodeJs est bien en soi: gérer les requêtes rapides de manière légère, sans effectuer de calculs supplémentaires sur les données. 

Les tâches lourdes du processeur peuvent être facilement déléguées à des composants spécialisés basés sur JVM (les plus célèbres sont JVM). Ceci est bien implémenté en utilisant des courtiers de messages et des microservices. 

Une architecture basée sur les événements, dans laquelle les nœuds peuvent être reliés à des bases de données telles que Cassandra ou Mongodb et à des infrastructures de calcul en cluster telles qu'Apache Spark (pas nécessairement, cela dépend du problème) pour gérer les parties du système qui nécessitent beaucoup de CPU. Et les conteneurs légers ajoutent un glaçage au gâteau en fournissant des environnements d’exécution isolés et agréables pour chacun des composants.

C'est ma conclusion jusqu'ici concernant cette question. Je pense que les suggestions ci-dessus éliminent en quelque sorte la nécessité de regrouper les nœuds sous Java ou une autre solution basée sur JVM pour les tâches nécessitant beaucoup de ressources processeur.

1
Gevorg Soghomonyan