Skip to content

租户配置

作者:唐亚峰 | battcn
字数统计:493 字

TIP

支持市面上常见的租户隔离方案 字段隔离Schema动态数据源 及组合策略。

添加依赖

pom.xml 中添加 SDK 的依赖包,可以参考项目中的案例

xml
<dependency>
    <groupId>com.wemirr.framework</groupId>
    <artifactId>db-spring-boot-starter</artifactId>
    <version>${lastVersion}</version>
</dependency>

租户策略

/字段隔离数据源隔离是否支持是否开源
简易简单复杂支持开源
事务简单复杂支持开源
规模租户年订单量低于200W租户年订单量高于200W支持开源
优点方便统计数据和排查问题平台想对所有租户数据做统计相对麻烦具体业务具体实现开源

字段隔离

字段隔离:在需要对租户数据隔离的SQL添加租户字段进行数据过滤

yaml
# 表示字段隔离
extend.mybatis-plus.multi-tenant.type=column
# 表示需要进行租户数据隔离的表名(逗号分隔)
extend.mybatis-plus.multi-tenant.include-tables=t_user,t_file
# 字段隔离需要关掉动态AOP
spring.datasource.dynamic.aop.enabled=false

动态数据源

数据源隔离:没个租户独立数据源,使用 Spring Cloud Bus 动态切换分配数据源,项目初始化也会加载所有数据源

yaml
# 表示数据源隔离
extend.mybatis-plus.multi-tenant.type=datasource
# 非 iam 模块都配置成 feign 即可
extend.mybatis-plus.multi-tenant.strategy=feign
extend.mybatis-plus.multi-tenant.db-notify=redis

默认数据源配置

js
spring.datasource.dynamic.primary=master
spring.datasource.dynamic.strict=true
spring.datasource.dynamic.datasource.master.pool-name=HikariDataSourcePool
spring.datasource.dynamic.datasource.master.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.dynamic.datasource.master.url=jdbc:mysql://localhost:3306/wemirr-platform?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&useSSL=false&allowPublicKeyRetrieval=true
spring.datasource.dynamic.datasource.master.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.dynamic.datasource.master.username=root
spring.datasource.dynamic.datasource.master.password=123456
spring.datasource.dynamic.hikari.max-pool-size=15
spring.datasource.dynamic.hikari.max-lifetime=1800000
spring.datasource.dynamic.hikari.connection-timeout=30000
spring.datasource.dynamic.hikari.min-idle=5
spring.datasource.dynamic.hikari.is-auto-commit=true

注意事项

注意事项

动态数据源初始化数据 SQL 脚本整理比较繁琐,开源项目迭代速度比较快,所以租户脚本不一定更新及时,所以请根据企业需求修改 tenant_schema.sql

  • 只有 动态数据源隔离 存在这个问题
租户初始化脚本