图解:多租户系统架构设计
强少来了
共 4930字,需浏览 10分钟
·
2024-05-15 08:00
传统软件模式 VS SaaS模式
SaaS多租户隔离模式
SaaS资源隔离包含几个层次:
-
第一层是SaaS系统底层所涉及到的计算、存储、网络等资源的隔离。 -
第二层是系统基础数据的隔离,主要包括组织,用户,角色,权限,产品能力授权关系等。 -
第三层是系统使用过程中,各类业务动态数据的隔离,例如业务单据、操作记录等。
竖井隔离模式
优势
-
满足强隔离需求:一些客户为了系统和数据的安全性,可能提出非常严格的隔离需求,期望软件产品能够部署在一套完全独立的环境中,不和其他租户的应用实例、数据放在一起。 -
计费逻辑简单:SaaS服务商需要针对租户使用资源进行计费,对于复杂的业务场景,计算、存储、网络资源间的关系同样也会非常复杂,计费模型是很有挑战的,但在竖井模式下,计费模型相对来说是比较简单的。 -
降低故障影响面:因为每个客户的系统都部署在自己的环境中,如果其中一个环境出现故障,并不会影响其他客户使用软件服务。
劣势
-
规模化问题:由于租户的SaaS环境是独立的,所以每入驻一个租户,就需要创建和运营一套SaaS环境,如果只是少量的租户,还可能可以管理,但如果是成千上万的租户,管理和运营这些环境将会是非常大的挑战。 -
成本问题:每个租户都有独立的环境,花费在单个客户上的成本将非常高,会大幅削弱SaaS软件服务的盈利能力。 -
敏捷迭代问题:SaaS模式的一个优势是能够快速响应市场需求,迭代产品功能。但竖井隔离策略会阻碍这种敏捷迭代能力,因为更新、管理、支撑这些租户的SaaS环境,会变得非常复杂和低效。 -
系统管理与监控:在同一套环境中,对部署的基础设施进行管理与监控,是较为简单的。但每个租户都有独立的环境,在这种非中心化的模式下,对每个租户的基础设施进行管理与监控,同样也是非常复杂、困难的。
共享模式
优势
-
高效管理:在共享策略下,能够集中化地管理、运营所有租户,管理效率非常高。同时,对基础设施配置管理、监控,也将更加容易。相比竖井策略,产品的迭代更新会更快。 -
成本低:SaaS服务商的成本结构中,很大一块是基础设施的成本。在共享模型下,服务商可以根据租户们的实际资源负载情况,动态伸缩系统,这样基础设施的利用率将非常高。
劣势
-
租户相互影响:由于所有租户共享一套资源,当其中一个租户大量占用机器资源,其他租户的使用体验很可能受到影响,在这种场景下,需要在技术架构上设计一些限制措施(限流、降级、服务器隔离等),让影响面可控。 -
租户计费困难:在竖井模型下,非常容易统计租户的资源消耗。然而,在共享模型下,由于所有租户共享一套资源,需要投入更多的精力统计单个租户的合理费用。
分域隔离模式
多租户系统的定位
多租户系统需要具备的能力
-
多个租户支持共享一套云资源,如计算、存储、网络资源等。单个租户也可以独占一套云资源。 -
多个租户间能够实现数据与行为的隔离,能够对租户进行分权分域控制。 -
租户内部能够支持基于组织架构的管理,可以对产品能力进行授权和管理。 -
不同的产品能力可以根据客户需求,支持运行在不同的云资源上。
多租户概念模型
多租户核心概念
-
租户:一般指一个企业客户或个人客户,租户之间数据与行为是隔离的。 -
用户:在某个租户内的具体使用者,可以通过使用账户名、密码等登录信息,登录到SaaS系统使用软件服务。 -
组织:如果租户是一个企业客户,通常会拥有自己的组织架构。 -
员工:是指组织内部具体的某位员工。 -
解决方案:为了解决客户的某类型业务问题,SaaS服务商将产品与服务组合在一起,为商家提供整体的打包方案。 -
产品能力:指的是SaaS服务商对客户售卖的产品应用,特指能够帮助客户实现端到端场景解决方案闭环的能力。 -
资源域:用来运行1个或多个产品应用的一套云资源环境。 -
云资源:SaaS产品一般都部署在各种云平台上,例如阿里云、腾讯云、华为云等。对这些云平台提供的计算、存储、网络、容器等资源,抽象为云资源。
概念模型设计
-
SaaS平台可以创建与管理多个平台用户、多个租户、多个资源域。 -
单个平台用户可以关联到多个租户下,例如,平台用户张三,可以是租户A的用户,也可以是租户B的用户。单个租户下可以拥有多个用户。 -
单个租户可以订购多个解决方案,解决方案可以包多个产品能力,产品能力运行在某个资源域上。 -
组织单元间有上下级关系,单个组织下可以有多个员工,员工与单个用户进行绑定。
多租户核心场景
租户内部模型关系
租户身份识别
租户计费计量管理
多租户系统应用架构
总结
评论