diff --git a/.cocoon-plan.md b/.cocoon-plan.md index 9b7de00..4a9559f 100644 --- a/.cocoon-plan.md +++ b/.cocoon-plan.md @@ -60,17 +60,31 @@ - 所有 Phase 1-4 核心功能已完成(反向代理负载均衡 + Prometheus 指标已加入) - 编译通过,零警告 -- **142 个单元测试全部通过** + **90 项集成测试全部通过**(新增 8 项指标测试) +- **142 个单元测试全部通过** + **93 项集成测试全部通过**(新增 3 项加权轮询测试) - 当前仅做编译和测试验证,不添加新代码 ## 待办池(活跃) -1. ~~连接池最大连接数可配置 — 当前固定为4~~ ✅ 2026-06-09 +1. ~~平滑加权轮询负载均衡~~ ✅ 2026-06-09 2. **HTTP/2 代理支持** — 将反向代理接入 HTTP/2 流(当前仅 HTTP/1.1) 3. 虚拟主机 / 多站点 — 低优先级 -4. 加权轮询 / 主动健康检查 — 负载均衡进阶(当前为被动检测) +4. 主动健康检查 — 后台线程定期探测后端(当前为被动式) ## 最近行动记录 +- 2026-06-09 06:00: **平滑加权轮询负载均衡** + - `proxy.h`: 后端结构添加 `weight`(配置权重)和 `current_weight`(动态权重)字段 + - `proxy.c`: 实现平滑加权轮询算法(Nginx SWW),`select_backend_sww()` + `select_backend_sww_all()` + - 算法:健康后端 current_weight += weight,选最大,选中后 -= total_weight + - 保证权重比例严格满足,分布均匀,不会连续打到同一后端 + - `proxy.c`: `proxy_add_rule` 新增 `weight` 参数,`backend_init` 初始化权重(默认1) + - `config.c`: JSON 解析器新增 `weight` 数字字段解析 + - `cocoon.h`: 代理配置结构新增 `uint32_t weight` 字段 + - `server.c`: 加载代理规则时传入配置的 `weight` + - `cocoon.json`: 示例配置展示多后端权重用法(`/api` → 3000:3 + 3001:1) + - `tests/integration_test.sh`: 新增加权轮询测试(3项:HTTP 200、权重日志验证、多后端分布验证) + - 编译零警告,142 单元测试 + 93 集成测试全部通过 + - 提交已推送 `main` (dc76585) + - 2026-06-09 03:00: **连接池大小可配置** - `proxy.h`: `COCOON_MAX_POOL_SIZE` → `COCOON_POOL_MAX_CAPACITY`(上限16)+ `COCOON_POOL_DEFAULT_SIZE`(默认4),`cocoon_conn_pool_t` 新增 `max_size` 字段 - `proxy.c`: `proxy_pool_init` 接收 `max_pool_size` 参数,自动裁剪到上限;所有循环改用 `backend->pool.max_size`