• 多用户对应多租户解决方案


    在这里插入图片描述


    需求分析

    在进行多租户需求分析时,需要考虑以下几个方面:

    1. 用户管理:在多租户系统中,需要实现对用户的管理。这包括用户的注册、身份验证、权限控制等功能。
    2. 数据隔离:不同租户的数据需要隔离,以确保每个租户的数据不会被其他租户访问或篡改。因此,在多租户系统中,需要考虑如何实现数据隔离。
    3. 安全性:由于多个租户共享同一个应用程序和基础设施,因此需要确保系统的安全性。这包括访问控制、身份验证、数据加密等方面的安全措施。
    4. 扩展性:多租户系统可能需要在不同的时间扩展或缩小,因此需要考虑如何实现可扩展性。
    5. 成本效益:开发和维护多租户系统可能需要较高的成本,因此需要进行成本效益分析,以确保多租户系统的实现是值得的。
    6. 应用程序兼容性:多租户系统需要支持不同的应用程序,因此需要考虑如何实现应用程序兼容性。这可能涉及到与现有应用程序的集成或修改。

    通过对以上方面的分析,可以制定出更加全面、具体和可执行的多租户需求,从而为后续的开发、测试和部署工作提供有力的指导。

    解决方案

    多租户系统的实现通常需要多种技术和解决方案的综合应用,以下是一些常见的多租户解决方案:

    1. 数据库隔离:将不同租户的数据存储在不同的数据库中,或使用数据库表前缀来区分不同的租户。这是一种简单而有效的数据隔离解决方案。
    2. 服务隔离:将多个租户的服务部署在不同的服务器上,或者使用虚拟化技术来实现服务隔离。这种解决方案可以有效隔离不同租户的资源和行为。
    3. 多租户架构:采用多租户架构设计来实现多租户系统,在系统架构上,将底层的服务和资源作为共享层,而将不同租户所需的业务逻辑和数据通过配置实现隔离。
    4. 租户感知应用:应用程序能够感知当前所属租户,并在不同租户间提供分离或共享的功能。例如,为不同租户提供不同的界面配置,而共享服务和流程等。

    此外,也可以使用云计算平台、容器化技术、微服务架构等技术和解决方案来实现多租户系统。不同的解决方案适用于不同的场景,需要结合具体需求选择最合适的方案。

    我们这里采用的软隔离的方式,再需要隔离的表中增加一个租户id字段,增删改查时通过上下文获取到当前租户id,这样就实现了多租户隔离,对于中小企业,通过开通账号形式实现SaaS服务。这样做优点是控制粒度到表中的数据,例如管理员可以看到所有租户的数据。缺点也显而易见,耦合度较高,维护成本相对较高。详细关系如下:

    1. 项目默认初始化一个超级管理员租户,超级管理员,超级管理员角色。
    2. 用户和租户为多对多关系
    3. 用户和角色为多对多关系
    4. 用户和(组织和岗位)为多对多关系
    5. 角色权限为1对多关系
    6. 超级管理员用户可以管理所有的用户包括自己
    7. 管理员用户可以管理自己所在租户下的用户,不包括自己
    8. 权限管理顺序为:超级管理员用户 -> 管理员用户 -> 普通用户
    9. 权限大小为:超级管理员用户 > 管理员用户 > 普通用户
    10. 权限粒度可以细分到每个按钮
    11. 接口权限是与菜单权限分开的,同样可以细化到每个接口权限的分配

    实现步骤

    表结构设计

    [外链图片转存中…(img-15Qjz7lG-1685261629610)]

    逻辑实现

    由于逻辑表复杂,下面我们使用流程图来展示

    用户新增流程
    在这里插入图片描述

    多租户管理思维导图
    在这里插入图片描述


  • 相关阅读:
    黑马VUE3视频笔记
    深入了解 Spring 篇之 BeanDefinition 结构
    韩国coupang需要懂韩文吗?平台入驻条件及费用?——站斧浏览器
    Java数组案例
    K8S1.23.5部署(此前1.17版本步骤囊括)及问题记录
    演示app基本定位方法(#案例:定位API#演示:ID定位法!#演示:class定位法!#演示:XPATH定位)
    Grafana 系列文章(十五):Exemplars
    csa从初阶到大牛 ---(用户,组)
    软件测试7大误区
    Qt6 mathgl数学函数绘图
  • 原文地址:https://blog.csdn.net/qq_38036909/article/details/130913996