2. 多租户架构概述

2.1 多租户的定义

多租户(Multi-Tenancy)是一种软件架构模式,其中单个软件实例服务于多个租户,每个租户拥有独立的逻辑或物理边界。租户可以是组织、团队、项目或业务线,其核心诉求是:资源隔离、数据安全与性能保障。

关键特征: 多租户 ≠ 多用户。用户是租户内的个体;租户是资源分配与计费的最小单位。

2.2 隔离模型:硬隔离 vs 软隔离

隔离模型决定了租户之间的故障边界与资源竞争程度。下表对比了两种主流模型的核心差异:

维度 硬隔离(Hard Isolation) 软隔离(Soft Isolation)
资源分配 独占物理/虚拟资源(如整机、专用GPU) 共享资源池,通过配额/限流控制
故障域 租户故障不影响其他租户 故障可能扩散,依赖熔断/降级保护
性能保障 严格保证(无邻居噪声) 统计复用,存在突发争抢
成本效率 低(资源碎片多) 高(资源池化利用率高)
典型场景 金融核心、合规敏感系统 SaaS应用、开发测试环境
容量规划启示: 硬隔离需要按峰值预留资源,容量利用率通常低于 50%;软隔离允许超配(overcommit),但必须建立精确的租户画像与争抢模型。

2.3 租户粒度与资源池化策略

租户粒度直接影响隔离成本与运维复杂度。常见的粒度层级包括:

  • 实例级租户: 每个租户独占一个服务实例(如独立 Kubernetes 集群)。隔离最强,但管理开销最大。
  • 命名空间级租户: 共享集群,通过命名空间(Namespace)划分。隔离中等,适合大多数微服务场景。
  • 应用级租户: 同一进程内通过上下文隔离(如线程池、数据库 schema)。隔离最弱,但资源复用度最高。

资源池化策略需与租户粒度匹配:

策略 适用粒度 核心机制
静态分区 实例级 固定 CPU/内存/磁盘配额,不可超配
动态权重 命名空间级 基于公平调度(如 Dominant Resource Fairness)
弹性共享 应用级 资源池 + 限流 + 熔断 + 降级
多租户隔离模型对比 硬隔离(Hard Isolation) 租户 A(独占节点) 租户 B(独占节点) 租户 C(独占节点) 租户 D(独占节点) 故障域:完全独立 资源利用率:低(≤50%) 成本:高 软隔离(Soft Isolation) 共享资源池(CPU/内存/IO) Kubernetes 集群 / 数据库实例 租户A 租户B 租户C 故障域:共享,依赖限流/熔断 资源利用率:高(可超配 2~5x) 成本:低 选择依据:合规要求 → 硬隔离;成本敏感 → 软隔离;多数生产环境采用混合模型

2.4 混合隔离模型

实际生产环境很少采用纯硬或纯软隔离。推荐分层混合策略:

  1. 控制面隔离: API Server、调度器等共享,但租户数据隔离。
  2. 数据面隔离: 核心租户使用硬隔离节点,普通租户使用软隔离节点池。
  3. 存储隔离: 通过 PV/PVC 或存储池实现租户级 IOPS 隔离。
常见陷阱: 软隔离下“吵闹邻居”问题(Noisy Neighbor)会导致容量规划偏差。必须为每个租户建立 资源画像(CPU 使用率 P99、内存抖动频率、IO 突发模式),否则超配比例失控。
租户粒度与资源池化策略 租户粒度 实例级 独占集群/VM 命名空间级 共享集群 + 配额 应用级 进程内上下文 资源池化策略 静态分区 固定配额,不可超配 动态权重 公平调度(DRF) 弹性共享 限流 + 熔断 + 降级 匹配建议 实例级 → 静态分区 命名空间级 → 动态权重 应用级 → 弹性共享 混合场景: 核心租户硬隔离 普通租户软隔离 容量规划需按租户 粒度分层建模

2.5 容量规划视角的关键指标

在多租户架构中,以下指标直接影响资源预留与故障边界测试:

  • 租户密度: 每节点/每集群承载的租户数量。密度越高,软隔离压力越大。
  • 超配比(Overcommit Ratio): 分配资源 / 物理资源。建议初始值 ≤ 3:1,根据监控逐步调整。
  • 隔离失效概率: 因资源争抢导致 SLA 违约的概率。硬隔离为 0,软隔离需通过混沌工程验证。
  • 故障半径: 单个租户故障影响的最大租户数。硬隔离为 1,软隔离可能扩散至整个共享池。
实践建议: 在容量规划初期,为每个租户建立 资源预留基线(Guaranteed)与 弹性上限(Limit)。硬隔离租户预留 = 峰值需求;软隔离租户预留 = 均值 + 1.5σ(标准差),剩余资源作为共享缓冲区。