build(phase4): 更新构建系统与文档,集成 Phase 4 模块

- CMakeLists.txt: 新增 middleware_ext.c、load_balance.c、grpc.c、
  http3.c 到源文件列表和单元测试列表
- Makefile: 更新 SRCS,新增 4 个模块的单元测试编译规则
- README.md: 新增 Phase 4 特性(JWT Auth、负载均衡、gRPC、HTTP/3)、
  模块说明表、路线图标记全部完成、测试统计(451 单元测试)
- .cocoon-plan.md: Phase 4 全部标记为完成,更新当前状态与行动记录
This commit is contained in:
xfy911 2026-06-10 11:36:59 +08:00
parent bf9787e6e9
commit 87bae245d2
4 changed files with 62 additions and 12 deletions

View File

@ -38,27 +38,37 @@
- [x] Prometheus 指标
- [x] SIGHUP 配置热重载
### Phase 4 — 生态(未来方向
- [ ] HTTP/3 (QUIC)
- [ ] 分布式负载均衡
- [ ] gRPC 支持
- [ ] 更多内置中间件
### Phase 4 — 生态(已完成 ✅
- [x] HTTP/3 (QUIC) — QUIC 传输层 + HTTP/3 帧处理 + QPACK 静态表 + TLS 1.3 接口
- [x] 分布式负载均衡 — 一致性哈希 + 最少连接 + 加权响应时间(EWMA) + 随机
- [x] gRPC 支持 — gRPC over HTTP/2 + protobuf LEB128 帧 + 四种 RPC 模式 + gRPC-Web 兼容
- [x] 更多内置中间件 — JWT Auth(HS256) + Security Headers + Request ID + IP 过滤
## 当前状态
- **编译状态**:零警告,全部通过
- **单元测试**190 个全部通过 ✓21 + 17 + 35 + 10 + 12 + 31 + 17 + 35 + 12
- **单元测试**451 个全部通过 ✓(原有 190 + 新增 26153 middleware_ext + 56 load_balance + 88 grpc + 64 http3
- **集成测试**109 项全部通过 ✓
- **代码覆盖率**:核心模块覆盖完整
- **文档状态**README 完整API 文档齐全
- **项目阶段**:维护模式(所有计划功能已完成)
- **代码覆盖率**核心模块覆盖完整Phase 4 模块覆盖良好
- **文档状态**README 完整API 文档齐全,.cocoon-plan.md 已更新
- **项目阶段**所有计划功能已完成Phase 1~4 全部 ✅)
- **新增代码**12 个新文件,约 8520 行源代码 + 测试
## 待办池(已完成清空)
所有计划内功能已完成。项目进入维护阶段
所有计划内功能已完成。项目全部路线图功能已交付
## 最近行动记录
- 2026-06-10 11:30: **Phase 4 生态扩展 — 全部完成 ✅**
- 扩展中间件:新增 middleware_ext.c/h — JWT Auth(HS256)、Security Headers(HSTS/CSP/X-Frame-Options)、Request ID(32字符hex追踪)、IP 过滤(黑名单/白名单/CIDR)
- 分布式负载均衡:新增 load_balance.c/h — 一致性哈希(MurmurHash3+512虚拟节点)、最少连接、加权响应时间(EWMA)、随机算法
- gRPC 支持:新增 grpc.c/h — gRPC over HTTP/2、LEB128 消息帧编解码、四种 RPC 模式(Unary/Server/Client/Bidirectional)、gRPC-Web 兼容、17个状态码完整支持
- HTTP/3 (QUIC):新增 http3.c/h — QUIC 传输层(UDP+连接管理)、HTTP/3 帧处理(DATA/HEADERS/SETTINGS/GOAWAY)、QPACK 静态表编解码(RFC 9204)、TLS 1.3 集成接口
- 新增 261 个单元测试(累计 451 个),全部通过
- 更新构建系统CMakeLists.txt + Makefile 已同步
- 项目全部路线图功能已交付
- 2026-06-10 09:00: **状态验证与维护检查**
- 编译检查:零警告,全部通过
- 单元测试190 个全部通过 ✓

View File

@ -33,6 +33,10 @@ set(COCOON_SOURCES
access_log.c
websocket.c
middleware.c
middleware_ext.c
load_balance.c
grpc.c
http3.c
)
#
@ -139,7 +143,7 @@ if(BASH_EXECUTABLE)
endif()
# Unity
set(UNIT_TESTS test_server test_http test_static test_log test_config test_multipart)
set(UNIT_TESTS test_server test_http test_static test_log test_config test_multipart test_middleware_ext test_load_balance test_grpc test_http3)
foreach(test_name ${UNIT_TESTS})
set(test_src "${CMAKE_CURRENT_SOURCE_DIR}/tests/unit/${test_name}.c")

View File

@ -20,7 +20,7 @@ PREFIX ?= /usr/local
BINDIR = $(PREFIX)/bin
# 源文件
SRCS = main.c server.c http.c static.c log.c config.c multipart.c tls.c http2.c access_log.c websocket.c platform.c middleware.c plugin.c proxy.c proxy_tls.c healthcheck.c
SRCS = main.c server.c http.c static.c log.c config.c multipart.c tls.c http2.c access_log.c websocket.c platform.c middleware.c plugin.c proxy.c proxy_tls.c healthcheck.c middleware_ext.c load_balance.c grpc.c http3.c
OBJS = $(SRCS:.c=.o)
TARGET = cocoon
@ -118,6 +118,22 @@ $(UNIT_TEST_DIR)/test_config: $(UNIT_TEST_DIR)/test_config.c config.c log.c acce
$(UNIT_TEST_DIR)/test_proxy: $(UNIT_TEST_DIR)/test_proxy.c proxy_tls.c http.c log.c platform.c $(UNITY_SRC)
$(CC) $(CFLAGS) -I. -I$(UNIT_TEST_DIR)/../unity -o $@ $(UNIT_TEST_DIR)/test_proxy.c proxy_tls.c http.c log.c platform.c $(UNITY_SRC) $(LDFLAGS)
# 扩展中间件测试
$(UNIT_TEST_DIR)/test_middleware_ext: $(UNIT_TEST_DIR)/test_middleware_ext.c middleware_ext.c http.c log.c platform.c $(UNITY_SRC)
$(CC) $(CFLAGS) -I. -I$(UNIT_TEST_DIR)/../unity -o $@ $(UNIT_TEST_DIR)/test_middleware_ext.c middleware_ext.c http.c log.c platform.c $(UNITY_SRC) $(LDFLAGS)
# gRPC 测试
$(UNIT_TEST_DIR)/test_grpc: $(UNIT_TEST_DIR)/test_grpc.c grpc.c http.c log.c platform.c $(UNITY_SRC)
$(CC) $(CFLAGS) -I. -I$(UNIT_TEST_DIR)/../unity -o $@ $(UNIT_TEST_DIR)/test_grpc.c grpc.c http.c log.c platform.c $(UNITY_SRC) -lm
# 负载均衡测试
$(UNIT_TEST_DIR)/test_load_balance: $(UNIT_TEST_DIR)/test_load_balance.c load_balance.c proxy.c proxy_tls.c http.c log.c platform.c $(UNITY_SRC)
$(CC) $(CFLAGS) -I. -I$(UNIT_TEST_DIR)/../unity -o $@ $(UNIT_TEST_DIR)/test_load_balance.c load_balance.c proxy.c proxy_tls.c http.c log.c platform.c $(UNITY_SRC) $(LDFLAGS)
# HTTP/3 测试
$(UNIT_TEST_DIR)/test_http3: $(UNIT_TEST_DIR)/test_http3.c http3.c http.c log.c platform.c tls.c $(UNITY_SRC)
$(CC) $(CFLAGS) -I. -I$(UNIT_TEST_DIR)/../unity -o $@ $(UNIT_TEST_DIR)/test_http3.c http3.c http.c log.c platform.c tls.c $(UNITY_SRC) $(LDFLAGS)
# 安装
install: $(TARGET)
install -d $(BINDIR)

View File

@ -32,6 +32,13 @@
| 🏥 健康检查 | `/_health` 端点返回 JSON 服务器状态 |
| 🔄 反向代理 | HTTP/1.1 + HTTPS 后端转发路径前缀匹配X-Forwarded-* 头透传 |
| 🪟 跨平台 | Linux / macOS / WindowsMinGW/MSVC|
| 🔐 JWT 认证 | HS256 签名验证Bearer Token 解析exp 过期检查 |
| 🛡️ Security Headers | HSTS / X-Frame-Options / CSP / X-XSS-Protection / Referrer-Policy |
| 🆔 Request ID | 32 字符 hex 追踪 ID 生成与透传 |
| 🚫 IP 过滤 | IPv4 / CIDR 黑名单与白名单模式X-Forwarded-For 解析 |
| ⚖️ 负载均衡 | 一致性哈希MurmurHash3、最少连接、加权响应时间EWMA、随机 |
| 📡 gRPC | gRPC over HTTP/2四种 RPC 模式Unary/StreaminggRPC-Web 兼容 |
| 🌐 HTTP/3 | QUIC 传输层HTTP/3 帧处理QPACK 头部压缩TLS 1.3 集成 |
## Quick Start
@ -218,6 +225,10 @@ Options:
| `platform.c` | 跨平台抽象Linux/macOS/Windows |
| `proxy.c` / `proxy_tls.c` | 反向代理HTTP/1.1 + HTTPS 后端转发) |
| `cocoon.h` | 公共配置结构体与错误码定义 |
| `middleware_ext.c/h` | 扩展内置中间件JWT Auth / Security Headers / Request ID / IP 过滤 |
| `load_balance.c/h` | 分布式负载均衡:一致性哈希 / 最少连接 / 加权响应时间 / 随机 |
| `grpc.c/h` | gRPC over HTTP/2消息帧编解码 / 四种 RPC 模式 / gRPC-Web 兼容 |
| `http3.c/h` | HTTP/3 over QUICQUIC 传输 / 帧处理 / QPACK 压缩 / TLS 1.3 接口 |
## 核心 API 速览
@ -265,6 +276,8 @@ static_send_error(fd, 404, true);
| 平均延迟 | ~60μs | wrk, 100 连接, 4 线程 |
| 最大并发 | 数万连接 | 单线程模式 |
| 多线程扩展 | 线性至核数 | M:N 调度 + Work-stealing |
| 单元测试 | 451 项全部通过 ✓ | Unity 框架 |
| 集成测试 | 109 项全部通过 ✓ | curl + bash |
> 压测环境AMD EPYC / 4 核 / Ubuntu 22.04 / io_uring 后端
@ -298,6 +311,13 @@ make bench
- [x] 跨平台支持Windows
- [x] 反向代理支持
- [x] 虚拟主机 / 多站点
- [x] JWT 认证中间件HS256
- [x] Security Headers 中间件HSTS / CSP / X-Frame-Options
- [x] Request ID 追踪中间件
- [x] IP 黑白名单过滤中间件CIDR 支持)
- [x] 分布式负载均衡(一致性哈希 / 最少连接 / EWMA / 随机)
- [x] gRPC 支持Unary / Server / Client / Bidirectional Streaming
- [x] HTTP/3 over QUICQPACK / TLS 1.3
## 构建与安装