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


需求分析

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

  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. 接口权限是与菜单权限分开的,同样可以细化到每个接口权限的分配

实现步骤

表结构设计

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


逻辑实现

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

用户新增流程

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

多租户管理思维导图

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




原文始发于微信公众号(刘凌枫羽工作室):多用户对应多租户解决方案

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/251381.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!