多租户架构设计需要考虑解决的几个问题

分布式多租户架构的思考

现在市场上开发软件SAAS化已经是标配了,结合当前或者的分布式微服务和SAAS化多租户结构的实际现状和需求,我们作为技术架构如何考虑设计一套分布式微服务下多租户动态数据源切换的灵活架构方案,是当前比较紧要的一件事情。以下对于多租户动态数据源做了如下分析。

场景分析

场景一:
前端直接发起一个请求通过网关到后端服务,如果只有一个服务的情况下,需要处理被访问服务当前执行所需的数据源应该是当前登录用户所在租户的数据源
序列图如下:

前端 网关 微服务1 租户数据库 识别租户,路由到具体业务微服务 提供业务处理 根据租户动态切换数据源,处理业务 需要识别租户并切换数据源 数据存储/查询 返回业务结果 响应前端 前端 网关 微服务1 租户数据库

场景二:
多个服务协作完成某一业务的情况,直接上图

前端 网关 微服务1 微服务2 租户数据库 识别租户,路由到具体业务微服务 提供业务处理 服务依赖 处理业务 需要识别租户并切换数据源 数据存储/查询 返回业务结果 处理业务 需要识别租户并切换数据源 数据存储/查询 返回业务结果 响应前端 前端 网关 微服务1 微服务2 租户数据库

场景三:
多个服务协作完成某一业务的情况,并且部分业务函异步处理,如图

前端 网关 微服务1 微服务2 租户数据库 MQ 任务服务 识别租户,路由到具体业务微服务 提供业务处理 服务依赖 处理业务 需要识别租户并切换数据源 数据存储/查询 返回业务结果 存入消息队列 订阅消息 逻辑处理 需要识别租户并切换数据源 数据存储/查询 处理自身业务 需要识别租户并切换数据源 数据存储/查询 返回业务结果 响应前端 前端 网关 微服务1 微服务2 租户数据库 MQ 任务服务

场景四
多租户场景下分布式定时任务的处理场景

分布式任务调度服务 MQ 任务执行服务 协同服务 租户数据库 接收分布式任务 订阅分布式任务消息 执行任务逻辑 执行任务逻辑 获取业务所属租户 动态切换数据源 数据存储/查询 获取执行结果 loop [需要外部协同] 获取业务所属租户 动态切换数据源 数据存储/查询 执行完成 分布式任务调度服务 MQ 任务执行服务 协同服务 租户数据库

参考博文
将您的 web 应用程序转化为多租户 SaaS 解决方案
https://www.ibm.com/developerworks/cn/cloud/library/cl-multitenantsaas/
基于spring通过多数据源实现多租户应用
https://www.jianshu.com/p/54f35fa2f374
基于Hibernate动态数据源切换:https://blog.csdn.net/sysushui/article/details/90319375
实例:https://blog.csdn.net/lulitianyu/article/details/79566775

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一起学开源

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值