2012-02-01 42 views
3

在Heroku Cedar堆栈的文档中看不到任何内容,表明这是可能的,但我想知道是否可以在单个Heroku应用程序上使用单个代码库来装载多个服务(例如机架应用程序),根据某些条件获取发送给它们的请求。在一个heroku应用程序中独立缩放的服务

我正在寻找类似于我可以告诉机架应用程序挂载到特定url的方法。理想情况下,这将允许我独立扩展这些服务,但为它正在执行的任何工作使用相同的代码库,模型等。

例如,我可能有一个api服务,只处理API调用。这可能是一个简单的机架应用程序,应该具有快速的响应时间,并且能够独立于为主站点提供服务的Web应用程序进行扩展。它可以使用具有特定路径的相同域,也可以使用不同的域以某种方式映射到在特定端口上运行的机架应用程序。

任何人都知道这种事情是否可能?我知道替代方案(让我的代码凝聚并在不同的应用程序之间共享),但我首先将其作为可能性进行探索。

+0

什么意思扩大在这种情况下的服务?我会考虑添加一个dyno,但这显然会影响所有服务。无论如何,我对机架了解不多,所以不知道如何安装,但编写机架应用程序作为端点只需查看url,然后调用机架应用程序(即它是一个lambda一个基于类似'env ['HTTP_HOST']'的转发调用的case语句) – 2012-02-01 04:25:09

+0

我认为使用标准的Heroku产品时,可扩展性纯粹是在应用程序级别设置的。我怀疑有没有一种方法可以在没有heroku干预的情况下在应用中扩展这个功能(但是价格合适,谁知道呢?)。如果你从Heroku得到一个明确的答案,请回答你自己的问题。 – 2012-02-01 04:31:39

+0

雅我基本上是指与测功机缩放。新的Cedar协议栈允许你使用[Procfile](http://devcenter.heroku.com/articles/procfile)以这种方式扩展进程,因此我可以定义一个'api'进程并添加更多的dynos它。我不知道该怎么做,是路由到它的网络流量。 – brad 2012-02-01 13:05:00

回答

0

你为什么要这样做?如果您将相同的代码部署到Heroku上的多个应用程序,则可以共享您的代码,逐个扩展它们,为它们提供不同的端点URL,并且每个应用程序每月免费获得750小时。

你的建议听起来很复杂且容易出错,所以要保持简单。

如果你需要在它们之间共享一个数据库,那也没关系:http://neilmiddleton.com/sharing-databases-between-heroku-applications/

+0

我认为我的建议实际上会更简单。我可以在我的Rails应用程序中定义一个Rack应用程序,然后单独安装它。它可以为db工作加载'ActiveRecord',但不需要整个Rails栈,所以它应该很快。你的方式我必须保持宝石,并确保我的部署同步,以避免迁移问题,过时的代码等... – brad 2012-02-01 13:07:51

+0

公平的。我只是说我已经为Heroku部署了数百个应用程序,而且我不会接近你的方法。 – 2012-02-01 14:13:49

+0

亚,所以看来我想做的不可用。所以...如果我们要将相同的代码库用于两个不同的应用程序。你只是设置了一些确定Rack应用程序启动的配置变量吗?即'ENV ['RACKUP'] ='api.ru'' – brad 2012-02-02 19:54:44

相关问题