2011-04-22 82 views
1

我有一個網站的規模越來越大,對於不同的用戶有不同的需求。到目前爲止,一個應用程序已經足以滿足所有用戶的需求。在同一個數據庫之上運行兩個應用程序

現在,我們正在成長,我想對代碼庫中分離出來,所以我有一個應用程序,以服務爲每個主要的使用情況。在這種情況下,當我說應用程序時,我特指Web應用程序。

我最初的想法是創建一個作爲Web服務來促進每個應用程序的所有功能的主API應用程序。然而,當我進一步思考這個問題時,我認爲使用HTTP作爲本質上的數據層實際上會導致性能下降,並且我寧願不拋出硬件$來解決這個問題。

在另一方面,我有非常強大的數據模型(使用ORM),我可以很容易地在複製到每個應用程序。只要我確信這個數據模型層對於每個應用程序都保持不變,我想我應該能夠期望每個應用程序的數據一致性。

還有什麼我應該關注的?我對這種方法的看法越多,我認爲越好 - Apache通常會爲每個客戶端生成當前應用程序的一個實例,因此多個應用程序已經同時訪問數據庫。這種架構應該是相同的,只是調用數據庫查詢的代碼會有所不同。

我還有什麼其他的騙子嗎?

根據記錄,該技術堆棧是標準燈。

回答

2

我認爲你是在正確的軌道上。

考慮任何有用的和複雜的網站,例如堆棧溢出。它在搜索問題的答案時有一個界面(應用程序)。在閱讀一個問題的答案時還有另外一個問題,而另一個答案則是回答問題。它還有另一種適用範式。它具有將問題遷移到其他網站的複雜能力。

然而,他們都愉快地共存。數據模型是關鍵,但保留並保護規範化數據完整性的代碼也是關鍵。

至於可擴展性,維基百科有一個類似的模式。通過使用四個(也許五個)數據庫服務器來解決縮放問題,一個是主服務器,另一個是從服務器。任何d/b服務器都可以響應讀取查詢,但只有主機接受寫入。當然,還有數百個運行「應用程序」的web服務器,並且還有數百個web緩存服務器來平衡性能。但是數據庫體系結構反映了99%以上的所有頁面點擊都是讀取的事實。

相關問題