2012-04-04 44 views
2

我希望得到關於Rails 3應用程序體系結構的一些意見。Rails 3應用程序的體系結構想法

目前我們有一個Rails 3.0.7應用程序,允許用戶通過我們連接的媒體設備管理在電視上顯示的內容(促銷,視頻,菜單,體育統計等)。我們有超過1000個(和越來越多)這些連接的設備每分鐘輪詢我們的系統以檢查其內容的變化,並且每15分鐘報告其統計數據(例如,CPU,內存等)。

我們的系統的主要優勢之一是,作爲管理員,我們可以更改單個內容項的外觀/工作方式,並將其分發到所有使用它的設備。此功能的缺點是當我們進行更改時,我們的系統暫時無法使用,因爲所有連接的設備都會在同一時間要求更新。

因此,我們計劃重新構建我們的應用程序,以便內容管理。系統在設備與應用程序通信時不受影響。有可能有幾十種方法來解決這個問題。一種方法是建立一個單獨的Rails應用程序,僅用於設備獲取他們應該顯示的內容,管理員可以監視等。它可以與當前內容管理共享模型,數據庫等。系統。這種方式可能難以管理模型,遷移等。我顯然不想複製模型。如果內容管理也是理想的。系統仍然可以顯示帳戶設備的狀態,以便帳戶管理員可以查看他們的設備是否在線等。

我在考慮某種類型的隊列機制很適合像resque/redis,因爲當更改在內容管理。系統,我們可以排隊設備實例可以拿起並處理的作業。

我想拋棄這個問題給社區,以便從其他可能已經工作或仍在使用連接設備的系統工作的人那裏獲得意見和想法。預先感謝您的貢獻。我很感激!

Louis

回答

0

1000+客戶需要約1個需求。每分鐘聽起來不像負載,需要對正常操作進行架構更改。一般來說,簡單的單應用程序架構從長遠來看將更容易維護,所以您應該堅持下去,直到遇到無法解決的問題。

如果性能/響應速度是主要問題,爲什麼不將緩存代理服務器添加到堆棧?

其他簡單的選項是在兩臺服務器上安裝應用程序,並使用一個用於管理員和其他客戶端設備。請注意,這隻有在數據庫不是瓶頸時纔有所幫助。

+0

嗨亞歷克斯,謝謝你的迴應! 當我們的系統發生變化,影響所有連接的設備時,Web服務調用設備進行更新的CPU和數據庫密集型。這就是說我認爲我們需要分開數據庫。考慮到讀/寫比率,我們認爲主/從可以很好地工作。將它與兩個應用程序(管理員和設備)結合在一起,在這兩個應用程序中,兩個應用程序分別從slave/master讀取/寫入,然後我期待更好的性能,更不用說改進的體系結構。 我沒想過高速緩存代理服務器。這是一個有趣的想法。 – lgates 2012-04-06 14:02:24