我已经阅读有关多租户的文章有一段时间了。使用如下非常琐碎的语句。我读过几十个链接和网站,但都很抽象。
..其中软件的单个实例在服务器上运行并提供服务 多个租户。
我在 30000 英尺以上的高度很容易理解它,但我无法理解它的实现方式。
如果有人可以帮助我理解单个堆栈(只是技术)和示例(可能是 Salesforce)我如何实现它,我会更满意,因为我近几天以来都迫切想知道它。
请勿发布维基百科或任何网站的链接。我已经阅读了其中的大部分内容,但狩猎仍在继续!
我知道这是一个非常琐碎的问题,但请不要因为很少的充分理由而否决投票,因为您可能会从这个问题中读到一些新答案!
通过多租户,同一个应用程序可以为多个安装提供服务。假设您有一个用于组织客户拥有的产品库存的应用程序,并且您将其销售给两个不同的客户:租户 1 和租户 2。通过多租户,您的应用程序可以在单个服务器上的某个位置运行,并且仍然可以被您的两个客户访问。
目标是分离数据,使租户 1 不知道租户 2。通常,多租户可以在数据库级别实现。您有以下选择:
数据存储在同一个表中,但分离发生在额外的列(所谓的鉴别器列)中:
SELECT * FROM products WHERE tenant_id = 1;
数据存储在同一数据库服务器上,但采用不同的架构。在应用程序获取结果之前,需要选择适当的模式:
USE tenant_1;
SELECT * FROM products;
数据存储在不同的数据库服务器上。对于每个租户,需要保留一个连接池。
这只是您有多个客户使用同一个应用程序的想法。 大多数网站都是多租户的。 他们有多个客户使用相同的安装。 这意味着您必须执行诸如限制视图之类的操作,以便客户只能看到属于他/她的组织的记录。
通常通过将客户 ID 之类的内容放入所有表中,并确保查询始终按该客户 ID 进行过滤来实现。
我最近一直在探索构建基于多租户的 SaaS,我发现这篇文章非常有帮助。清晰简洁,带有实现多租户的代码示例。