8
votes

Exécuter de nombreuses demandes HTTP parallèles à l'aide de nœud.js

J'ai été chargé de fractionnement d'un processus dans de nombreux processus plus petits en parallèle, distribué à un certain nombre de machines esclaves. La demande est entrée via HTTP, le serveur se divise dans un certain nombre de processus enfants émis aux machines esclaves, attend que toutes les demandes esclaves de retour des réponses, puis rassemblent les résultats globaux dans un seul objet de données à la suite du résultat. Demande de niveau supérieur. Je pensais que nœud.js serait utile, mais comme il est uniforme, je ne peux pas dire que si cela est possible ou si cela peut bloquer l'attente de chaque demande de revenir avant de passer à la suivante. Est-ce possible avec nœud.js? Si oui, quelqu'un pourrait-il me dire dans la bonne direction? c'est-à-dire un module de noeud à utiliser ou à décrire comment cela serait fait?

Merci pour toute aide.


0 commentaires

5 Réponses :


1
votes

Vous voulez lire sur webworkers. Spécifiquement, vous devriez lire http://developer.yahoo.com/blogs/ YDN / messages / 2010/07 / MULTICORE_HTTP_SERVER_WITH_NODEJS /


0 commentaires

5
votes

Vous pouvez spawn Processus d'enfants manuellement.

var util  = require('util'),
    spawn = require('child_process').spawn,
    node = spawn('node', ['slave.js']);

node.stdout.on('data', function (data) {
  console.log('stdout: ' + data);
});

node.stderr.on('data', function (data) {
  console.log('stderr: ' + data);
});

node.on('exit', function (code) {
  console.log('child process exited with code ' + code);
});

node.stdin.write("do my work!");


0 commentaires

0
votes

Si même un seul des processus plus petits, une interface synchrone étant un seul threadé serait un problème.

Heureusement, le nœud est conçu autour d'interfaces asynchrones.

tel que le processus enfant http://nodejs.org /docs/v0.4.6/api/child_processes.html#child_process.exec

ou demandes http http://nodejs.org/docs/v0.4.6/api /http.html#http.request


1 commentaires

Dans la documentation http.Request de Node, il est indiqué: "Le nœud conserve plusieurs connexions par serveur pour effectuer des demandes HTTP.". Ma compréhension est que je peux simplement émettre des demandes HTTP dans A pour boucle, en gardant une trace de tous les résultats à leur retour, puis appelez mon rappel quand ils sont tous retournés. Toutefois, cette approche semble dépendante du nombre de connexions que le nœud se maintient ouverte comme indiqué dans cette phrase, ce qui signifie que cela parallément le processus jusqu'à ce que je touche le nombre de demandes disponibles dans le pool. Quelqu'un sache comment je peux augmenter ce nombre pour dire 100?



1
votes

Essayez de regarder node.js Cluster module qui est un gestionnaire de serveur multi-core.


0 commentaires

0
votes

Je pense que ce blog post pourrait être intéressant dans la manière dont ASYNC aide à être exécuté parallèle et comment faire une exécution parallèle avec noeud.

http: //blog.mixu .NET / 2011/02/01 / compréhension-le-nœud-js-Event-boucle /


0 commentaires