💻 多租户技术实现原理
多租户技术实现原理
- 多租户引擎框架内置了一个多租户解析器,根据 请求参数 中的
tenantId或 请求头Headers中的TENANT-ID获取租户,如果租户不存在则无法访问系统,如果租户隔离模式为COLUMN,则不切换数据源,使用该租户的ID进行数据的增删改查操作;如果租户隔离模式为DATASOURCE,则系统动态切换数据源。
支持
主域名、子域名模式自动区分租户ID。请求参数 中的
tenantId高于请求头Headers中的TENANT-ID。
COLUMN 模式多租户
- 通过
注解+拦截器的方式实现租户数据的隔离。 COLUMN模式隔离的租户模式采用的MyBatis-Plus的行级多租户插件,即所有租户使用同一个数据库,通过tenant_id字段区分,在增删改查时,该插件均会自动拼接tenant_id=xxx的条件。
多租户插件
TenantLineInnerInterceptor 是 MyBatis-Plus 提供的一个插件,用于实现多租户的数据隔离。通过这个插件,可以确保每个租户只能访问自己的数据,从而实现数据的安全隔离。
DATASOURCE 模式多租户
DATASOURCE模式采用动态数据源方式实现租户数据的隔离。DATASOURCE模式隔离的租户模式采用的MyBatis-Plus的动态数据源方案实现多租户动态切换数据源,即每个租户使用独立的数据库。
动态数据源
- dynamic-datasource-spring-boot3-starter 是 MyBatis-Plus 提供的一个动态数据源方案,用于动态切换数据源。 通过动态切换数据源,可以确保每个租户只能访问自己的数据源,从而实现数据的安全隔离。