我们提供安全,免费的手游软件下载!
大家好,我是汤师爷~
在当今的软件行业中,SaaS(软件即服务)模式正在迅速崛起。它改变了传统的软件使用方式。
多租户技术是SaaS模式的核心,这项技术让多个客户可以共享同一个软件系统,但每个客户的数据都是独立的,互不干扰。
本章将深入探讨多租户系统的概念、架构和实现方法。
多租户是SaaS(软件即服务)领域里特有的一个概念。在SaaS服务中,“租户”指的就是使用这个SaaS系统的客户。
那么租户和用户有什么区别呢?举个例子,假设你正在使用一款面向企业(ToB)的SaaS产品,"用户"通常指的是公司里实际操作这个SaaS系统的员工。而"租户"则代表整个公司或组织。也就是说,一个租户下可能包含多个用户。
多租户技术是一种软件架构,它允许多个租户共享同一个系统实例,同时确保每个租户的数据和行为互相独立、互不干扰。换句话说,尽管所有租户使用的是同一套系统,但各自的数据完全隔离,并且能够保障安全性。
传统的软件项目,一般是指软件公司根据客户的需求,专门开发一套特定的软件系统。然后,这个软件被部署在一个独立的环境里,通常就是企业内部的服务器上。
SaaS模式则不同,它将软件服务部署在云端环境中。不同的客户都能通过浏览器或网络访问,使用相同的软件服务。就好比一家自助餐厅,准备了各种各样的菜品,任何人都可以进来品尝,不需要自己下厨做饭。
对于面向企业(ToB)的SaaS产品,多租户的使用场景一般涉及到三个使用角色:企业主、员工、SaaS平台运营。
1、企业主
企业主,也就是公司的管理者,他们是SaaS平台的直接客户。企业主想要订购和使用SaaS产品,首先要在SaaS平台上创建一个“企业账号”(也就是租户)。
在这个过程中,企业主需要注册一个公司账户并填写相关信息。完成后,SaaS平台系统会为企业主创建一个专属的"租户空间"。
企业主随后可以在这个空间内订购所需的产品,并添加员工账号。一旦员工被加入到租户中,他们就能通过登录SaaS平台来使用这些产品。
2. 员工
一个员工可能会被多个企业添加,即该用户属于多个租户。这意味着员工在使用SaaS平台时,需要根据情况,切换到对应的租户。
例如,今天处理A公司的任务就切换到A公司,明天处理B公司的任务就切换到B公司。这种租户切换设计让员工能够在多个企业账号间自由切换,避免身份混淆影响使用体验。
3. SaaS平台运营
SaaS平台运营团队的主要职责是管理租户。他们需要确保每个租户的权限、资源分配、产品都得到妥善管理。
例如,当企业主新增员工时,平台必须确保该员工只能访问所属企业的数据。如果企业主想调整订购的产品,SaaS平台运营也能够迅速响应。
租户管理涉及权限控制、资源调度、能力配置、计费管理等一系列复杂操作。SaaS平台运营团队的职责就是确保这一切运转顺畅。
在SaaS模式下,多租户之间的资源隔离是基础且关键的一环。SaaS服务商需要在确保运营效率和控制成本的前提下,搭建一个让多个租户能够同时访问的共享环境。
虽然大家都在用同一套SaaS产品服务,但资源访问必须严格隔离,确保租户之间互不干扰。SaaS资源隔离通常包含以下几个层次:
1. 基础设施的隔离
第一层主要指SaaS系统运行所依赖的基础设施资源,比如计算资源(CPU、内存)、存储资源(数据库、文件系统)、网络资源(IP、带宽)等。
这些资源的隔离主要是为了确保不同租户在使用系统时,互相之间不会因为资源竞争而受到影响。
2. 组织权限的隔离
第二层隔离涉及组织权限的隔离,包括组织信息、用户账号、角色、权限配置、产品授权关系等。这些数据决定了谁能用什么功能,谁有操作哪些内容的权限。
组织权限隔离的目的是让每个租户拥有自己独立的组织架构和权限设置,不会因为其他租户的操作而发生冲突。
3. 业务数据的隔离
最后一层隔离涉及系统运行过程中产生的业务数据,如订单、发票、操作记录和数据报表等。通过精细的数据权限配置,这些信息可以在不同组织单元间实现完全隔离,从而保障业务信息的隐私性和安全性。
多租户架构主要解决第一层的隔离问题,即计算、存储和网络等资源的隔离。为了实现多租户隔离架构,我们需要先了解几种常见的多租户隔离模式。
有些 SaaS 服务商选择竖井隔离模式,也就是每个租户都运行在独立的资源环境中。
有人会觉得,这不就是传统软件模式吗?为什么还是 SaaS?其实,如果这些独立资源具备标准化的租户身份识别、入驻流程、计费体系、部署和运营流程,那它仍然符合 SaaS 的定义,只不过是给每个客户都提供了一整套独立的基础设施。
优点
缺点
相信很多 SaaS 服务商会优先选择共享模式,也就是多租户共享一套基础设施资源,这样能让 SaaS 软件服务更加高效、敏捷、低成本。
优势
劣势
传统大企业往往更青睐私有化部署和个性化交付的传统模式,因为它们需要更强的管控能力和更高的安全性。而中小企业因为预算有限,需求通常也更标准化,因此更倾向于选择价格低、订购方便的 SaaS 产品。
为满足不同客户的需求,还有一种融合了竖井模式和共享模式的分域隔离模式。
在这种模式下,将资源细分为基础域和专用域:基础域使用共享模式,所有租户共享一套资源;专用域则采用竖井模式,每个租户拥有独立的资源环境。
大多数中小客户通常在基础域中使用 SaaS 产品,而只有少数具备强付费能力并有强隔离需求的大客户会选择在专用域中运行 SaaS 产品。
需要注意的是,为避免产生多个产品版本,SaaS 服务商需确保基础域和专用域的产品版本保持一致。
个性化需求尽可能通过 PaaS 平台来实现,让 ISV(独立软件开发商)参与建设。否则,一旦 SaaS 产品的标准化程度降低,多版本的维护将变得极其困难。
在了解了多租户的使用场景,以及各种多租户隔离模式后,我们可以总结一下多租户系统的定位:
多租户系统的核心目的是让多个企业用户共享一套SaaS产品,但同时确保企业之间的数据和行为是完全隔离的。通过这种设计,系统能够在满足不同用户需求的同时,提供灵活的资源配置和高效的管理方式。
根据不同的用户需求,多租户系统可以在资源上做出调整,灵活支持资源的共享或隔离。例如,对于注重成本的客户,可以采用共享的资源模式;而对于数据敏感度高的客户,则可以采用竖井隔离等独立的资源分配方式。
这种灵活性让SaaS服务商可以在资源效率和客户个性化需求之间找到平衡,不论是降低成本,还是满足高安全需求,都有相应的方案。多租户系统需要具备的能力包括:
我们已经了解了多租户系统的定位和它需要具备的能力。现在,让我们深入探讨一下多租户系统的概念模型。概念模型是多租户系统的"骨架",帮助我们理解系统各部分的组织和运作方式。
SaaS平台可以创建和管理多个平台用户、租户和资源域,这样的模型结构,可以让多个企业客户和用户能在同一平台上运行,而彼此之间的数据和资源独立。
一个平台用户可以关联到多个租户。例如,张三作为一个平台用户,可以同时属于租户A和租户B。这种设计让平台用户能够灵活切换所属租户,方便在不同企业账号间工作。
在单个租户中,也可以拥有多个用户,让企业内多名员工共享租户的资源和服务。
单个租户可以订购多个解决方案,一个解决方案往往包含多个产品,以满足企业客户的多样需求。这些产品可以运行在特定的资源域,保证不同产品在同一租户中的高效管理和资源隔离。
租户内的组织架构支持上下级关系,在单个组织单元内,可以配置多个员工,并将员工与平台用户绑定,便于员工通过自己的账户访问相关服务。
1、租户与内部模型关系
在SaaS产品中,租户是最顶层的概念,可以理解为一个大房子的租赁人,而房子内部的组织、用户、产品、云资源等模型就像是这个房子里的各种家具和设施。
换句话说,租户是SaaS产品为每个客户或企业专门划分出的独立空间,而组织、用户、产品、云资源等模型则是租户内部的细分结构,为不同的使用需求和权限分配提供支持。
通过这种类比可以看出,SaaS产品将租户作为最顶层的概念,为企业提供了一套独立空间,租户内部的各项资源则在这个框架下被灵活管理和使用,让企业客户可以获得定制化的服务和资源隔离的安全保障。
2、租户身份识别
在多租户SaaS系统中,无论采用哪种隔离模式,准确识别租户身份并获取相应资源配置是非常关键的。
当用户登录SaaS系统后,系统会生成并返回租户上下文信息。这个上下文信息包括用户关联的租户和对应的隔离模式(如共享或独立资源)。
租户上下文信息会附加在每次系统交互中,贯穿整个系统调用链。从用户请求到系统内部处理的每一步,都保留了租户上下文。这样,上游的请求处理模块就可以知道如何路由和访问下游资源。
租户上下文信息让系统能够在请求传递过程中精准识别租户身份和配置。系统会根据上下文动态选择数据库、应用实例或网络资源,实现数据和资源隔离,确保不同租户的访问互不干扰。
3、租户计费计量管理
租户的计费计量管理,是SaaS平台不可或缺的一部分。不同的隔离模式下,计费方式有所不同。
竖井隔离模式下,计费相对简单。因为每个租户使用的资源(计算、存储、网络等)都是单独分配的,就像每个租户有自己的一块“独立地盘”。
因此,我们只需统计每个租户占用的资源量,就能计算出费用。这种模式逻辑清晰,一目了然。
共享模式下,计费则比较复杂。因为多个租户共享同一资源池,理想情况是,确保每个租户只为自己实际用到的部分买单。
通常,我们会综合考量几个指标,比如请求的数量、存储容量、创建的数据对象数量等。通过这些数据的组合,我们可以相对准确算出每个租户的费用。
我们刚刚探讨了多租户系统的概念模型和关键设计。现在,让我们看下多租户系统的应用架构是如何从一层层构建起来的。
1、应用层设计
应用层的主要作用是为具体的用户场景提供应用服务,帮助用户在特定场景下完成操作。通过编排领域层的各项能力,实现SaaS产品的核心功能。应用层包含两个关键模块:
2、领域层设计
领域层的核心是围绕核心业务对象,提供可复用的业务能力,这是对系统整体复用和抽象的结果。它包含以下模块:
本文已收录于,我的技术网站: tangshiye.cn 里面有,算法Leetcode详解,面试八股文、BAT面试真题、简历模版、架构设计,等经验分享。
热门资讯