IanShaw027
|
592d2d0978
|
feat(gateway): 实现负载感知的账号调度优化
- 新增调度配置:粘性会话排队、兜底排队、负载计算、槽位清理
- 实现账号级等待队列和批量负载查询(Redis Lua 脚本)
- 三层选择策略:粘性会话优先 → 负载感知选择 → 兜底排队
- 后台定期清理过期槽位,防止资源泄漏
- 集成到所有网关处理器(Claude/Gemini/OpenAI)
|
2026-01-01 04:01:51 +08:00 |
|
yangjianbo
|
7efa8b54c4
|
perf(后端): 完成性能优化与连接池配置
新增 DB/Redis 连接池配置与校验,并补充单测
网关请求体大小限制与 413 处理
HTTP/req 客户端池化并调整上游连接池默认值
并发槽位改为 ZSET+Lua 与指数退避
用量统计改 SQL 聚合并新增索引迁移
计费缓存写入改工作池并补测试/基准
测试: 在 backend/ 下运行 go test ./...
|
2025-12-31 08:50:12 +08:00 |
|
Forest
|
f51ad2e126
|
refactor: 删除 ports 目录
|
2025-12-25 17:15:01 +08:00 |
|
shaw
|
876e85e7ad
|
Merge branch 'feat/rename-go-module'
|
2025-12-24 21:34:37 +08:00 |
|
Forest
|
836c4dda2b
|
refactor: 重命名 go module
|
2025-12-24 21:07:21 +08:00 |
|
shaw
|
e65e9587b4
|
fix(concurrency): 重构并发管理使用独立Key+原生TTL
问题:旧方案使用计数器模式,每次acquire都刷新TTL,导致僵尸数据永不过期
解决方案:
- 每个槽位使用独立Redis Key: concurrency:account:{id}:{requestID}
- 利用Redis原生TTL,每个槽位独立5分钟过期
- 服务崩溃后僵尸数据自动清理,无需手动干预
- 兼容多实例K8s部署
技术改动:
- 新增SCAN脚本统计活跃槽位数量
- 移除冗余的releaseScript,直接使用DEL命令
- Wait队列TTL只在首次创建时设置,避免刷新
|
2025-12-24 21:00:29 +08:00 |
|
shaw
|
0abe322cca
|
feat(accounts): 账户列表显示实时并发数
- 在账户列表 API 返回中添加 current_concurrency 字段
- 合并平台和类型列为 PlatformTypeBadge 组件,节省表格空间
- 新增并发状态列,显示 当前/最大 并发数,支持颜色编码
|
2025-12-24 15:44:45 +08:00 |
|
NepetaLemon
|
c6b3de1199
|
ci(backend): 添加 github actions (#10)
## 变更内容
### CI/CD
- 添加 GitHub Actions 工作流(test + golangci-lint)
- 添加 golangci-lint 配置,启用 errcheck/govet/staticcheck/unused/depguard
- 通过 depguard 强制 service 层不能直接导入 repository
### 错误处理修复
- 修复 CSV 写入、SSE 流式输出、随机数生成等未处理的错误
- GenerateRedeemCode() 现在返回 error
### 资源泄露修复
- 统一使用 defer func() { _ = xxx.Close() }() 模式
### 代码清理
- 移除未使用的常量
- 简化 nil map 检查
- 统一代码格式
|
2025-12-20 02:29:52 -05:00 |
|
Forest
|
7bbf621490
|
refactor(backend): 添加 service 缓存端口
|
2025-12-19 23:44:18 +08:00 |
|
shaw
|
642842c29e
|
First commit
|
2025-12-18 13:50:39 +08:00 |
|