Node.js est un environnement d'exécution JavaScript multiplateforme open source qui permet le développement d'applications Web efficaces et légères. Dans le processus de développement d'applications réseau, nous rencontrons souvent des situations où le transfert est nécessaire, comme le proxy inverse, l'équilibrage de charge, etc. Cet article explique comment configurer le transfert dans Node.js.
1. Le proxy inverse
Le proxy inverse est un scénario d'application serveur courant. Il s'agit d'un moyen de traiter les demandes des clients en transmettant les demandes à d'autres technologies de serveurs. Par exemple, nous pouvons transmettre les demandes des clients vers différents serveurs via des proxys inverses pour réaliser un équilibrage de charge. Dans Node.js, vous pouvez utiliser le module http-proxy pour implémenter un proxy inverse.
Avant d'utiliser le module http-proxy, vous devez l'installer. Vous pouvez utiliser la commande npm pour installer :
npm install http-proxy --save
Ensuite, nous pouvons commencer à écrire le code du proxy inverse. Ce qui suit est un exemple simple de proxy inverse, qui transmet les requêtes des clients au serveur local localhost:3000 :
const httpProxy = require('http-proxy'); const proxy = httpProxy.createProxyServer({}); require('http').createServer((req, res) => { proxy.web(req, res, { target: 'http://localhost:3000' }); }).listen(80);
Dans le code ci-dessus, nous créons d'abord une instance de http-proxy , puis utilisons le construit -dans le module http de Node.js pour créer un serveur et écouter sur le port 80. Lorsqu'une demande client arrive, nous la transmettons au serveur local localhost:3000 via la méthode proxy.web().
Après avoir écrit le code du proxy inverse, nous pouvons l'exécuter via la commande suivante :
node app.js
Si tout est normal, nous pouvons accéder au serveur proxy inverse en accédant à http://localhost via le navigateur.
2. Équilibrage de charge
L'équilibrage de charge est un scénario d'application serveur courant. Il s'agit d'une méthode qui distribue les requêtes des clients à différents serveurs pour équilibrer la charge du serveur. Node.js propose diverses façons d'équilibrer la charge, notamment en utilisant des outils tiers tels que haproxy et Nginx, ou en écrivant votre propre code pour y parvenir.
La stratégie d'équilibrage de charge Round-Robin est une stratégie d'équilibrage de charge simple qui équilibrera les requêtes attribuées à différents serveurs . Dans Node.js, vous pouvez utiliser le module de cluster combiné à la stratégie d'équilibrage de charge Round-Robin pour réaliser l'équilibrage de charge.
Ce qui suit est un exemple de code d'équilibrage de charge simple :
const cluster = require('cluster'); const http = require('http'); const numCPUs = require('os').cpus().length; if (cluster.isMaster) { console.log(`主进程 ${process.pid} 正在运行`); // Fork workers. for (let i = 0; i < numCPUs; i++) { cluster.fork(); } cluster.on('exit', (worker, code, signal) => { console.log(`工作进程 ${worker.process.pid} 已退出`); }); } else { http.createServer((req, res) => { res.writeHead(200); res.end(`工作进程 ${process.pid} 返回 Hello World!`); }).listen(8000); console.log(`工作进程 ${process.pid} 已启动`); }
Dans ce qui précède Dans le code, nous utilisons d'abord le module cluster pour vérifier si le processus actuel est le processus principal. S'il s'agit du processus principal, nous utilisons la méthode cluster.fork() pour créer plusieurs processus de travail. Chaque processus de travail écoutera sur le port 8000 et renverra la chaîne « Hello World ! ». Si une demande arrive, le processus principal la distribuera aux différents processus de travail.
Après avoir écrit le code d'équilibrage de charge, nous pouvons l'exécuter via la commande suivante :
node app.js
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!