迁移单租户到多租户应用程序

问题描述 投票:0回答:1

我们正在将一个单租户应用程序升级为一个多租户(每个客户都有单独的DB)SaaS应用程序。我的职责是设计租户供应部分。我正在考虑以下步骤。

  1. 当我们的管理员将安装我们的软件时,应该总是创建一个DB.这一步的论据是,只有当至少一个租户出现时,管理员才会安装软件。所以,在安装软件的过程中创建一个单独的db应该是有意义的。

  2. 共同的元数据将被存储在一个共同的地方。我们正在考虑使用ZooKeepar来存储共同的元数据。

  3. 每个租户将被赋予一个子域。例如www..samplaTenent.com 。这个 tenant_id 将从每个请求中的 URL 中提取出来,并将用于识别特定的租户和各自的 DB。

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

使用的技术

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

现在,我想听听专家对建议的解决方案的意见。有没有其他方法可以让我们建立一个强大的、安全的、可扩展的SaaS应用?

谢谢。

multi-tenant
1个回答
1
投票

IMHO,我建议你应该有一个Sibgle代码库,可以处理多租户方面的问题,无论是db的配置,每个租户的设置等。我不知道你现在有什么代码库。因此,你可以把供应部分做得如下。

  1. 您可以通过获取所有的先决信息来提供一个新的租户。你可以自动生成这个租户的URL,也可以让租户选择一个,在后者,必须对URL和租户组合进行验证。

  2. 在这一步完成后,你可以在服务器上有一些脚本,克隆一个主代码库,推出一个新的租户特定的db。这样事情就自动完成了。

  3. 下一步将是在你的公共或共享db中存储租户db和应用程序的详细信息,这样当租户登录时,你可以将他重定向到他的URL。如果你想从主应用中处理所有的租户和他的用户认证,就需要db细节。

  4. 有一个单一代码库的主要感知优势是,定制和配置可以在一个地方,便于代码维护和错误修复或增强。虽然这不一定适用于所有场景,但从长远来看,这是我觉得比较合适的方案。

关于多租户的问题,请大家分享自己的想法或发表其他疑问。

© www.soinside.com 2019 - 2024. All rights reserved.