什么是多租户及其实现方法?

cha*_*uru 3 architecture cloud saas software-design multi-tenant

我一直在阅读有关多租户的文章。像下面这样的非常琐碎的陈述。我已经阅读了数十个链接和网站,但都非常抽象。

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

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

如果有人可以通过单个堆栈(只是技术)和一个示例(可能是 Salesforce)帮助我理解我如何实现它,我会更满意,因为我几乎几天就迫不及待地想知道它了。

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

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

Far*_*ill 6

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

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

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

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

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