你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适合多租户解决方案架构师和开发人员的资源
多租户应用程序的体系结构
以下文章提供了 Azure 上的多租户体系结构的示例。
体系结构 | 摘要 | 技术重点 |
---|---|---|
Azure 上的多租户 SaaS | Azure 上的多租户 SaaS 方案的参考体系结构,该体系结构部署在多个区域 | Web |
通过多租户 Azure Kubernetes 服务 (AKS) 使用应用程序网关入口控制器 | 使用 AKS 和 AGIC 实现多租户的示例 | Kubernetes |
所有多租户体系结构 | 列出所有包含多租户的体系结构 | 多个 |
云设计模式
以下云设计模式经常在多租户体系结构中使用。
模式 | 总结 |
---|---|
部署戳模式 | 部署应用程序组件的多个独立副本(缩放单元),包括数据存储。 |
联合标识 | 将身份验证委托给外部标识提供者。 |
守护程序 | 通过使用专用的主机实例保护应用程序和服务,该实例用于充当客户端和应用程序或服务之间的中转站、验证和整理请求,并在它们之间传递请求和数据。 |
基于队列的负载调控 | 使用队列在任务与所调用的服务之间充当缓冲,从而缓解间歇性负载过大现象。 |
分片 | 将数据存储划分为一组水平分区或分片。 |
限制 | 控制应用程序实例、单个租户或整个服务对资源的消耗。 |
反模式
考虑近邻干扰反模式,其中一个租户的活动可能会对另一个租户使用系统造成负面影响。
Microsoft Azure 架构良好的框架
虽然整个 Azure 架构良好的框架对于所有解决方案都非常重要,但请特别注意可靠性支柱。 云托管的性质导致应用程序通常是多租户的,它们使用共享平台服务,竞争资源和带宽,通过 Internet 进行通信,并在商用硬件上运行。 这增加了暂时性故障和更持久故障的可能性。
多租户体系结构指导
- 在 Azure 上架构多租户解决方案(视频):此视频讨论了如何在 Azure 上设计、架构和构建多租户解决方案。 如果你正在构建 SaaS 产品或其他多租户服务,在你规划高性能、租户隔离并管理部署时,需要经过充分的考虑。 此研讨会面向正在构建多租户或 SaaS 应用程序的开发人员和架构师,包括初创公司和 ISV。
- Azure Friday - 在 Azure 上架构多租户解决方案(视频):Azure Friday 的这段视频讨论了如何在 Azure 上设计、架构和构建多租户软件即服务 (SaaS) 解决方案。
- 加速 SaaS 之旅并消除风险(视频):此视频提供了有关过渡到软件即服务 (SaaS) 交付模型的指导 - 无论是从一开始就将现有解决方案从本地直接迁移到 Azure、考虑多租户体系结构,还是寻求对现有 SaaS Web 应用程序进行现代化改造。
有关 Azure 服务的资源
管理和符合性
- 组织和管理多个 Azure 订阅:考虑如何管理 Azure 订阅以及如何将租户资源分配到订阅非常重要。
- 跨租户管理体验:作为服务提供商,可以使用 Azure Lighthouse 从自己的 Microsoft Entra 租户内管理多个客户的资源。 可以使用 Azure 委托资源管理跨托管租户执行许多任务和服务。
- Azure 托管应用程序:在托管应用程序中,资源将部署到由应用发布者管理的资源组。 资源组在使用者的订阅中,但发布者租户中的标识有权访问该资源组。
计算
- 有关 Azure Kubernetes 服务 (AKS) 中的群集隔离的最佳做法:在 AKS 中可以灵活地运行多租户群集和隔离资源。 为了最大化 Kubernetes 的投资回报,必须首先了解并实施 AKS 多租户和隔离功能。 本最佳做法文章向群集操作员重点介绍隔离。
- 有关 Azure Kubernetes 服务中的群集安全和升级的最佳做法:在 Azure Kubernetes 服务 (AKS) 中管理群集时,工作负载和数据安全性是关键考虑因素。 在使用逻辑隔离运行多租户群集时,尤其需要保护对资源和工作负载的访问。
网络
专用链接
- 从提供商 (SaaS ISV) 和消费者的角度看 Azure 专用链接服务说明和演示:一段视频,介绍了支持多租户服务提供商(例如构建 SaaS 产品的独立软件供应商)的 Azure 专用链接服务功能。 此解决方案让使用者能够使用自己的 Azure 虚拟网络的专用 IP 地址访问提供者的服务。
- 带有 Azure 专用链接服务的 TCP 代理协议 v2 - 深入探讨:一段视频,深入探讨了 TCP 代理协议 v2,这是 Azure 专用链接服务的高级功能。 在多租户和 SaaS 方案中都非常有用。 这段视频向你展示了如何在 Azure 专用链接服务中启用代理协议 v2。 它还向你展示了如何配置 NGINX 服务以读取原始客户端的源专用 IP 地址(而不是 NAT IP),以通过专用终结点访问服务。
- 使用 NGINX Plus 解码来自 Azure 专用链接服务的代理协议 TLV
linkIdentifier
:一段视频,介绍如何使用 NGINX Plus 从 Azure 专用链接服务获取 TCP 代理协议 v2 TLV,然后。 该视频演示如何提取和解码专用终结点连接的数字linkIdentifier
(也称为LINKID
)。 此解决方案对于需要识别建立连接的特定使用者租户的多租户提供商很有用。 - SaaS 专用连接模式:一个示例解决方案,说明了使用 Azure 托管应用程序自动批准专用终结点连接的一种方法。
Web
- SaaS 解决方案基于声明的路由:本文讨论使用反向代理来促进租户路由和将请求映射到租户,从而增强 SaaS 解决方案中后端服务的管理。
存储和数据
- 使用 Azure Cosmos DB 大规模设计和构建多租户 SaaS 应用(视频):了解如何使用 Azure Cosmos DB 设计和优化多租户 SaaS 应用程序。 此会话探讨与租户隔离、成本优化和全局分发相关的关键设计注意事项。 无论您是拥有大量小型 B2C 租户,还是拥有少量高度倾斜的 B2B 租户,本环节的内容都适用
- Azure Cosmos DB 和多租户系统:讨论如何构建使用 Azure Cosmos DB 的多租户系统的博客文章。
- Azure Cosmos DB 分层分区键:通过使用分层分区键(也称为子分区技术),可在本机使用多个级别的分区键对容器进行分区。 这可以为多租户方案或工作负载启用更优化的分区策略,否则它们需要使用合成分区键。
- Azure SQL 数据库多租户 SaaS 数据库租户模式:介绍可以通过 Azure SQL 数据库用于多租户 SaaS 应用程序的各种租户模型的一系列文章。
- 在 Azure SQL 上为大型 SaaS 提供商运行 100 万个数据库:Microsoft Dynamics 365 和 Power Platform:介绍 Dynamics 365 团队如何大规模管理数据库的博客文章。
- 使用 Azure Database for PostgreSQL 超大规模设计多租户数据库
- 水平、垂直和功能数据分区:在许多大规模和多租户解决方案中,数据划分为可以单独管理和访问的分区。 分区可以改善可伸缩性、减少争用,以及优化性能。 它还可以提供一种按使用模式和租户划分数据的机制。
- Azure 服务的数据分区策略:此文介绍了在各种 Azure 数据存储中对数据进行分区的一些策略。
- 使用 Azure Database for PostgreSQL 超大规模 Citus 构建多租户应用程序(视频)
- 使用 Azure Cosmos DB 的多租户应用程序视频)
- 使用 Azure Cosmos DB 和 Azure 构建多租户 SaaS(视频):关于多租户 SaaS 初创公司 Whally 如何从头开始在 Azure Cosmos DB 和 Azure 上构建新式平台的实际案例研究。 Whally 演示了他们制定的与分区、数据建模、安全多租户、性能、从更改源到 SignalR 的实时流式处理等相关的设计和实现决策,所有这些都使用 Azure 应用服务上的 ASP.NET Core。
- Azure SQL 数据库上 SaaS 应用程序的多租户设计模式(视频)
Messaging
- Azure 事件网格域:使用 Azure 事件网格域可以大规模管理多租户事件体系结构。
- 服务总线示例:使用 Azure 服务总线跨租户通信:Azure 服务总线的示例实现演示如何在中心提供程序与一个或多个客户(租户)之间通信。
标识
- Microsoft Entra ID 中的租户:Microsoft Entra ID 有自己的多租户概念,即跨多个 Microsoft Entra 目录运行。 当开发人员使用 Microsoft Entra 应用时,他们可选择将其应用配置为单租户或多租户,从而支持不同的场景。
- 使用 Azure AD B2C 的自定义品牌标识解决方案:Azure Active Directory B2C 是一个客户标识访问管理解决方案,每天能够支持数百万用户和数十亿次身份验证。
- 使用 Microsoft 标识平台终结点构建多租户守护程序:此示例应用程序演示如何使用 Microsoft 标识平台终结点在长时间运行的非交互进程中访问 Microsoft 企业客户的数据。 它使用 OAuth2 客户端凭据授权获取访问令牌,然后使用该令牌调用 Microsoft Graph 并访问组织数据。
- 使用 Microsoft Entra ID 对多租户应用进行身份验证和授权:了解如何通过 Microsoft Entra ID 在多租户方案中改进云原生应用的功能。
- Azure 体系结构演练:为 B2C 方案构建多租户 Azure 体系结构:演练使用了 Azure Active Directory B2C 和 API 管理的多租户移动应用的体系结构。
- 在 SaaS 解决方案中使用 Microsoft Entra ID 定义和实现权限、角色和范围:本文介绍与 Microsoft Entra 身份验证和授权相关的三个主要概念,SaaS 提供商可以使用这些概念。 它涵盖应用程序角色功能、委派和应用程序权限以及范围功能。
分析
- 使用 Power BI 嵌入式分析的多租户解决方案:在设计包含 Power BI Embedded 的多租户应用程序时,必须认真选择最符合你的需求的租户模型。
IoT
- IoT 中心设备预配服务中的多租户:多租户 IoT 解决方案通常使用一组分散在各个区域的 IoT 中心来分配租户设备。
AI/ML
- 多租户 SaaS 应用程序和 Azure 认知搜索的设计模式:此文档介绍了使用 Azure 认知搜索构建的多租户应用程序的租户隔离策略。
- 采用多租户方式的 ML 管道解决方案:此博客文章介绍了如何使用 Azure 机器学习工作区来设计 Azure 机器学习管道,从而支持多个租户。
社区内容
Kubernetes
- Kubernetes 的三种租户模型:Kubernetes 群集通常由组织中的多个团队使用。 此文介绍了 Kubernetes 的三种租户模型。
- 了解 Kubernetes 多租户:Kubernetes 不是现成的多租户系统,需要自定义配置。 本文介绍了 Kubernetes 多租户类型。
- Kubernetes 多租户 - 最佳做法指南:随着 Kubernetes 的使用不断普及,各大组织对 Kubernetes 多租户越来越感兴趣。但是,由于 Kubernetes 并不直接属于一个多租户系统,因此要设计出一种多租户 Kubernetes 实现会有一定难度。 本文介绍了这些挑战、如何克服这些挑战,以及 Kubernetes 多租户的一些有用工具。
- Capsule:让 Kubernetes 多租户的实现变得简单:Capsule 可以帮助在 Kubernetes 群集中实现多租户和基于策略的环境。 它不是一个“平台即服务 (PaaS)”产品,而是一个基于微服务的生态系统,且采用了极简设计方法并仅使用上游 Kubernetes。
- Crossplane:云原生控制平面框架:Crossplane 使你能够使用基于 Kubernetes 的方法为自己的解决方案生成控制平面。
作者
本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。
主要作者:
- John Downs | 首席软件工程师
- Paolo Salvatori | FastTrack for Azure 首席客户工程师
- 阿森·弗拉基米尔斯基|首席工程师,FastTrack for Azure
- LaBrina Loving | FastTrack for Azure 首席客户工程经理
若要查看非公开领英个人资料,请登录领英。