如何在heroku上部署和运行多语言多进程应用程序

时间:2016-03-16 19:27:11

标签: node.js web-services express heroku web-applications

我想构建一个具有潜在大量io和计算重度逻辑的应用程序。

我了解到解决此问题的一种方法是使用node.js作为面向服务的客户端,然后将客户端请求传递给另一个后端服务以进行繁重的计算,然后以异步方式返回结果。

这意味着我的应用程序中至少有两个进程:node.js服务器和用另一种语言编写的后端服务。

我也想使用heroku,但是如何将这样的架构部署到heroku?我是否必须将所有Web和工作进程限制在同一个框中?例如,如果我有10个dynos,我希望其中2个运行节点Web服务器,另外8个运行我的后端服务作为worker,我该如何部署这样的架构?

2 个答案:

答案 0 :(得分:0)

你应该看看MEAN堆栈。 http://mean.io/#!/

Mongo (或任何数据库真的,对于heroku我推荐Postgres,如果你不想要NoSQL数据库)。

Express 这是您处理从前端到数据库的通信的后端

Angular 超强大的前端单页应用程序,拥有庞大的社区和大量附加组件和好东西。

节点使这一切成为可能的服务器。

全部用javascript编写。

Heroku本身是一个类似于AWS服务器的平台,它上面有一个节点,允许您运行Express。您将构建应用程序,然后使用heroku命令行在创建帐户后将应用程序部署到其服务器。 Heroku还将通过heroku附加组件托管您的数据库。

https://devcenter.heroku.com/articles/getting-started-with-nodejs

Dynos将根据需要动态处理您的进程。 Node运行你的后端(Express)并不像服务那样​​运行。想想像Apache这样的Node,它就是运行你的服务器的东西。 Express是在该服务器上运行的后端,可以运行异步,因此您可以根据需要运行任意数量的进程,这就是dynos将开始为您进行负载平衡的地方。

答案 1 :(得分:0)

首先,如果您确实需要多种语言,可以使用heroku-buildpack-multi

实际上,如果适合您,您的Web dyno和您的工作人员dynos都可以是node.js。在这种情况下,您可以使用here所述的确切设置。

无论如何,您可以使用heroku ps:scale单独配置任意数量的Web和Worker dynos,如Heroku scaling中所述。另请参阅What is a Heroku Dyno?