芋道源码解析之多租户

本文最后更新于 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
作者
Liu Zijian
发布于
2025年1月26日
更新于
2025年3月10日
许可协议