什么是多租户以及实现它的方法?

时间:2018-01-05 16:34:03

标签: architecture cloud multi-tenant software-design saas

我一直在阅读有关多租户的文章。有了如下的非常简单的陈述。我已阅读过几十个链接和网站,但都非常抽象。

  

..其中单个软件实例在服务器上运行并提供服务   多个租户。

我很高兴从30000英尺以上了解它,但我无法理解它的实施方式。

如果有人能帮助我理解一个堆栈(只是技术)和一个例子(可能是Salesforce)我如何实现它,我会更满意因为我很绝望知道它,因为几乎没有天。

请不要发布维基百科或任何网站的链接。我已经阅读了大部分内容但仍在进行搜索!

我知道这是一个非常微不足道的问题,但请不要因为很少的正当理由而投票,因为你可能会从这个问题中读出一些新答案!

2 个答案:

答案 0 :(得分:1)

对于多租户,可以由同一个应用程序提供多个安装。假设您有一个应用程序来组织客户拥有的产品库存,并将其销售给两个不同的客户:tenant1和tenant2。通过多租户,您的应用程序可以在单个服务器上的某个位置运行,并且仍然可以由您的两个客户访问。

目标是分离数据,以便tenant1不知道tenant2。通常,可以在数据库级别实现多租户。您有以下选择:

  1. 数据存储在同一个表中,但分离发生在一个额外的列中(所谓的鉴别器列):

    SELECT * FROM products WHERE tenant_id = 1;
    
  2. 数据存储在同一数据库服务器上,但存储在不同的模式中。在应用程序获取结果之前,需要选择适当的模式:

    USE tenant_1;
    SELECT * FROM products;
    
  3. 数据存储在不同的数据库服务器上。对于每个租户,需要保留连接池。

答案 1 :(得分:0)

只是您有多个客户使用同一个应用程序。大多数网站都是多租户。他们有多个客户使用相同的安装。这意味着您必须执行限制视图之类的操作,以便客户只能看到属于他/她组织的记录。

通常通过在所有表中添加客户ID等内容来实现,并确保查询始终按该客户ID进行过滤。