多租户概要

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的多租户体验:

管理多租户,可以管理其他租户的数据源

https://efadmin.ddbin.com/

用户名密码:root/123456

租户1

https://t1.ddbin.com/

用户名密码:admin1/123456

租户2

https://t2.ddbin.com/

用户名密码:admin2/123456

注意:

A.两个租户的https证书使用的是efadmin.ddbin.com域名的,所以访问时,谷歌浏览器会说证书无效,信任即可!

B.因阿里云服务器宽带仅1M,即理论最大128K/s文件传输速度,因此登录可能会慢一些,请知悉。

 

9.实现源码:

 

 

后端源码

前端源码

github

https://github.com/vip-efactory/efadmin

https://github.com/vip-efactory/efadmin-ui

 

你可能感兴趣的:(多租户,SpringDataJpa,隔离的redis,mysql,java,spring)