单个heroku应用程序上的多个工作人员/ Web进程

tob*_*ius 28 multiple-instances heroku worker node.js

有没有办法配置多个工作者和/或Web进程在单个Heroku应用程序容器中运行?或者这是否必须分解为多个Heroku应用程序?

例如:

worker: node capture.js
worker: node process.js
worker: node purge.js
web: node api.js
web: node web.js
Run Code Online (Sandbox Code Playgroud)

Yuv*_*dam 44

所有进程必须具有唯一的名称.此外,名称webworker无关紧要,没有特殊含义.唯一具有重要名称的web流程是流程,如Heroku文档中所述:

Web进程类型是特殊的,因为它是唯一将从Heroku的路由器接收HTTP流量的进程类型.其他过程类型可以任意命名.- (https://devcenter.heroku.com/articles/procfile)

所以你想要Procfile这样:

capture: node capture.js
process: node process.js
purge: node purge.js
api: node api.js
web: node web.js
Run Code Online (Sandbox Code Playgroud)

然后,您可以单独扩展每个进程:

$ heroku ps:scale purge=4
Run Code Online (Sandbox Code Playgroud)

  • 在这个例子中,有没有办法将流量路由到'api'进程? (21认同)
  • 看起来我们将不得不拥有一个“ Web”代理,它将“ / api / *”请求流式传输到“ api”工作程序,并将所有其他请求流式传输到“ app”工作程序。当这些工作程序存在多个实例时,这可能会变得有些复杂。然后,您需要实施或npm-install负载均衡器。或者,您可以只运行多个heroku应用程序,但是现在存储库组织变得有些复杂(子模块?)。 (2认同)