2

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

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

4

1 回答 1

1

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

看一个类似的问题,我的 $.02 将是基于 MQ 的解决方案(或类似 MQ 的东西,如 Redis pub/sub)将是可行的方法。问题是,如果 API 调用是异步的,它的效果最好。例如,您可以让 Node 应用程序发布到 Redis 通道,并让您的 Java 进程(通过您的 'worker' dyno 定义Procfile)。如果 Node 应用程序确实需要将结果作为其响应的一部分......嗯......我想你必须构建一些相反方向的东西,并在消息或通道结构中包含足够的数据来匹配响应与发起请求。

在这种情况下,您最好还是坚持多应用配置。虽然我没有测试那里提到的 FIFO 解决方案,但我不清楚它是如何工作的,因为测功机是相互隔离的。

于 2013-08-01T16:59:27.367 回答