saas 多租户redis saas多租户平台开发实战_spring

多租户技术(英语:multi-tenancy technology)或称多重租赁技术,是一种软件架构技术,它是在探讨与实现如何于多用户的环境下共用相同的系统或程序组件,并且仍可确保各用户间数据的隔离性。 多租户简单来说是指一个单独的实例可以为多个组织服务。

技术离不开生活,技术源于生活

房东有一套两室一厅的房子,房东和两个租户分别签有合同,合同内容包含租户拥有哪个房间、期限与其房东的授权证明。

A租户是一对小夫妻,B租户是一个刚毕业的单身大学生,A租户在自己的房间有自己的角色(妻子与丈夫),B租户同样在自己的房间拥有自己的角色(单身狗),两个租户都与房东有关系,但俩个租户之间却没有任何关系。

多租户技术特点

1.多个租户共享平台。

2.租户之间数据隔离。

3.租户之间发布更新互不影响。

4.签订合约租户无线扩展

FaaS介绍

微服务(MicroService)是以专注于单一服务/功能的小型单元块为基础,利用模块化的方式组合成复杂的大型应用服务。

FaaS是Function as a Service的缩写,可以简单理解为功能服务化。FaaS提供了一种比微服务更加服务碎片化的软件架构范式。FaaS可以让研发只需要关注业务代码逻辑,不再关注技术架构。

例如:FaaS提供“选择工作流模板”、“启动工作流”、“完成流程”、“查看工作流状态“功能,当触发“启动工作流”事件后,再研发所需的业务代码。业务与架构分离,让专业更加专业。

FaaS特点

无状态,目的:业务隔离

1、组件业务配置抽离,脚手架工程使用则配置。

2、项目适合即使用

脚手架工程pom.xml引入便使用

脚手架     目的:自定义模版,快速集成

版本化     目的:多元化的需求变更互不影响

通过FaaS将架构分层

前端:

组件研发完成上传npm仓库,并提供组件使用说明。注意:同一类业务封装成一个插件,高内聚低耦合原则。

脚手架研发引用组件,并根据组件使用说明向组件传递参数。

并不是所有功能页面全部使用远程组件开发,只有可重复利用的页面使用该模式。

后端:

FaaS组件

提供功能即服务的组件,实现插入即可使用。

MS服务

微服务层,通过脚手架使用FaaS组件,对外提供单一服务。

WS组件

消费者层,用于消费MS服务,对外提供具体的业务实现。注意:该WS不直接对外提供服务,需打成jar包发布到maven私服上。

WS服务

脚手架工程,直接装配WS组件。同时也可以实现特性业务研发。

基础功能介绍

应用注册

就像是将每个房间安装完锁后,把钥匙交给房东。

申请应用

租户选择房间,并向房东申请签订合同。

授权应用

租户和房东签订合同,确定那个房间(钥匙),什么期限。

数据授权

只有签订合同租户才享有房间内物品使用权。

应用隔离

每个房间互不干涉

权限管理

用户有用户的权限、房东有房东权限、房间有房间的权限,三者不不干涉。

房间(平台)

一个房间对应一个平台(医生端、患者端、SaaS端),同样也可以是一个应用(预约挂号、随访问卷),房间只需要关联一个应用而已。同一个房间却可以被多个客厅关联,通过关联关系区分房间属性(所属)。且房间拥有独立入口。

saas 多租户redis saas多租户平台开发实战_spring_02

应用(菜单首页)

所有应用菜单统一挂载在应用商城,应用商城是个房间。创建房间时可选择应用,不选则默认应用。有了应用后,通过权限功能给组织角色授权。

saas 多租户redis saas多租户平台开发实战_电子商务_03

客厅(项目)

一个客厅代表一个项目,客厅是一个项目的门户,通过客厅可以展示与客厅关联的每一个房间。客厅默认关联应用商城(房间),其他房间、应用可等创建客厅后登录客厅在应用商城里下载。创建客厅将自动创建管理员帐号密码及初始化角色。

拓展内容:客厅不作为根节点,客厅之上也许还有房东,一个房东可以关联多个客厅。

saas 多租户redis saas多租户平台开发实战_电子商务_04

钥匙(鉴权与重定向)

每个房间都会是一个独立的个体,插拔即可用。不会限制团队、语言,只需要提供鉴权机制与鉴权后的重定向路径即可。用户想进入房间,首先需要鉴权,通过后通过钥匙打开房门地址。

saas 多租户redis saas多租户平台开发实战_spring_05

合同(用户APP记录)

用户从应用商城下载应用的记录。