在进行多租户需求分析时,需要考虑以下几个方面:
- 用户管理:在多租户系统中,需要实现对用户的管理。这包括用户的注册、身份验证、权限控制等功能。
- 数据隔离:不同租户的数据需要隔离,以确保每个租户的数据不会被其他租户访问或篡改。因此,在多租户系统中,需要考虑如何实现数据隔离。
- 安全性:由于多个租户共享同一个应用程序和基础设施,因此需要确保系统的安全性。这包括访问控制、身份验证、数据加密等方面的安全措施。
- 扩展性:多租户系统可能需要在不同的时间扩展或缩小,因此需要考虑如何实现可扩展性。
- 成本效益:开发和维护多租户系统可能需要较高的成本,因此需要进行成本效益分析,以确保多租户系统的实现是值得的。
- 应用程序兼容性:多租户系统需要支持不同的应用程序,因此需要考虑如何实现应用程序兼容性。这可能涉及到与现有应用程序的集成或修改。
通过对以上方面的分析,可以制定出更加全面、具体和可执行的多租户需求,从而为后续的开发、测试和部署工作提供有力的指导。
多租户系统的实现通常需要多种技术和解决方案的综合应用,以下是一些常见的多租户解决方案:
- 数据库隔离:将不同租户的数据存储在不同的数据库中,或使用数据库表前缀来区分不同的租户。这是一种简单而有效的数据隔离解决方案。
- 服务隔离:将多个租户的服务部署在不同的服务器上,或者使用虚拟化技术来实现服务隔离。这种解决方案可以有效隔离不同租户的资源和行为。
- 多租户架构:采用多租户架构设计来实现多租户系统,在系统架构上,将底层的服务和资源作为共享层,而将不同租户所需的业务逻辑和数据通过配置实现隔离。
- 租户感知应用:应用程序能够感知当前所属租户,并在不同租户间提供分离或共享的功能。例如,为不同租户提供不同的界面配置,而共享服务和流程等。
此外,也可以使用云计算平台、容器化技术、微服务架构等技术和解决方案来实现多租户系统。不同的解决方案适用于不同的场景,需要结合具体需求选择最合适的方案。
我们这里采用的软隔离的方式,再需要隔离的表中增加一个租户id字段,增删改查时通过上下文获取到当前租户id,这样就实现了多租户隔离,对于中小企业,通过开通账号形式实现SaaS服务。这样做优点是控制粒度到表中的数据,例如管理员可以看到所有租户的数据。缺点也显而易见,耦合度较高,维护成本相对较高。详细关系如下:
- 项目默认初始化一个超级管理员租户,超级管理员,超级管理员角色。
- 用户和租户为多对多关系
- 用户和角色为多对多关系
- 用户和(组织和岗位)为多对多关系
- 角色权限为1对多关系
- 超级管理员用户可以管理所有的用户包括自己
- 管理员用户可以管理自己所在租户下的用户,不包括自己
- 权限管理顺序为:超级管理员用户 -> 管理员用户 -> 普通用户
- 权限大小为:超级管理员用户 > 管理员用户 > 普通用户
- 权限粒度可以细分到每个按钮
- 接口权限是与菜单权限分开的,同样可以细化到每个接口权限的分配
[外链图片转存中…(img-15Qjz7lG-1685261629610)]
由于逻辑表复杂,下面我们使用流程图来展示
用户新增流程
多租户管理思维导图