【发布时间】:2012-02-01 03:44:22
【问题描述】:
我在 Heroku Cedar 堆栈上的文档中看不到任何表明这是可能的,但我想知道是否可以在单个 Heroku 应用程序上使用单个代码库来安装多个服务(例如机架应用程序)根据某些条件获取发送给他们的请求。
我正在寻找类似于我可以告诉机架应用程序安装在特定url 的方式。
理想情况下,这将允许我独立扩展这些服务,但对它正在做的任何工作使用相同的代码库、模型等。
例如,我可能有一个仅处理 api 调用的api 服务。这可能是一个简单的机架应用程序,它应该具有快速的响应时间,并且能够独立于服务于主站点的 Web 应用程序进行扩展。它可以使用具有特定路径的相同域,也可以使用以某种方式映射到在某个特定端口上运行的机架应用程序的不同域。
有人知道这种事情是否可能吗?我知道替代方案(对我的代码进行优化并在不同的应用程序之间共享),但我首先将其作为一种可能性进行探索。
【问题讨论】:
-
在这种情况下扩展服务意味着什么?我会认为它就像添加一个测功机,但这显然会影响所有服务。无论如何,我对机架不太了解,所以不确定安装是如何工作的,但是将机架应用程序编写为仅查看 url 然后调用机架应用程序的端点将是微不足道的(即它是一个带有仅基于
env['HTTP_HOST']) 之类的内容转发调用的 case 语句 -
我认为使用标准 Heroku 产品,可扩展性纯粹是在应用程序级别设置的。我怀疑是否有一种方法可以在应用程序内进行扩展而无需 heroku 干预(但价格合适,谁知道呢?)。如果您从 Heroku 得到明确的答案,请回答您自己的问题。
-
是的,我基本上是指使用测功机进行缩放。新的 Cedar 堆栈允许您使用 Procfile 以这种方式扩展流程,因此我可以定义一个
api流程并为其添加更多测功机。我不知道该怎么做,就是将网络流量路由到它。 -
请记住,每个应用程序只有一个外部 $PORT 可供其他人连接,因此您需要弄清楚如何解决这个问题。
-
这就是我的问题的重点。