因此,我的公司正在讨论构建一个电子商务平台,该平台将服务于许多不同的客户。每个客户端都会有不同的外观和感觉,以及它自己的一组用户,但是支持代码(即:管理服务,认证服务器,结帐服务,可能管理页面等)以及一些用户将被共享,所以错误修复可以同时应用于所有网站,主管理员可以登录到所有网站。由于整个StackExchange网站集合(流量相当高)运行少量服务器(我相信两个),我想知道它将涉及通过一个webapp为多个不相关(但相似)的网站提供服务,或者甚至一个数据库。如何为一个相关但独立的网站系列构建可扩展的基础架构?
为了有一个数据库,我想每个表都有列标识实体属于哪个领域,并且每个SQL调用将按该列过滤。这似乎将成为维护噩梦,并且(对我来说不那么重要)DBA的地狱。
另一个选择,只有一个webapp,但多个数据库,我想这个领域可以绑定到一个特定的数据源,所有的非共享数据都可以被指定。然后,当发出任何请求时,可以加载相应的数据源,并且webapp将运行,就好像只有单个源一样。这将有一个额外的好处,即易于横向扩展,因为完全相同的Web应用程序,但不同的领域和数据源,可以在必要时产生。通过简单地复制webapp并移动数据库,网站也可以轻松移动到新的服务器上。
我想知道还有其他的可能性,以及具体的例子,如果他们在那里。
注意:我不是在谈论Twitter规模的可伸缩性,也不是硬件/语言等,而是设计方法和模式。