1.什么是多租户?
我们先看看这样的场景:你们公司开发了一套应用程序,你们公司自己买相关的资源部署了,可是有其他的公司也觉得好,也想搞这样一套,其实操作也简单按照你们公司实施的在其他公司实施一遍即可。
但是,问题来了,并不是每个公司都这么有钱,有很多可能是个体户,他们只想花少量的钱既有系统可用,又不需要管理维护硬件。怎么办?多租户模式解决!
所谓多租户,简单地说:部署一套应用程序,应用数据隔离的技术让不同的商家登录系统后只能操作自己的数据,就像这个系统为他单独开发部署的一样,不同商家之间数据彼此不可见。
2.有哪些实现原理?
方式一:基于独立的数据源--数据库;
方式二:基于独立的数据源--schema;
方式二:基于同一数据源--表的租户列;
3.常见的实现框架:
方式三的实现框架:
使用MybatisPlus框架很容易实现;
使用JPA/Hibernate框架,Hibernate枚举了这种原理方式但是没有实现,不过自己借助Hibernate的复合主键的功能也可以实现这种方式。
方式二/方式一的实现框架:
Hibernate框架对这两种方式进行了实现。因此实现用JPA/Hibernate框架比较容易一些;
如果想利用Mybatis/MybatisPlus实现,可能需要自己研究并阅读更改一些源码才能实现。
4.多租户核心原则:
隔离数据,互不干扰!
5.多租户需要注意的问题:
要注意的问题其实就是不能违背核心原则的问题,常见涉及的问题:
A.数据源;
B.Redis缓存;
C.定时任务;
D.异步线程池;
E.服务器文件存储;
F.WebSocket连接规则。
其实只要记住一点:只要在多租户模式下可能导致数据混乱的问题都应该进行处理,毕竟程序有价,数据无价!
6.Efadmin项目采用的多租户模式:
独立数据源,独立redis数据库的绝对数据隔离模式;
7.Efadmin多租户采用的实现框架:
SpringDataJPA框架。
8.Efadmin的多租户体验:
管理多租户,可以管理其他租户的数据源
用户名密码:root/123456
租户1
用户名密码:admin1/123456
租户2
用户名密码:admin2/123456
注意:
A.两个租户的https证书使用的是efadmin.ddbin.com域名的,所以访问时,谷歌浏览器会说证书无效,信任即可!
B.因阿里云服务器宽带仅1M,即理论最大128K/s文件传输速度,因此登录可能会慢一些,请知悉。
9.实现源码:
| 后端源码 | 前端源码 |
github |