【问题标题】:Migrating Single-Tenant to Multi-Tenant application将单租户迁移到多租户应用程序
【发布时间】:2013-12-23 12:02:10
【问题描述】:

我们正在将单租户应用程序升级为多租户(每个客户端的单独数据库)SaaS 应用程序。我的职责是设计租户配置部分。我正在考虑以下步骤。

  1. 虽然我们的管理员将安装我们的软件,但应始终创建一个数据库。此步骤的论据是管理员将仅在至少有一个租户出现时安装该软件。因此,在我们的软件安装过程中创建单个数据库应该是有意义的。

  2. 通用元数据将存储在一个通用位置。我们正在考虑使用 ZooKeepar 来存储常见的元数据。

  3. 将为每个租户分配一个子域。例如 www..samplaTenent.com 。此tenant_id 将从每个请求中的 URL 中提取,并将用于标识特定租户和相应的 DB。

  4. 如果需要配置更多租户,管理员将通过用户界面创建新的数据库实例。

使用的技术:

  1. Java 6
  2. Struts 框架
  3. MS SQL

现在,我想就建议的解决方案征求专家意见。有没有其他方法可以构建强大、安全且可扩展的 SaaS 应用程序?

谢谢。

【问题讨论】:

    标签: multi-tenant


    【解决方案1】:

    恕我直言,我建议您应该有一个可以处理多租户方面的单一代码库,例如数据库配置、每个租户的设置等。我不知道您现在拥有的代码库。因此,您可以按如下方式进行配置部分,

    1. 您通过获取所有先决条件信息来配置新租户。您可以自动为该租户生成 URL,也可以让租户在后者中选择一个,但必须对 URL 和租户组合进行验证。

    2. 在此步骤完成后,您可以在服务器上使用一些脚本来克隆主代码库并推出新的租户特定数据库。所以事情是自动化的。

    3. 下一步是将租户数据库和应用程序详细信息存储在您的公用或共享数据库中,以便在租户登录时,您可以将他重定向到他的 URL。如果您想从主应用处理所有租户及其用户身份验证,则需要数据库详细信息。

    4. 拥有单一代码库的主要优势是可以在一个地方进行自定义和配置,从而便于代码维护和错误修复或增强。虽然这可能不适用于所有场景,但从长远来看,这是我认为更合适的选择。

    请分享您的想法或发布您对多租户可能有的其他疑问。

    【讨论】:

      猜你喜欢
      • 2019-02-25
      • 1970-01-01
      • 1970-01-01
      • 2020-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多