java - Multi-Tenancy 究竟是什么,还是另一个流行词?

标签 java multi-tenant

我最近听说了 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/

相关文章:

java - 引用条件查询中较早的别名字段

java - 如何在外部服务器上启动 gwt-project,例如 Tomcat ?

java - ListIterator 类的 Previous() 方法

java - 密码 validator java : linking booleans?

hibernate - Grails Hibernate GORM,具有一对一关系的 Multi-Tenancy

asp.net - 在 ASP.NET 中跨网站共享页面

java - 为什么我在牙套上出现错误?

django - 无法登录/无法登录 django 租户

php - 管理 Multi-Tenancy 数据库连接

database - 同一数据库中的多个公司