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