芋道源码解析之多租户
本文最后更新于 2025年3月10日
博主和芋道源码作者及其官方开发团队无任何关联
未完待续
一、引言
租户是系统中一个逻辑隔离的单元,代表一个独立使用系统的组织(如企业、高校等)。在多租户系统中,不同租户共享相同的应用程序和基础设施,但各自拥有独立的数据、配置、组织架构及用户。
芋道是一个支持多租户的系统,对于RDBMS数据库,Redis缓存,MQ中的消息以及定时任务等都分别做了租户隔离。
二、Web访问实现租户隔离
三、RDBMS数据库实现租户隔离
3.1 实现方案
数据库中租户的隔离方案有三种:
描述 | 优点 | 缺点 | |
---|---|---|---|
库隔离 | 每个租户拥有独立的数据库实例。 | 数据隔离性最好,安全性高。 性能不受其他租户影响。 备份和恢复简单。 | 资源消耗大,成本高。 管理复杂度高,租户增多时维护困难。 |
表隔离 | 每个租户建属于自己的一套数据表,表名由基表的表名和租户标识来命名 | 资源利用率较高,成本较低。 数据隔离性较好。 管理相对简单。 | 租户数量增多时,性能可能受影响。 数据库设计需考虑模式隔离。 |
记录隔离 | 表中使用租户标识字段(Tenant ID)区分不同租户的数据 | 资源利用率最高,成本最低。 扩展性强,适合大规模租户场景。 管理简单。 | 数据隔离性较差,安全性较低。 数据库设计复杂,需确保租户ID正确使用。 性能可能受租户数量影响。 |
四、Redis缓存实现租户隔离
五、消息队列MQ实现租户隔离
六、定时任务实现租户隔离
七、忽略租户
八、租户管理业务源码解读
芋道源码解析之多租户
https://blog.liuzijian.com/post/source-code-yudao-tenant.html