来提交你的插件吧!
有疑问?来看看呗!

插件详情

LLM 模型Provider 负载均衡插件 logo

LLM 模型Provider 负载均衡插件

动态负载均衡Provider插件,支持多种负载均衡策略和动态配置

LLM模型
负载均衡
故障转移
版本v1.0.0
作者fluidcat
Star0
更新2025/12/26

插件说明

AstrBot 负载均衡 Provider 插件

AstrBot 负载均衡 Provider 插件的第一个完整版本,支持多种负载均衡策略以及智能故障转移机制,旨在提高 AI 服务的可靠性和性能。

项目说明

这是一个为 AstrBot 设计的负载均衡插件,通过灵活的策略选择和智能的故障转移机制,提高 AI 服务的可用性和性能。项目采用模块化设计,便于后续扩展和维护。欢迎社区参与,共同完善这个插件!

功能特性

  • 多种负载均衡策略:支持轮询、随机、加权、最少失败、最快响应等多种策略
  • 智能故障转移:自动检测失败节点并切换到健康节点
  • 健康检查机制:定期检查后端提供商的健康状态
  • 动态配置:支持运行时动态调整负载均衡配置
  • 探索与利用平衡:最快响应和最少失败策略,结合负载次数进行智能探索
  • 响应度量:使用实际 tokens 数量计算吞吐量

安装

将插件放置在 AstrBot/data/plugins/ 目录下即可自动加载。

配置详解

基本配置项

配置项 类型 默认值 描述
lb_strategy string random 负载均衡策略
lb_weights object {} 权重配置
lb_health_check_interval string "30" 健康检查间隔(秒)

负载均衡策略

1. 随机(Random)- random

  • 随机选择提供商处理请求
  • 简单高效的负载分配方式

2. 轮询(Round Robin)- round_robin

  • 按顺序循环分配请求到不同的提供商
  • 适用于各提供商性能相近的场景

3. 加权(Weighted)- weighted

  • 根据配置的权重分配请求比例,采用高效权重区间算法
  • 适用于提供商性能差异较大的场景
  • 内在权重值很大时也能保持良好的性能和内存效率

4. 最少失败(Least Failure)- least_failure

  • 优先选择失败率最低的提供商
  • 智能地避免性能较差的节点
  • 结合选择次数进行探索,避免过度依赖历史数据

5. 最快响应(Fastest)- fastest

  • 优先选择响应时间最短的提供商
  • 优化用户体验和响应速度
  • 结合选择次数进行探索,避免过度依赖历史数据

负载均衡逻辑

普通请求处理流程

  1. 策略选择:根据配置的 lb_strategy 选择对应的负载均衡算法
  2. 节点筛选:在非加权策略下,从健康节点中按故障转移链顺序筛选
  3. 请求分发:根据所选策略从可用节点中选择一个处理请求
  4. 统计更新:记录响应时间、成功率等指标

各策略实现细节

  • 随机策略:使用 Python 的 random.choice 方法
  • 轮询策略:在健康节点中按顺序循环选择
  • 加权策略:基于权重区间算法进行选择,高效处理大权重值
  • 最少失败:选择历史失败率最低的节点,结合选择次数进行探索
  • 最快响应:选择吞吐量(tokens/秒)最高的节点,结合选择次数进行探索

故障转移逻辑

智能故障转移机制

在非加权策略下,故障转移遵循以下逻辑:

  1. 健康检查:定期评估各提供商的健康状态
  2. 节点排序:基于 lb_weights 配置中定义的顺序(从权重配置中推导出故障转移顺序,按weight_node_1, weight_node_2...的顺序)
  3. 策略应用:在健康节点中应用当前负载均衡策略
  4. 失败处理:当选择的节点失败时,在剩余健康节点中继续尝试

健康状态管理

  • 成功标记:请求成功时,对应提供商被标记为健康
  • 失败标记:请求失败时,根据失败率和连续失败次数评估健康状态
  • 阈值设置:
    • 失败率 > 50% 时标记为不健康
    • 连续失败 >= 3 次且无成功记录时标记为不健康

故障转移流程

  1. 初始选择:基于策略从健康节点中选择一个节点
  2. 请求尝试:向选中的节点发送请求
  3. 失败处理:如节点失败,从剩余健康节点中按策略继续选择
  4. 链式回退:依次尝试所有健康节点直到成功或全部失败

加权策略特殊处理

在加权策略下:

  • 不使用 lb_weights 中定义的顺序作为故障转移顺序
  • 权重配置 (lb_weights) 仅用于负载分配权重计算
  • 失败后在所有剩余健康提供商中按权重逻辑重新选择
  • 使用高效权重区间算法,避免大权重值造成的性能问题

使用场景

1. 高可用性场景

  • 配置多个提供商作为备份
  • 使用故障转移链确保服务不中断

2. 性能优化场景

  • 使用最快响应或最少失败策略
  • 动态适应提供商性能变化

3. 资源利用优化场景

  • 使用加权策略根据提供商能力分配负载
  • 遫免单个提供商过载

注意事项

  • 确保配置的提供商 ID 有效且可用
  • 定期监控各提供商的健康状态和性能指标
  • 根据实际需求选择合适的负载均衡策略
  • 合理设置健康检查间隔以平衡资源消耗和故障检测速度

贡献

欢迎提交 Issue、Bug 报告和 Pull Requests!

  • 如发现任何问题,请在 Issues 中提交
  • 欢迎为功能改进和优化提交 Pull Requests

许可证

参见项目中的 LICENSE 文件。

AstrBot LogoAstrBot 插件市场社区

AstrBot 插件市场 是一个开放的插件分享平台,欢迎开发者们贡献优质插件。本站致力于为 AstrBot 用户提供高质量扩展,帮助您快速找到喜欢的插件,并鼓励社区伙伴分享使用心得、提出改进建议。

相关链接

官方项目主站 官方插件市场 官方项目仓库 侧边展示主站

开发相关

插件开发文档 快速提交插件 官方项目文档

© 2026 AstrBot 插件市场 Made with by Community