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

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

我已经阅读有关多租户的文章有一段时间了。使用如下非常琐碎的语句。我读过几十个链接和网站,但都很抽象。

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

我在 30000 英尺以上的高度很容易理解它,但我无法理解它的实现方式。

如果有人可以帮助我理解单个堆栈(只是技术)和示例(可能是 Salesforce)我如何实现它,我会更满意,因为我近几天以来都迫切想知道它。

请勿发布维基百科或任何网站的链接。我已经阅读了其中的大部分内容,但狩猎仍在继续!

我知道这是一个非常琐碎的问题,但请不要因为很少的充分理由而否决投票,因为您可能会从这个问题中读到一些新答案!

architecture cloud multi-tenant software-design saas
3个回答
7
投票

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

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

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

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

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


4
投票

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

通常通过将客户 ID 之类的内容放入所有表中,并确保查询始终按该客户 ID 进行过滤来实现。


0
投票

我最近一直在探索构建基于多租户的 SaaS,我发现这篇文章非常有帮助。清晰简洁,带有实现多租户的代码示例。

使用 PostgreSQL 实现多租户

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