聚合分组

多密钥池整合与智能负载均衡解决方案

功能概述

什么是聚合分组?

聚合分组(Aggregate Group)是 GPT-Load 提供的一种高级分组类型,允许您将多个标准分组组合成一个逻辑分组。通过聚合分组,您可以统一管理多个密钥池,实现智能负载均衡和高可用性。

统一管理多个密钥池

将不同的密钥池整合到一个接入点

智能负载均衡

基于权重自动分配请求流量到各个子分组

提高可用性

当某个子分组无可用密钥时,自动切换到其他子分组

灵活流量控制

动态调整各子分组的流量占比

使用场景

1

多密钥池负载均衡

将多个标准分组的密钥池聚合,实现流量均衡分配

2

资源隔离与聚合

不同部门的密钥池独立管理,但可以通过聚合分组统一对外提供服务

3

弹性扩容

快速添加新的密钥池到现有聚合分组,无需修改客户端配置

4

金丝雀发布

通过调整权重控制新密钥池的流量占比,实现渐进式切换

5

高可用架构

当主密钥池耗尽时,自动切换到备用密钥池

核心概念

聚合分组

一种特殊的分组类型,本身不包含密钥,而是引用其他标准分组,通过智能算法实现多个密钥池的统一管理和负载均衡。

子分组

被聚合分组引用的标准分组,实际存储和管理 API 密钥。每个子分组可以独立配置和维护。

权重

决定子分组在负载均衡中的流量占比,取值范围 0-1000。权重越高,分配的流量越多;权重为 0 表示临时禁用该子分组。

状态

子分组的运行状态包括有效(权重 > 0 且有可用密钥)、禁用(权重 = 0)、无效(权重 > 0 但无可用密钥)三种类型。

状态管理

权重可用密钥状态说明
> 0
有效
正常参与负载均衡
= 0-
禁用
不参与负载均衡(临时禁用)
> 0
无效
尝试选中时会自动跳过

设计原理

负载均衡算法

GPT-Load 使用平滑加权轮询(Smooth Weighted Round-Robin)算法进行子分组选择,该算法具有以下特点:

平滑分布:流量分配更加均匀,避免突发流量

精确权重:严格按照配置的权重比例分配流量

高性能:O(n) 时间复杂度,适合高并发场景

子分组选择逻辑

1
计算候选分组

根据加权轮询算法计算下一个候选子分组

2
检查可用性

检查该子分组是否有可用密钥

3
选择或跳过

有密钥则使用该子分组,无密钥则标记为已尝试,继续下一个候选

4
失败处理

如果所有子分组都无可用密钥,返回错误

关键特性

  • 智能跳过:自动跳过无可用密钥的子分组
  • 快速失败:遍历所有子分组后仍无可用密钥时,立即返回错误
  • 无状态:每个请求独立决策,不依赖外部状态

使用规则

子分组限制

不能嵌套

聚合分组 → 标准分组
聚合分组 → 聚合分组

渠道类型一致

所有子分组都是 OpenAI
混合 OpenAI 和 Gemini 子分组

验证端点一致

所有子分组都使用 /v1/chat/completions
子分组 A 使用 /v1/chat/completions,子分组 B 使用 /v1/completions

权重配置规则

取值范围

0-1000

特殊值 0

禁用该子分组(不参与负载均衡)

百分比计算

子分组占比 = 子分组权重 / 所有子分组权重之和 × 100%

推荐实践

使用整百数值(如 100、200、500)便于理解和维护

最佳实践

等比分配

多个密钥池容量相近,希望平均分配流量

子分组 A: 100
子分组 B: 100
子分组 C: 100

优势

  • 简单直观,流量均衡
  • 适用于多个同等重要的密钥池

容量比例分配

密钥池容量差异较大,按容量比例分配

子分组 A(50个密钥): 500  # 50%
子分组 B(30个密钥): 300  # 30%
子分组 C(20个密钥): 200  # 20%

优势

  • 密钥利用率均衡
  • 避免小池过载

主备模式

主密钥池优先使用,备用密钥池作为保险

子分组 A(主): 900  # 90%
子分组 B(备): 100  # 10%

优势

  • 优先消耗主池
  • 备池作为缓冲

金丝雀发布

测试新密钥池的稳定性,逐步切换流量

阶段 1: 旧(980) / 新(20)
阶段 2: 旧(800) / 新(200)
阶段 3: 旧(200) / 新(800)

优势

  • 风险可控
  • 问题影响范围小

配合模型重定向

当聚合分组包含多个相同渠道类型但对接不同服务商的子分组时,可在每个子分组配置模型重定向,实现客户端统一模型名访问。

应用示例

聚合分组包含三个 OpenAI 格式的子分组,对接不同服务商,客户端统一使用 gpt-4 模型名:

子分组A (OpenAI官方): {"gpt-4": "gpt-4-turbo"}
子分组B (Azure OpenAI): {"gpt-4": "gpt-35-turbo"}
子分组C (OpenRouter): {"gpt-4": "openai/gpt-4-turbo"}

客户端只需使用 gpt-4,聚合分组会根据权重分配流量,每个子分组自动将其映射到实际支持的模型。

故障排查

请求返回 "No available sub-groups"

原因

所有子分组都无可用密钥、所有子分组都被禁用(权重为 0)、或聚合分组未添加子分组

解决方法

  • 1检查子分组列表,查看状态
  • 2进入"无效"状态的子分组,验证和补充密钥
  • 3恢复被禁用子分组的权重
  • 4确保至少有一个子分组处于"有效"状态

流量分配不符合权重配置

原因

部分子分组无可用密钥被自动跳过、权重配置最近刚修改需要观察更长时间、或请求量太少统计学上不具有代表性

解决方法

  • 1检查所有子分组是否都有可用密钥
  • 2在日志页面统计更长时间段(如 1 小时)的流量分布
  • 3确认权重配置已保存并生效

无法修改标准分组的渠道类型

原因

该标准分组正被一个或多个聚合分组引用为子分组

解决方法

  • 1在该标准分组详情页面查看"被引用的聚合分组"列表
  • 2从列表中的每个聚合分组移除该子分组
  • 3修改渠道类型
  • 4如需要,重新添加到聚合分组