我最近听说了 Multi-Tenancy 架构这一术语,我公司的一个项目使用了该术语。我在谷歌上读到过 但有一些疑问。这是 Multi-Tenancy 的简要定义
Multi-tenancy is an architecture in which a single instance of a software application serves multiple customers. Each customer is called a tenant
但如果我按照这个定义,每个 Web 应用程序都支持 Multi-Tenancy 架构,因为数百万最终用户使用它们。没什么特别的。所以对我来说这看起来像是流行词。所以这只是关于设计,主要是在数据库方面而不是技术
从项目java和数据库设计来看,在 Multi-Tenancy 架构中,租户实际上是指内部拥有 可以拥有数百万用户。
它对于数据库和java设计的意义是:
我们有一个额外的表,即组织,其 org_id
列由 user
表引用。现在一般大多数表都有 user_id
列
出于安全原因,仅通过操纵从 UI 发送的 ID,其他组织的数据就不会受到损害。
然后,Java 查询使用 session 中的用户 ID 来确保安全性。
所以我的理解是 Multi-Tenancy 主要是支持多个组织(它们有自己独立的用户群) 单一服务器和数据库,这是一种具有成本效益的方式,并且可以用最少的设计(额外的组织表和查询)来设计 从 session 中传递 userId)
另一种选择是为每个组织拥有多个实例,这意味着更多的成本。
我的理解正确吗?
最佳答案
实际上,您的 Web 应用程序示例具有误导性。在 apache 中,标准做法是在 apache Web 服务器的单独实例中处理每个客户端请求。一旦一个实例处理完一个 Web 请求,它将处理下一个请求,但它一次只处理一个。根据您的定义,我会质疑 apache Web 服务器默认情况下是否是 Multi-Tenancy 的。
无论如何,我开发了许多服务器应用程序,但从未遇到过 Multi-Tenancy
这个术语。人们总是创造流行语来描述不同的事物,因此了解使用它的人认为它意味着什么更为重要。只要对方不只是乱扔流行语,你们就应该能够就此进行明智的对话。
关于java - Multi-Tenancy 究竟是什么,还是另一个流行词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28647195/