我想构建一个具有潜在大量io和计算重度逻辑的应用程序。
我了解到解决此问题的一种方法是使用node.js作为面向服务的客户端,然后将客户端请求传递给另一个后端服务以进行繁重的计算,然后以异步方式返回结果。
这意味着我的应用程序中至少有两个进程:node.js服务器和用另一种语言编写的后端服务。
我也想使用heroku,但是如何将这样的架构部署到heroku?我是否必须将所有Web和工作进程限制在同一个框中?例如,如果我有10个dynos,我希望其中2个运行节点Web服务器,另外8个运行我的后端服务作为worker,我该如何部署这样的架构?
答案 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?