2、租户配额管理基础:多租户模型、配额定义、配额类型(CPU/内存/请求数)

在服务网格治理回滚护栏场景中,租户配额校准是保障多租户隔离与资源公平性的核心机制。本章从多租户模型出发,系统阐述配额的定义、分类与计量方式,为后续 Envoy 动态配额校准奠定理论基础。

2.1 多租户模型

服务网格中的多租户模型通常采用 层级命名空间 与 标签选择器 相结合的方式实现逻辑隔离。每个租户对应一组工作负载(Deployment、Service、Pod),并通过 Envoy 的 Cluster 与 Listener 资源进行流量治理。

核心租户模型对比
模型类型 隔离粒度 配额作用域 Envoy 映射方式
扁平命名空间 Namespace 级别 每个 Namespace 独立配额 通过 envoy.filters.http.rbac 按 Namespace 过滤
层级命名空间 Namespace + 标签 父租户可下放子配额 通过 envoy.config.route.v3.Route 的 metadata 匹配
网格级租户 全局 ServiceAccount 跨 Namespace 共享配额池 通过 envoy.filters.network.http_connection_manager 的 stat_prefix 区分

在回滚护栏场景中,推荐使用 层级命名空间 模型,因为它支持配额下放与递归校准,便于在回滚时快速恢复父租户的配额基线。

多租户层级模型与配额作用域 多租户层级模型与配额作用域 根租户 (Tenant-Root) 子租户 A (Tenant-A) 子租户 B (Tenant-B) Workload-A1 Workload-A2 Workload-B1 Workload-B2 配额池:CPU 1000m / 内存 2Gi / 请求数 5000 QPS

2.2 配额定义与结构

配额(Quota)是对租户在单位时间内可消耗的资源上限的声明式约束。在 Envoy 网格中,配额定义通常以 CRD(Custom Resource Definition) 或 ConfigMap 形式存储,并通过 Rate Limit 过滤器或 Quota 插件动态加载。

配额定义三要素: 作用域(Scope)、资源类型(Resource Type)、阈值(Threshold)。缺少任一要素,配额校准将无法在回滚时正确恢复。

以下是一个典型的租户配额定义 YAML 示例:

apiVersion: mesh.quota/v1
kind: TenantQuota
metadata:
  name: tenant-a-quota
  namespace: mesh-system
spec:
  tenant: "Tenant-A"
  scope:
    type: "Namespace"
    value: "ns-tenant-a"
  resources:
    cpu:
      limit: "2000m"
      burst: "2500m"
    memory:
      limit: "4Gi"
      burst: "5Gi"
    requests:
      limit: 10000
      burst: 12000
  window: "1s"

2.3 配额类型详解

根据资源维度,配额分为三大类:CPU 配额、内存配额 和 请求数配额。在回滚护栏场景中,三类配额需要独立校准,但共享同一个租户 ID 映射表。

配额类型 计量单位 Envoy 指标来源 回滚校准策略
CPU millicores (m) envoy_cluster_upstream_rq_time + 容器 CPU 监控 按历史基线比例回退
内存 Gi / Mi envoy_cluster_memory_allocated 按租户权重重新分配
请求数 QPS / RPS envoy_cluster_upstream_rq_total 按滑动窗口降级

2.4 配额类型交互流程

在 Envoy 网格中,三类配额并非独立运行,而是通过 配额仲裁器(Quota Arbiter) 协同工作。当请求到达时,仲裁器依次检查 CPU、内存和请求数配额,任一维度超限即触发回滚护栏。

Envoy 配额类型交互流程 Envoy 配额类型交互流程 入口请求 配额仲裁器 CPU 配额检查 内存配额检查 请求数配额检查 通过 / 触发回滚护栏

2.5 配额校准的关键指标

在回滚护栏场景中,配额校准需要依赖以下实时指标:

  • CPU 使用率:通过 Envoy 的 upstream_rq_time 与容器 CPU 监控联合计算,单位 millicores。
  • 内存占用:Envoy 的 memory_allocated 指标,结合 Pod 的 container_memory_working_set_bytes。
  • 请求速率:Envoy 的 upstream_rq_total 按 1s 窗口统计,单位 QPS。
  • 租户权重:预定义的租户优先级权重,用于回滚时重新分配配额。
注意: 在回滚护栏触发时,CPU 和内存配额应优先降级(burst 归零),请求数配额应平滑降级(按比例减少),避免瞬时流量冲击导致雪崩。

2.6 配额类型与 Envoy 过滤器映射

Envoy 通过不同的过滤器实现三类配额的动态管控:

配额类型 Envoy 过滤器 配置路径 校准方式
CPU envoy.filters.http.router + 外部 CPU 监控 通过 typed_metadata 传递 CPU 阈值 动态调整路由权重
内存 envoy.filters.http.buffer + 内存限制 通过 max_request_bytes 控制 调整 buffer 大小
请求数 envoy.filters.http.rate_limit 通过 rate_limits 配置 动态更新限流规则

通过上述映射,Envoy 可以在不重启 Pod 的情况下,通过 xDS 动态更新配额阈值,实现回滚护栏的秒级校准。