2012-04-15 182 views
1

我有一個在Heroku中託管的Rails 3.0應用程序。我想建立一個不同的Rails的服務器來運行重後端作業(掃描用戶配置文件,項目和創建的建議,並將它們存儲在Redis的數據庫),使其:在Heroku上爲Rails應用程序設置後端服務器

  • 不會堵塞我的前末端服務器(即,如果我同一個前端Rails的服務器上運行的後端進程,這將需要更長的時間來響應用戶的請求等)
  • 讓我有Rails的類和方法

我的理解是:

  • 添加更多工人代理將不會分離前端和後端進程
  • 添加When或Delayed_Job gems將不允許我在單獨的後端服務器上運行。

我認爲這種情況應該定期爲Rails出現。我應該怎麼做呢?

非常感謝。

回答

1
  • 「clog」「前端數據庫」是什麼意思?你可能只是有一個常規的數據庫,你應該實施緩存和周到的查詢,以避免徵稅。使用Resis和Redis進行任務以避免向SQL數據庫添加負載。
  • 通過加載環境,您可以在rake任務中訪問「Rails類和方法」。例如:task :do_this => :environment { ... }
  • 每個dyno獨立於其他dyno,無論它們是Web工作者(可用於HTTP請求)還是工作者dynos(對於其他任何東西)。

您確實只需要創建rake任務並將任何其他服務(如Clockwork)添加到您的Procfile(僅限Cedar堆棧)以使其全部在Heroku上運行。

+0

非常感謝!其實我的意思是「堵塞我的前端服務器」。我的意思是:如果我需要在相同的Rails前端服務器上運行大量的工作,比如索引,匹配對象,它會減慢我的前端服務器。這就是爲什麼我想建立一個獨立的後端服務器的原因。在這裏添加一個worker dynos將無濟於事,因爲如果計劃的索引作業運行,它可能會佔用所有的dynos。現在,對於我的後端服務器,我想要訪問所有的Rails功能(即,我應該能夠從ActiveRecord等繼承) – AdamNYC 2012-04-15 22:18:23

+0

工作人員在單獨的進程中運行dynos - 因此它們不會影響前端。然而,你必須考慮你的數據庫,就好像這兩個應用程序共享那麼這可能是你的瓶頸。 – 2012-04-16 08:21:11

+0

你不瞭解Heroku的工作方式。單個進程不會運行多個dynos。無論上下文還是任務,dyno都會運行應用程序的單個實例。處理HTTP請求是像Sinatra和Rails這樣的框架處理的一項任務,但您也可以在通過'heroku run ...'觸發的單獨的dynos中運行一次性Ruby腳本。 Heroku沒有服務器的概念 - 他們甚至不用硬件,因爲他們自己在AWS上運行。 – coreyward 2012-04-16 20:54:10

相關問題