From c3d4b112d7b95bee6df6241c214fd2f5af67dee9 Mon Sep 17 00:00:00 2001 From: xfy911 Date: Mon, 8 Jun 2026 16:17:14 +0800 Subject: [PATCH] =?UTF-8?q?docs(config+plan):=20=E8=B4=9F=E8=BD=BD?= =?UTF-8?q?=E5=9D=87=E8=A1=A1=E7=A4=BA=E4=BE=8B=20+=20=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - cocoon.json: 展示多后端负载均衡配置(/api -> 3000/3001) - .cocoon-plan.md: 标记负载均衡完成,更新待办池和最近行动记录 --- .cocoon-plan.md | 18 +++++++++++++----- cocoon.json | 4 +++- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/.cocoon-plan.md b/.cocoon-plan.md index 1a70be3..79b2215 100644 --- a/.cocoon-plan.md +++ b/.cocoon-plan.md @@ -51,6 +51,7 @@ - [x] **中间件机制** — 注册表 + 链式执行,内置 CORS / Basic Auth / Rate Limit ✅ 2026-06-06 - [x] **插件系统** — 动态加载 .so/.dll 扩展 ✅ 2026-06-06(MVP:dlopen + 中间件注册 + 示例插件) - [x] **反向代理 HTTPS 后端** — 轻量级 OpenSSL 客户端封装,支持 TLS 1.2+ 握手 + SNI ✅ 2026-06-08 +- [x] **反向代理负载均衡** — 轮询调度 + 故障自动转移,多后端支持(最多8个)✅ 2026-06-08 ## 项目状态:恢复开发 @@ -62,14 +63,21 @@ - 当前仅做编译和测试验证,不添加新代码 ## 待办池(活跃) -1. 负载均衡(多后端轮询/加权)— 反向代理下一步 -2. 后端连接池/keep-alive — 避免每次请求新建连接 -3. 监控指标(Prometheus /_metrics) -4. 虚拟主机 / 多站点 — 低优先级 +1. 后端连接池/keep-alive — 避免每次请求新建连接(优先级高) +2. 监控指标(Prometheus /_metrics)— 导出 RPS、连接数、延迟等 +3. 虚拟主机 / 多站点 — 低优先级 +4. 加权轮询 / 健康检查 — 负载均衡进阶 ## 最近行动记录 -- 2026-06-08 16:00: **恢复开发** — 用户再次指示继续 cocoon,不暂停。 +- 2026-06-08 16:10: **负载均衡(轮询 + 故障转移)** + - `proxy.h`: 重构数据结构,支持多后端(`cocoon_proxy_backend_t`,最多8个) + - `proxy.c`: 实现轮询调度 + 自动故障转移(后端连接失败时自动尝试下一个) + - `proxy.c`: `proxy_add_rule` 支持同 prefix 追加后端,自动合并为多后端规则 + - `server.c`: 匹配新签名 + - `cocoon.json`: 示例配置展示多后端用法(两个 backend 3000/3001) + - 编译零警告,142 单元测试 + 82 集成测试全部通过 + - 提交 `acda3b9` 已推送到 `main` - 2026-06-08 15:00: **维护检查** — 项目处于暂停状态(用户指示 "🤚cocoon") - 编译通过:零警告(仅 coco 子模块 `.S` 文件 linker 提示,不影响功能) diff --git a/cocoon.json b/cocoon.json index ca341ba..72a9b9f 100644 --- a/cocoon.json +++ b/cocoon.json @@ -11,6 +11,8 @@ "plugins": ["plugins/hello.so"], "access_log": "-", "proxies": [ - {"prefix": "/api", "target": "http://localhost:3000"} + {"prefix": "/api", "target": "http://localhost:3000"}, + {"prefix": "/api", "target": "http://localhost:3001"}, + {"prefix": "/backend", "target": "https://localhost:8443"} ] }