我有一个产品(比如X)托管在单个Amazon EC2实例中,由三个客户(比如A,B和C)使用。目前,我有3个数据库和3个代码库通过子域访问,如:a.productx.com,b.productx.com和c.productx.com
从技术上讲,我需要为客户A,B和C提供不同的数据库,但代码库可以是相同的(数据库配置部分除外)。拥有单个代码库和三个数据库是明智的吗?例如:如果客户从a.productx.com登录,我将使用A数据库;当它是b.productx.com时,我将使用B数据库;当它是c.productx.com时,我将使用C数据库。 代码库对所有人来说都很常见。
它可以节省很多时间(简单的升级,维护)和空间,但我不确定是否会有任何性能损失。换句话说,虽然客户会通过不同的子域命中服务器,但最终它们都将从单个代码库中提供服务。与具有多个代码库相比,这是否会导致性能问题?我不是服务器/系统人员,想要你的建议。
谢谢!
答案 0 :(得分:0)
与性能的不同之处在于,不是拥有3台服务器,每台服务一台客户,而是有一台服务器处理所有3位客户的请求。如果您的3台服务器上已经有足够的负载来显着利用它们(CPU或内存),那么迁移到只有一台服务器(相同大小)会对性能产生负面影响。
因此,如果您的服务器负载很轻,您可以在一台相同大小的服务器上处理所有3个客户。或者,您可能需要使用更大的服务器(更多CPU,更多RAM)。
至于您的特定设置,可能很难仅使用一台服务器并连接到正确的数据库,具体取决于您的用户即将到来的域。您需要考虑如何为10,20,100个客户扩展您的解决方案。也许考虑只使用一个数据库,但设计它来处理多个客户,即每个数据也将客户ID存储在它旁边。