【问题标题】:How to achieve multi tenancy?如何实现多租户?
【发布时间】:2016-01-14 06:42:07
【问题描述】:

我是云计算新手。在学习基本概念的同时,如何设计一个可供多个用户同时使用的软件 (SaaS) 的单个实例的系统?

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

谢谢。

【问题讨论】:

    标签: architecture cloud multi-tenant


    【解决方案1】:

    根据我在创建/迁移应用程序以实现多租户感知方面的经验,以下是通常遵循的步骤。我们可以考虑转换一个CRM [客户模块]

    数据库更改

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

    应用变更

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

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

    HTH

    【讨论】:

      【解决方案2】:

      多租户是相当广泛的术语。

      最简单的,你需要照顾

      1. 为用户创建帐户并确保用户只能看到自己的数据。
      2. 创建组/帐户的概念。一个帐户有多个用户。帐户中的某个人是管理员等。
      3. 确保一组用户的活动不会影响另一组用户。例如一个用户不应该能够独占您的应用程序可用的所有资源。您可以根据自己的情况实现这一点。假设一个视频流媒体网站;您设置了控制,以便一个用户不会启动 1000 个流,从而影响对其他用户的服务。

      正如您在上面看到的,上面的大部分内容并不限于多租户。

      【讨论】:

      • 感谢阿米特的观点。非常感谢您的宝贵时间。
      • 让我们看看其他人是否可以分享他/她的观点。
      猜你喜欢
      • 2011-08-05
      • 1970-01-01
      • 2020-11-21
      • 1970-01-01
      • 2018-09-03
      • 1970-01-01
      • 2018-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多