RuoYi-Vue-Plus的企业级多租户设计原理深度解析
文章目录
- 一、设计概述
- 二、核心架构设计
- 2.1 技术选型
- 2.2 架构层次图
- 三、核心实现深度解析
- 3.1 租户实体基类设计
- 3.1.1 TenantEntity 基类
- 3.1.2 租户实体扩展应用
- 3.2 MyBatis-Plus 租户拦截器
- 3.2.1 PlusTenantLineHandler 实现
- 3.2.2 配置类集成
- 3.2.3 配置文件示例
- 3.3 租户助手类(核心工具)
- 3.3.1 租户功能开关
- 3.3.2 忽略租户(重点功能)
- 3.3.3 动态租户(高级特性)
- 3.3.4 获取当前租户ID
- 3.4 缓存隔离实现
- 3.4.1 Redis Key 前缀处理
- 3.4.2 配置集成
- 3.4.3 Spring Cache 隔离
- 3.4.4 SaToken 数据持久化隔离
- 3.5 租户管理业务逻辑
- 3.5.1 租户实体设计
- 3.5.2 创建租户流程
- 3.5.3 租户ID生成算法
- 3.5.4 租户套餐机制
- 3.5.5 租户同步功能
- 3.5.6 租户校验机制
- 3.6 登录流程中的多租户
- 3.6.1 密码登录策略
- 3.6.2 LoginUser 包含租户信息
- 3.6.3 登出时清理动态租户
- 四、常量与配置
- 4.1 租户常量
- 4.2 全局常量
- 五、多租户安全机制
- 5.1 多重过滤保障
- 5.2 超级管理员机制
- 5.3 租户保护
- 六、架构优势总结
- 6.1 代码层面
- 6.2 性能层面
- 6.3 可维护性
- 6.4 扩展性
- 七、最佳实践与注意事项
- 7.1 实体类设计
- 7.2 查询操作
- 7.3 缓存使用
- 7.4 事务处理
- 7.5 注意事项
- 八、总结
- 核心特性
- 适用场景
一、设计概述
RuoYi-Vue-Plus 项目实现了一套优雅的企业级多租户解决方案,采用共享数据库、共享数据表的模式,通过 MyBatis-Plus 的租户插件和自定义拦截器实现自动租户隔离。该方案具有以下特点:
- 透明性:业务代码无需关心租户隔离,框架层自动处理
- 灵活性:支持动态切换租户、忽略租户等高级特性
- 完整性:覆盖数据库、缓存、认证、权限等多维度隔离
- 安全性:通过配置排除表、状态校验等多重保障
二、核心架构设计
2.1 技术选型
| 组件 | 技术方案 | 作用 |
|---|---|---|
| 租户标识 | tenant_id字段 | 数据隔离标识符 |
| SQL 拦截 | MyBatis-PlusTenantLineInnerInterceptor | 自动添加租户过滤条件 |
