在 Node JS 集群之间划分快速路由

2024-01-26

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

我的计划是让不同的工作人员处理一组不同的express.js 路线。例如:

/api/ requests handled by WorkerA
/admin/ handled by WorkerB
/blog/ handled by WorkerC
etc

仅仅使用带有工作人员 ID 的条件是不够的,因为请求仍然可能到达错误的工作人员处。另外,这些进程都在同一个端口上运行,所以我不能只在 nginx 内部的 URL 上匹配和 proxy_pass 。

此时,我正在考虑交换集群路由(从主节点到工作节点)以匹配 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_pass只是告诉 nginx 将请求转发到 /api 到正在侦听的服务器8081。您可以查看完整文档here http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Node JS 集群之间划分快速路由 的相关文章

随机推荐