使用服务器到服务器通信的另一台服务器上的Nodejs子进程

时间:2020-10-19 11:15:25

标签: node.js distributed-system

我想使用节点js从一台服务器运行到另一台服务器来运行子进程。我的进程运行太重,导致主服务器工作缓慢,因此我想在另一台服务器上运行繁重的进程,该服务器将执行繁重的任务,例如数据修改并返回该数据的缓冲区,但我找不到类似的东西

例如,我有运行我的网站的服务器A,并且用户正在使用该服务器共享其内容。当用户的流量激增时,由于图像,视频上传以及基于基本图像,视频和为网站内容提供服务的pdf报告等数据,我的服务器将变慢。我想在服务器B上执行这些任务,以便服务器A仅适用于数据服务和流量管理。

1 个答案:

答案 0 :(得分:1)

显然,这时您可能需要将Web服务器前端路由拆分为不同的工作服务器。

让我们假设您使用Nginx作为网站前端。如果不是这样,那么第一步将是设置nginx Webfront。

1-如果尚未这样做,则使用静态内容和节点服务器路由的不同规则直接从nginx提供所有公共静态内容(例如pdf文件,视频,图像等):

基本的东西

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_set_header   X-Forwarded-For $remote_addr;
        proxy_set_header   Host $http_host;
        proxy_pass         http://127.0.0.1:5000;
    }

    location /static {
        root /dir/to/my/static/files; # here you have your videos, images, etc.
    }
}

2-现在,如果需要将节点服务器分成2个服务,则只需创建2个(或更多)nginx代理规则:

server {
    listen 80;
    server_name example.com;

    location /api {
        proxy_set_header   X-Forwarded-For $remote_addr;
        proxy_set_header   Host $http_host;
        proxy_pass         http://127.0.0.2:5000;  # server 2
    }

    location / {
        proxy_set_header   X-Forwarded-For $remote_addr;
        proxy_set_header   Host $http_host;
        proxy_pass         http://127.0.0.1:5000;  " server 1
    }

    location /static {
        root /dir/to/my/static/files;
    }
}

这样,example.com/api/*路由将转到您的辅助节点服务器(在IP 127.0.0.2上),example.com/static将由Nginx直接提供超快的速度,而未映射的路由将由127.0.0.1上的默认主节点服务器提供服务。

有很多设置代理和优化Nginx的方法,例如,它可以循环方式遍历节点服务器池,还可以压缩数据并使用HTTP / 2之类的协议来获取Nginx。卸载较慢的基于节点的Web服务器(即Express)。