一个用Go编写的魔搭API负载均衡服务,通过传入多个API Key实现负载均衡,只负责转发和负载均衡。
- 🔑 支持多个API Key的负载均衡
- 🔄 轮询负载均衡策略
- 🏥 自动健康检查
- 📊 实时统计信息
- 🚀 高性能反向代理
- 📝 详细的日志记录
- ⚙️ 灵活的配置管理
编辑 config.json
文件,添加你的魔搭API Keys:
{
"api_keys": [
"your_api_key_1_here",
"your_api_key_2_here",
"your_api_key_3_here"
],
"server_port": "8080",
"target_url": "https://api-inference.modelscope.cn",
"health_check": true,
"health_path": "/v1/models"
}
使用Makefile:
# 构建并运行
make run
# 或者先构建再运行
make build
./modelscope-balance
使用启动脚本:
./start.sh
直接使用Go命令:
go run main.go
服务启动后,可以通过以下方式使用:
curl -X POST http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-ai/DeepSeek-V3.1",
"messages": [
{"role": "system","content": "你是人工智能助手."},
{"role": "user","content": "常见的十字花科植物有哪些?"}
]
}'
curl http://localhost:8080/stats
curl http://localhost:8080/health
参数 | 类型 | 默认值 | 说明 |
---|---|---|---|
api_keys |
array | [] | 魔搭API Key列表 |
server_port |
string | "8080" | 服务监听端口 |
target_url |
string | "https://api-inference.modelscope.cn" | 目标API服务器地址 |
health_check |
boolean | true | 是否启用健康检查 |
health_path |
string | "/v1/models" | 健康检查路径 |
当前实现采用轮询(Round Robin)策略:
- 按顺序选择API Key
- 跳过不健康的API Key
- 自动重试直到找到可用的API Key
- 如果所有API Key都不可用,返回503错误
- 每30秒自动检查一次API Key的健康状态
- 通过访问
/v1/models
端点进行健康检查 - 如果API返回5xx错误或连接失败,标记为不健康
- 不健康的API Key会被跳过,直到恢复健康
访问 /stats
端点获取详细的统计信息:
{
"api_key_1...": {
"healthy": true,
"last_used": "2024-01-01T12:00:00Z",
"requests": 100
},
"api_key_2...": {
"healthy": false,
"last_used": "2024-01-01T11:30:00Z",
"requests": 50
}
}
服务会输出详细的日志信息,包括:
- 请求转发信息
- API Key健康状态变化
- 错误和异常信息
modelscope-balance/
├── main.go # 主程序文件
├── config.json # 配置文件
├── go.mod # Go模块文件
├── Makefile # 构建脚本
├── start.sh # 启动脚本
├── README.md # 说明文档
└── docs/
└── 魔搭api调用.curl # API调用示例
- Go 1.21+
- 魔搭API Key
# 构建程序
make build
# 运行测试
make test
# 清理构建文件
make clean
# 安装依赖
make deps
# 构建为Linux可执行文件
GOOS=linux GOARCH=amd64 go build -o modelscope-balance-linux main.go
# 构建为Windows可执行文件
GOOS=windows GOARCH=amd64 go build -o modelscope-balance.exe main.go
# 构建为macOS可执行文件
GOOS=darwin GOARCH=amd64 go build -o modelscope-balance-darwin main.go
- API Key安全:请妥善保管你的API Key,不要将配置文件提交到版本控制系统
- 负载均衡:当前实现为简单的轮询策略,如需更复杂的策略可以自行扩展
- 错误处理:服务会自动处理API错误,但不包含重试逻辑
- 性能考虑:在高并发场景下,建议使用更专业的负载均衡解决方案
本项目采用MIT许可证,详见LICENSE文件。
欢迎提交Issue和Pull Request来改进这个项目。