2012-02-01 116 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