Comment utiliser Node.js pour développer un système de distribution de tâches simple
Introduction
Dans le développement de logiciels modernes, le système de distribution de tâches est un composant très courant et important. Il peut distribuer des tâches à différents nœuds de travail pour réaliser un traitement parallèle et améliorer l'efficacité du système. Cet article explique comment utiliser Node.js pour développer un système de distribution de tâches simple et fournit des exemples de code spécifiques.
1.1 Distributeur de tâches
Le distributeur de tâches est responsable de la réception des tâches et de la distribution des tâches aux nœuds de travail. Il doit fournir les fonctions suivantes :
1.2 Nœud de travail
Les nœuds de travail sont responsables de l'exécution des tâches. Il doit fournir les fonctions suivantes :
2.1 Créer un distributeur de tâches
Tout d'abord, nous devons créer un module de distribution de tâches. Dans le module de distribution de tâches, nous pouvons définir des interfaces pour recevoir les demandes de tâches et utiliser des algorithmes d'équilibrage de charge pour sélectionner les nœuds de travail. Voici un exemple de code simple :
const express = require('express'); const app = express(); app.use(express.json()); // 接收任务请求 app.post('/task', (req, res) => { const { taskId, payload } = req.body; // 使用负载均衡算法选择工作节点 const selectedNode = selectNode(); // 将任务分发给工作节点 sendTask(selectedNode, taskId, payload); res.status(200).send('Task has been dispatched.'); }); app.listen(3000, () => { console.log('Task dispatcher is running on port 3000.'); });
2.2 Créer un nœud de travail
Ensuite, nous devons créer le module du nœud de travail. Dans le module de nœud de travail, nous pouvons définir des interfaces pour recevoir des tâches et exécuter la logique des tâches. Une fois la tâche terminée, le nœud de travail doit transmettre les résultats de la tâche au distributeur de tâches. Voici un exemple de code simple :
const express = require('express'); const app = express(); app.use(express.json()); // 注册到任务分发者 app.post('/register', (req, res) => { const { nodeId } = req.body; // 注册到任务分发者 registerNode(nodeId); res.status(200).send('Node has been registered.'); }); // 接收任务 app.post('/task', (req, res) => { const { taskId, payload } = req.body; // 执行任务逻辑 const result = executeTask(taskId, payload); // 反馈任务结果 sendTaskResult(taskId, result); res.status(200).send('Task has been completed.'); }); app.listen(4000, () => { console.log('Worker node is running on port 4000.'); });
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!