如何实现多租户?

时间:2016-01-14 06:42:08

标签: architecture cloud multi-tenant

我是云计算新手。虽然学习基本概念时遇到困难 - 如何设计一个系统,其中多个用户可以同时使用单个软件实例(SaaS)?

我理解多租户意味着什么,但无法理解如何设计或如何实现这一点。即如果我在java中编写了简单的程序(假设)并且我想让它成为多租户,那么需要进行哪些更改和/或配置?

谢谢。

2 个答案:

答案 0 :(得分:2)

根据我使用创建/迁移应用程序以获得多租户意识的经验,以下是通常遵循的步骤。我们可以考虑转换CRM [客户模块]

数据库更改

  
      
  • 为每个核心业务数据表[客户,故障单,支持,联系人等...]
  • 添加租户ID   
  • 将现有的公司数据分组到不同的客户,这是一项有点痛苦的任务,但可以通过将现有客户映射为   租户然后在核心中进行相应的tenantid更新   表。
  •   
  • 分区,如果需要,如tenant1可能属于分区1 [美国],新加坡的其他一些租户可能会被放入分区   亚洲,将进行设置并移动数据
  •   
  • 将每个客户的自定义设置数据分组为租户的自定义设置并存储在核心元数据数据库中。这还包括   白色标签也是如此。
  •   
  • 客户特定的自定义字段或扩展数据应存储在具有相应租户ID值的数据库中
  •   

应用程序更改

  
      
  • 在登录之前和之后为租户建立上下文,然后在登录之前确定租户希望其用户访问的模式   登录[一个租户想要广告,另一个可能需要谷歌等...]
  •   
  • 始终使用拦截每个查询的基本过滤器隔离所访问的数据,并确保租户数据的完整性
  •   
  • 管理每个租户的各种数据分区
  •   
  • 设置代码以容纳存储在db
  • 中的白色标签内容   
  • 对服务进行更改,以确保服务包含随时调用的自定义特定业务规则/逻辑   必需的。
  •   

您想要的功能越复杂,我们就会有更多的讨论。请分享您将要关注的任何特定功能,以便对其进行详细讨论。

HTH

答案 1 :(得分:1)

多租户是一个相当广泛的期限。

最简单的说,你需要照顾

  1. 为用户创建帐户并确保用户只能查看自己的数据。
  2. 创建群组/帐户的概念。一个帐户有多个用户。帐户中有人是管理员等。
  3. 确保一组用户的活动不会影响另一组用户。例如一个用户不应该独占所有可用于您的应用程序的资源。你可以根据自己的情况实现这一目标让我们说一个视频流媒体网站;您将控件放在适当位置,以便一个用户不会启动1000个流,从而影响对其他用户的服务。
  4. 正如您在上面所看到的,上述大部分内容并不仅限于多租户。