SaaS厂商数据库设计(2)-租户路由

简介: 介绍SaaS厂商数据库设计中的租户如何路由

image.png

租户路由(SaaS Tenant Catalog)

在SaaS多租户场景下,需要将不同租户路由到不同数据库instance以及具体的DB上,上层的APP应用根据租户ID获取到相应的的数据库地址,然后进行后续业务CRUD。一般而言,SaaS厂商将这部分映射关系维护在一个单独的数据库中,这部分数据库称为公共配置库,研发和DBA共同使用和维护,租户路由一般包含以下信息:

1、租户基本信息:租户名称、租户ID、等级、服务状态;

2、地址信息:租户所在的数据库instance ID以及对应的数据库DBName;

公共配置库的作用和书的目录相似,让应用找到正确的数据库,实现租户逻辑隔离和权限基本手段之一。

上层应用在获取到相应的数据库instance ID以及对应的数据库DBName后,需要进行一步定位具体表或者行,针对不同隔离模式下的租户路由,表隔离一般在表上会在表名上带有租户ID,通过业务动态拼接其他信息即可找到相应的业务表。在行隔离模式下,业务上会根据订单+租户ID来计算出相应表名,在业务操作时将tenantID作为过滤条件进行CRUD操作。

对于DBA来说,日常运维操作第一步,一般事通过关键字搜索找到租户ID以及对应的数据库地址,然后连上数据库的数据库进行具体运维操作。

新租户路由

当创建一个新的SaaS租户时,一般会同时结合客户的等级,可能选择创建新的实例或者从当前实例池中寻找最合适的空闲实例进行分配,并且在catalog表中添加新的记录。

租户转移

当租户转移前,将添加相应catalog记录,并置为不生效状态,等正式切换后启用,同时将旧的catalog记录进行删除或者逻辑删除。

统一访问(Uniform Access)

多实例的地址管理,看上去是很简单的问题,但是实际情况下,很多SaaS由于在地址管理方面缺少经验,部分情况更换地址甚至要停止业务,在对接客户过程中发现,客户希望产品提供迁移数据库实例带原实例地址迁移功能,这个方面来说,提供统一地址会是对运维更便捷的解决方案。

数据层统一路由

数据层提供统一访问代理,可以降低地址管理成本,对外屏蔽底层数据结构,尤其在多租户架构设计不同隔离模式下提供了一致性能力。在统一访问方面,业界有开源的MariaDB MaxScale,MariaDB MaxScale是一种数据库代理,具有可伸缩性和安全性,同时通过将其与基础数据库基础架构分离来简化应用程序开发,提供的Schema-based sharding路由为数据访问提供了DB隔离级别的访问代理。

数据库层统一路由需要感知业务,在DB隔离模式下,由于只需要具体的Instance和DB即可定位到具体租户,但是在表隔离和行隔离模式下,需要配置相对复杂的路由规则,这部分需要根据业务进行定制开发。

在SaaS多租户场景如何确定一个租户所在的数据源,作为SaaS数据存储和CRUD的基础,对后期开发和运维具有较大的影响。

目录
相关文章
|
1月前
|
SQL 关系型数据库 数据库
OceanBase数据库常见问题之录入租户管理员密码时,提示密码检验失败如何解决
OceanBase 是一款由阿里巴巴集团研发的企业级分布式关系型数据库,它具有高可用、高性能、可水平扩展等特点。以下是OceanBase 数据库使用过程中可能遇到的一些常见问题及其解答的汇总,以帮助用户更好地理解和使用这款数据库产品。
|
搜索推荐 Java 数据库
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八)saas平台篇-解决不同租户针定制化开发问题(3) -oauth2 登陆源码分析以及扩展添加tenantId属性
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八)saas平台篇-解决不同租户针定制化开发问题(3) -oauth2 登陆源码分析以及扩展添加tenantId属性
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八)saas平台篇-解决不同租户针定制化开发问题(3) -oauth2 登陆源码分析以及扩展添加tenantId属性
|
搜索推荐 前端开发 Java
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八)saas平台篇-解决不同租户针定制化开发问题(2) -挂载自定义登陆以及业务端完整代码
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八)saas平台篇-解决不同租户针定制化开发问题(2) -挂载自定义登陆以及业务端完整代码
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八)saas平台篇-解决不同租户针定制化开发问题(2) -挂载自定义登陆以及业务端完整代码
|
Java 微服务 Spring
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八) saas平台篇-解决不同租户针定制化开发问题 -完整代码以及案例方案(1)
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八) saas平台篇-解决不同租户针定制化开发问题 -完整代码以及案例方案(1)
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八) saas平台篇-解决不同租户针定制化开发问题 -完整代码以及案例方案(1)
|
消息中间件 分布式计算 关系型数据库
易仓跨境Saas全球租户,如何做到数据秒级响应?
易仓科技成立于2013年,致力于构建智能协同的跨境网络,让全球贸易更轻松。经过9年的积累沉淀,产业链SaaS+生态链协同的服务模式,已发展成为跨境电商行业的头部企业。目前租户分布全球,数据来自各大洲,汇集国外各大电商平台各个站点销售数据。面对这种数据体量大,跨全球各区域的复杂场景易仓大数据团队是如何做到秒级响应的?
298 0
易仓跨境Saas全球租户,如何做到数据秒级响应?
|
存储 SQL 数据采集
SaaS厂商数据库设计(3)-租户元数据管理&数据管理
SaaS厂商设计中元数据管理以及逻辑视图方式下数据管理
592 2
SaaS厂商数据库设计(3)-租户元数据管理&数据管理
|
存储 运维 监控
SaaS厂商数据库设计(1)-多租户设计
介绍SaaS厂商在数据库设计中使用多租户,以及相应的部署模式
1305 2
SaaS厂商数据库设计(1)-多租户设计
|
11天前
|
关系型数据库 MySQL 分布式数据库
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
46 2
|
26天前
|
SQL 数据可视化 关系型数据库
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
106 0
|
8天前
|
SQL 存储 关系型数据库
数据库开发之mysql前言以及详细解析
数据库开发之mysql前言以及详细解析
16 0

热门文章

最新文章