Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在节点JS集群之间划分快速路由_Node.js_Multithreading_Express_Nginx - Fatal编程技术网

Node.js 在节点JS集群之间划分快速路由

Node.js 在节点JS集群之间划分快速路由,node.js,multithreading,express,nginx,Node.js,Multithreading,Express,Nginx,我在一个Node JS应用程序中有大量路由,我正试图扩展到多个CPU核心(通过NodeJS集群) 我想到的计划是让不同的工人处理不同的express.js路线。例如: /api/ requests handled by WorkerA /admin/ handled by WorkerB /blog/ handled by WorkerC etc 仅仅使用带工作者ID的条件是不够的,因为请求仍然可能到达错误的工作者。另外,所有进程都在同一个端口上运行,因此我不能只从nginx内部匹配和代理传递

我在一个Node JS应用程序中有大量路由,我正试图扩展到多个CPU核心(通过NodeJS集群)

我想到的计划是让不同的工人处理不同的express.js路线。例如:

/api/ requests handled by WorkerA
/admin/ handled by WorkerB
/blog/ handled by WorkerC
etc
仅仅使用带工作者ID的条件是不够的,因为请求仍然可能到达错误的工作者。另外,所有进程都在同一个端口上运行,因此我不能只从nginx内部匹配和代理传递URL


在这一点上,我正在考虑交换集群路由(从主节点到辅助节点),以匹配URL和路由到正确的辅助节点,而不是仅仅使用内置的循环方法。但这似乎有点骇人听闻,我想知道是否有其他人已经解决了这个问题,或者可能有其他想法。

我的解决方案是在不同的端口上运行多个express应用程序,并在前端设置一个Nginx服务器来代理请求

假设您有三个express应用程序,每个应用程序将处理特定类型的路由器,并在单独的端口上侦听(
8081
8082
8083
),当然,它们应该以群集模式运行:

//API app used to handle /api routing
apiApp.listen(8081);

//Admin app used to handle /admin routing
adminApp.listen(8082);

//Blog app used to handle /blog routing
blogApp.listen(8083);
并配置Nginx服务器以代理请求:

server {

    # let nginx server running on a public port 
    listen       80;

    location /api {
       proxy_pass http://127.0.0.1:8081
    }

    location /admin {
       proxy_pass http://127.0.0.1:8082
    }

    location /blog {
       proxy_pass http://127.0.0.1:8083
    }
}

proxy\u pass
简单地告诉nginx将请求转发到/api到侦听
8081
的服务器。你可以查看完整的文档

很烦人,但我想这是唯一的选择:|你们有没有重新访问过这个文档并找到其他选择?希望通过路由和集群模块的组合来处理这个问题@Antoine你们有没有重新考虑过这个问题并找到其他的选择?希望通过路由和集群模块的组合来处理这个问题