“解密数据隔离方案,让SaaS应用开发更轻松”技术分享

简介: 相信有不少朋友都已经了解到SaaS多租户模式,帮助企业选择合适的SaaS系统匹配企业的客户和业务特点。如:独享资源模式、全共享模式、数据层共享模式等。此时,我们往往会遇到不同租户间的数据隔离问题,如何正确的进行数据路由,才能保证租户的数据隔离。在SaaS应用开发时应用层和数据层的租户路由设计以及实现方面,我们会遇到几种情况:当租户独享应用层和数据层时,这个时候租户的数据是天然隔离的,不会被其他租户影响,此时是不需要路由的;当多个租户涉及到应用层和数据层的资源共享的时候,就需要对租户的数据进行隔离,不管是应用层共享或者数据层共享,还是数据层和应用层都存在共享,正确的数据路由才能保证租户隔离。

一个合格的SaaS应用开发必定伴随着租户数据的隔离,同时租户的开销及成本预算各不相同。随着业务规模的变化,我们该如何选择租户数据隔离的方式,如何实现隔离?相信在这篇文章里,你可以找到解答。

相信有不少朋友都已经了解到SaaS多租户模式,帮助企业选择合适的SaaS系统匹配企业的客户和业务特点。如:独享资源模式、全共享模式、数据层共享模式等。此时,我们往往会遇到不同租户间的数据隔离问题,如何正确的进行数据路由,才能保证租户的数据隔离。

在SaaS应用开发时应用层和数据层的租户路由设计以及实现方面,我们会遇到几种情况:当租户独享应用层和数据层时,这个时候租户的数据是天然隔离的,不会被其他租户影响,此时是不需要路由的;当多个租户涉及到应用层和数据层的资源共享的时候,就需要对租户的数据进行隔离,不管是应用层共享或者数据层共享,还是数据层和应用层都存在共享,正确的数据路由才能保证租户隔离。

并且,不同的资源共享模式、共享程度,在同样资源的情况下所容纳的租户数量不一样,所以每一个租户平均成本不一样,最终的总TCO成本也会不一样。所以往往使用这种混合模式,需要根据租户的需求和预算进行不同程度的资源共享,以达到在保证租户业务正常稳定运行的前提下,成本最小化,收益最大化的目的。

image.png

上图中租户1使用独立的应用层和数据层,不涉及资源共享,所以无需要考虑数据路由。图中的租户2-7,都涉及到了资源共享。其中租户3和租户4共享数据库实例,但是占用不同schema;租户5和租户6共享数据库实例,但不使用schema隔离,在业务表中使用租户标识隔离。共享应用层和数据库实例时,在处理业务逻辑过程中需要将租户的数据库相关操作指向正确的目标库,避免数据污染等一系列问题,此时即需要进行路由。

不是所有数据都需要路由

当租户进行数据操作时,可能涉及到关系型数据库的读写,nosql,缓存,消息队列,服务之间的调用等等场景,在这一条完整的链路中,数据的操作需要识别租户的身份,实际上是说租户的业务数据以及个性化配置是需要先识别租户身份的,否则会引起租户之间的数据污染,越权等等问题。

image.png

我们需要通过一些方式来识别租户,并且要在整个业务链路中传递,直到不需要区分租户为止,比如请求结束。

那么路由到底承担了什么角色,实际上起了什么作用呢。李良龙表示,租户路由不仅仅是要实现对租户的数据进行正确的路由,而且是建立在一个可信的规则上的,可维护的,可统一管理的,而且可追溯。可以由一个超级管理员的角色来对租户的资源进行分配并持久化,并能够按照这些持久化的配置来作为租户数据路由的依据。

image.png

综上所述,SaaS应用之所以需要租户路由,是多个租户在一定程度上资源共享所导致。按共享程度有一个简单的模型,随着共享程度的升高,同样资源可以容纳的租户数量会越来越多,那么每一个租户所需要的成本就越低。随着共享程度越高,就会导致针对租户的运维难度增大。比如某一共享环境下租户的数据需要回滚,要在不影响其他租户的前提下完成,相比于独享环境的租户会复杂很多。

随着共享程度越高,租户之间的隔离程度就会越低。比如租户数据使用行隔离时,不同租户的数据放在同一个表中,租户之间的数据最容易相互影响,这种模式可容纳的租户数量也是最多的。第二个是总拥有成本会随着租户的共享程度升高而降低,租户的平均成本也随之降低,这也是多租环境下,使用资源共享的一个比较重要的原因。

租户路由插件设计分享

上面介绍了为什么使用租户路由来隔离租户的数据,接下来为大家介绍一下租户路由插件的设计思路。租户路由插件大体可以分为动态数据源和数据路由策略两个部分,今天重点介绍动态数据源。

image.png

上图为动态数据源业务流程图。动态数据源在配置方面使用yml配置,一个数据源可以被称为一个数据源组,一个组包含一主多从。数据源配置可以将租户与数据源的绑定关系分开配置,这样可以灵活的绑定实现租户与数据源的关系。松散配置方面,多个租户可以绑定同一个数据源组,可细化绑定关系到schema,而且绑定关系与数据源组配置的修改不相互影响。

同时一个数据源组实际上是一组实例的多个连接池组成的,而且数据源组在满足配置的情况下可以通过配置中心动态配置。比如可以在不停机的情况下新增租户,并将新增租户绑定到已经存在的数据源中;也可以新增数据源配置,将租户指定到新增的数据源,通过数据库管理工具如flyway,为租户初始化数据库资源,预置一些管理账号、基础配置等等。同时这个功能可以在租户绑定的资源改变的时候使用,比如某个租户随着业务的增长,需要从共享库迁移到独享库等等场景。

在配置的基础上构建了动态数据源之后,业务访问的过程中通过绑定关系以及自定义扩展策略来选择数据源,选择schema,最后获取数据库连接,操作数据,比如读写分离,比如负载均衡,租户与数据源的绑定策略的扩展实现等等。

image.png

在配置结构中,支持自定义扩展连接池,而且连接池的配置属性可以支持粒度细化的粒度时到单个实例的,相同属性细粒度的配置会覆盖粗粒度的配置。

image.png
image.png

在租户标识传递方面,目前默认的是将租户标识放在header中,在接收到请求之后将header中的租户标识放入缓存中,这个可以看作是一个会话级别的缓存。仅需要在父线程中初始化并设置值,子线程也可以获取到,并且需要在请求结束时清理掉,防止线程池中线程复用导致数据污染。

image.png
image.png

租户与数据源以及schema的绑定关系除了使用配置文件配置之外,还可以使用开放的扩展接口自行扩展绑定逻辑。

相关文章
|
4月前
|
监控 安全 数据可视化
java基于微服务的智慧工地管理云平台SaaS源码 数据大屏端 APP移动端
围绕施工现场人、机、料、法、环、各个环节,“智慧工地”将传统建筑施工与大数据物联网无缝结合集成多个智慧应用子系统,施工数据云端整合分析,提供专业、先进、安全的智慧工地解决方案。
143 1
|
存储 运维 安全
阿里云发布SaaS数据本地化服务,助力企业跨国扩展与合规
阿里云SaaS数据本地化服务(Alibaba Cloud InCountry Service,简称ACIS) 由阿里云和 InCountry合作推出,为使用海外SaaS或者应用的企业客户提供了一种将受管制数据在境内存储和处理,以实现合规的SaaS服务。
1306 0
阿里云发布SaaS数据本地化服务,助力企业跨国扩展与合规
|
Java 微服务 Spring
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八) saas平台篇-解决不同租户针定制化开发问题 -完整代码以及案例方案(1)
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八) saas平台篇-解决不同租户针定制化开发问题 -完整代码以及案例方案(1)
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八) saas平台篇-解决不同租户针定制化开发问题 -完整代码以及案例方案(1)
|
数据中心
智慧校园平台电子班牌系统源码 SaaS服务模式,数据统一平台
智慧校园系统是通过信息化手段,实现对校园内各类资源的有效集成 整合和优化,实现资源的有效配置和充分利用,将校务管理过程的优化协调。为校园提供数字化教学、数字化学习、数字化科研和数字化管理。 致力于为家长和教师提供一个全方位、多层次、高效率的校园教学、生活空间,全面打造校园全场景信息化服务,提供更加便捷的师生服务。
智慧校园平台电子班牌系统源码 SaaS服务模式,数据统一平台
|
消息中间件 运维 监控
基于 EventBridge API Destination 构建 SaaS 集成实践方案
本次新增集成中心(Integration Center)是负责 EventBridge 与外界系统对接的模块,通过抽象与配置快速获取第三方事件并将事件集成到第三方系统。并且优化现有 HTTP Sink 集成方案,为用户下游集成创造更多适配场景。
312 0
基于 EventBridge API Destination 构建 SaaS 集成实践方案
|
消息中间件 运维 监控
基于 EventBridge API Destination 构建 SaaS 集成实践方案
本次新增集成中心(Integration Center)是负责 EventBridge 与外界系统对接的模块,通过抽象与配置快速获取第三方事件并将事件集成到第三方系统。并且优化现有 HTTP Sink 集成方案,为用户下游集成创造更多适配场景。
基于 EventBridge API Destination 构建 SaaS 集成实践方案
|
消息中间件 JSON 自然语言处理
基于 EventBridge 构建 SaaS 应用集成方案
事件源是事件驱动的基石,如何获取更多事件源也是 EventBridge 一直在探索和尝试的方向。针对市场上其他云厂商和垂直领域的 Saas 服务,EventBridge 发布了 HTTP Source 能力,提供简单且易于集成的三方事件推送 ,帮助客户更加高效、便捷地实现业务上云。
266 0
基于 EventBridge 构建 SaaS 应用集成方案
大型SaaS系统的数据范围权限设计与实现! 下
大型SaaS系统的数据范围权限设计与实现! 下
|
SQL 消息中间件 JavaScript
大型SaaS系统的数据范围权限设计与实现! 上
大型SaaS系统的数据范围权限设计与实现! 上
大型SaaS系统的数据范围权限设计与实现 2
大型SaaS系统的数据范围权限设计与实现 2

热门文章

最新文章