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

Nodejs Child Process on another server using server to server communication

我想运行使用node js的子进程从一台服务器到另一台服务器。我有一个太繁重的进程 运行 导致我的主服务器工作缓慢所以我想 运行 我的繁重进程在另一台服务器上执行数据修改和 return 等繁重任务该数据的缓冲区,但我找不到类似的数据。

例如,我的服务器 A 正在 运行 宁我的网站,用户正在使用它共享他们的内容。当用户的流量跃升时,我的服务器会变慢,因为图像、视频上传以及基于基本图像、视频和服务网站内容生成的 pdf 报告等数据。我想在服务器 B 上执行这些任务,这样服务器 A 将只用于数据服务和流量管理。

显然此时您可能需要将网络服务器前端路由拆分到不同的工作服务器中。

假设您使用 Nginx 作为网站前端。如果你不是,那么你的第一步就是设置一个 nginx webfront。

1 - 如果还没有这样做,使用静态内容和节点服务器路由的不同规则直接从 nginx 提供所有 public 静态内容(如 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 以极快的速度直接提供服务,而 non-mapped 路由将由 127.0.0.1 上的默认主节点服务器提供服务。

设置代理和优化 Nginx 的方法有很多种,例如,它可以以 round-robin 方式通过节点服务器池,您还可以压缩数据并使用 HTTP/2 以减轻较慢的 node-based 网络服务器(即 Express)的负载。