因此,我的公司正在討論構建一個電子商務平臺,該平臺將服務於許多不同的客戶。每個客戶端都會有不同的外觀和感覺,以及它自己的一組用戶,但是支持代碼(即:管理服務,認證服務器,結帳服務,可能管理頁面等)以及一些用戶將被共享,所以錯誤修復可以同時應用於所有網站,主管理員可以登錄到所有網站。由於整個StackExchange網站集合(流量相當高)運行少量服務器(我相信兩個),我想知道它將涉及通過一個webapp爲多個不相關(但相似)的網站提供服務,或者甚至一個數據庫。如何爲一個相關但獨立的網站系列構建可擴展的基礎架構?
爲了有一個數據庫,我想每個表都有列標識實體屬於哪個領域,並且每個SQL調用將按該列過濾。這似乎將成爲維護噩夢,並且(對我來說不那麼重要)DBA的地獄。
另一個選擇,只有一個webapp,但多個數據庫,我想這個領域可以綁定到一個特定的數據源,所有的非共享數據都可以被指定。然後,當發出任何請求時,可以加載相應的數據源,並且webapp將運行,就好像只有單個源一樣。這將有一個額外的好處,即易於橫向擴展,因爲完全相同的Web應用程序,但不同的領域和數據源,可以在必要時產生。通過簡單地複製webapp並移動數據庫,網站也可以輕鬆移動到新的服務器上。
我想知道還有其他的可能性,以及具體的例子,如果他們在那裏。
注意:我不是在談論Twitter規模的可伸縮性,也不是硬件/語言等,而是設計方法和模式。