Heroku:在同一个应用程序中组合node.js和java dynos

时间:2013-06-07 16:27:18

标签: heroku

我正在构建一个包含两个组件的web api服务:node.js和java。 每个请求都到达节点服务,节点服务又对Java服务进行API调用。我使用两个不同的heroku应用程序实现了这个架构,两个服务都实现为“web”dynos。它可以工作,但作为一个应用程序管理会更容易。

我不完全了解在同一个应用程序中组合这两个组件的选项和过程是什么。我想我可以在Procfile中创建两个条目,但我不明白请求路由如何工作。节点“web”dyno如何向java dyno发出请求?是否存在一些inter-dyno请求的机制?

1 个答案:

答案 0 :(得分:1)

Heroku只允许“web”dyno接受网络连接(好吧,HTTP至少......)。 docs特别说“Web进程类型是特殊的,因为它是唯一可以从Heroku的路由器接收HTTP流量的进程类型。其他进程类型可以任意命名。”

看一下类似的question,我的$ .02将是一个基于MQ的解决方案(或者像MQ-ish,像Redis pub / sub这样的东西)。如果API调用是异步的,那么它最有效。例如,您可以将Node应用程序发布到Redis通道,并拥有Java进程(通过Procfile中的'worker'dyno定义)。如果节点应用程序实际上需要结果作为其响应的一部分......嗯...我想你必须构建一些相反的方向,并在消息或通道结构中包含足够的数据以匹配响应原始请求。

在这种情况下,您可能最好坚持使用多应用程序配置。虽然我没有测试那里提到的FIFO解决方案,但我不清楚它是如何工作的,因为dynos彼此隔离。