当前位置: 首页 > news >正文

druid-multi-tenant-starter将系统改造成多租户系统如此简单

项目开源地址 https://github.com/osinn/druid-multi-tenant-starter ,如果对您有帮助,麻烦给个Star

       多租户插件 druid-multi-tenant-starter 的出现为系统的改造成多租户带来了前所未有的便捷。它以其独特的优势和强大的功能,使得将系统改造成多租户系统变得如此简单。

       从技术层面来看,druid-multi-tenant-starter 它能够处理租户之间的数据隔离和资源分配,确保每个租户都能享受到独立且稳定的服务,迅速将原本复杂的单一系统升级为多租户系统,大大提高了系统的灵活性和可扩展性。不仅能够轻松应对业务的快速增长,还降低了运营成本和维护难度,无论您的系统规模大小、业务类型如何,它都能为您提供高效、可靠的多租户解决方案,多租户插件 druid-multi-tenant-starter 确实让系统向多租户系统的改造变得轻而易举,为企业的数字化转型之路注入了强大的动力。

     此外,多租户插件 druid-multi-tenant-starter 支持jdk1.8+、Spring boot2.x以及兼容Spring boot 3.x版本

单一系统改造成多租户系统演示

首先在数据库中将所有表都加上租户ID,例如字段名称为 tenant_id

DELIMITER $$CREATE PROCEDURE AddColumnToAllTables(p_column_name VARCHAR(255))
BEGINDECLARE v_table_name VARCHAR(255);DECLARE table_cursor CURSOR FOR SELECT table_name FROM information_schema.tables WHERE table_schema = (SELECT DATABASE()) AND table_type = 'BASE TABLE';DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_table_name = NULL;OPEN table_cursor;read_loop: LOOPFETCH table_cursor INTO v_table_name;IF v_table_name IS NULL THENLEAVE read_loop;END IF;SET @stmt = CONCAT('ALTER TABLE `', v_table_name, '` ADD COLUMN `', p_column_name, "` bigint(20) DEFAULT NULL COMMENT '租户Id'");PREPARE s1 FROM @stmt;EXECUTE s1;DEALLOCATE PREPARE s1;END LOOP;CLOSE table_cursor;
END$$DELIMITER ;CALL AddColumnToAllTables('tenant_id');
  • 以上sql脚本会将所有表加上 tenant_id 字段

项目中引入插件依赖包

<dependency><groupId>io.github.osinn</groupId><artifactId>druid-multi-tenant-starter</artifactId><version>最新版本</version>
</dependency>

项目配置

  • 在yml配置文件中添加以下配置来启用多租户插件
mybatis:tenant:config:# 是否启用多租户插件enable: true# 数据库表中租户ID的字段名tenant-id-column: tenant_id

实现提供获取多租户值接口

/*** 演示:提供多租户ID服务接口** @author wency_cai*/
@Service
public class TenantServiceImpl implements ITenantService<Integer>{@Overridepublic List<Integer> getTenantIds() {// 开发者需要自己实现获取系统多租户id值的代码逻辑,如果有多个返回多个值即可int tenantId = 1;return Lists.newArrayList(tenantId);}
}
  • 到此为止已经将系统改造成多租户系统,租户之间的数据隔离
  • 更多的功能请在github上查看文档

单一系统升级为多租户系统就是这么简单,very good


http://www.mrgr.cn/news/65956.html

相关文章:

  • Flutter UI架构(3)
  • FreeRTOS学习9——补充 API函数详解(创建、删除任务函数 和 挂起、恢复任务函数,空闲任务函数)
  • Angular解析本地json文件
  • labview学习总结
  • 【GO学习笔记 go基础】访问控制
  • 模板规则明细
  • 企业邮箱后缀优化:提升邮件送达率的策略!
  • 三周精通FastAPI:32 探索如何使用pytest进行高效、全面的项目测试!
  • W55RP20-EVB-Pico评估板介绍
  • Android camera2
  • 全面提升小程序用户体验,让你的小程序一举夺目
  • 【Rust中的迭代器】
  • 植物神经紊乱不用怕,这些维生素来帮你!
  • OJ03:删除有序数组中的重复项
  • PHP电商供应链ERP管理系统小程序源码
  • SQL优化 - group by优化
  • 俄罗斯市场开发秘籍大公开
  • Vagrant使用教程:创建CentOS 8虚拟机
  • Ubuntu20.04两种安装及配置中文界面、输入法、换源、共享文件夹实现,及注意事项
  • 从0到1!手把手教你私域流量变现的5个必备技能
  • 使用实例讲解RTOS的内核结构、任务调动、资源管理、中断处理
  • 把握数字化新趋势,迎接生态架构新时代——The Open Group 2024生态系统架构·可持续发展年度大会参会指南
  • sql中判断一个字段是否包含一个数据的方法
  • 【从零开始的LeetCode-算法】3289. 数字小镇中的捣蛋鬼
  • 影视会员充值接口对接过程中都需要注意些什么?
  • 系统安全架构