第8周:阶段项目——简易 HTTP 负载均衡器
目标:综合运用前 7 周知识,实现一个高性能 L7 HTTP 反向代理。
1. 项目架构设计
1.1 整体架构
1 | ┌──────────────┐ |
1.2 数据结构设计
1 | // backend.h |
1.3 后端池实现
1 | // backend.c |
2. HTTP 反向代理核心逻辑
2.1 代理请求转发
1 | // proxy.h |
2.2 反向代理主循环
1 | // proxy.c |
3. 健康检查线程
1 | // health_check.c |
4. 完整负载均衡器
1 | // lb_server.c |
5. 后端测试服务
1 | // test_backend.c — 简单的后端测试服务 |
1 | gcc -o backend test_backend.c |
6. 压测与验证
6.1 编译和运行
1 | # 编译 |
6.2 压测
1 | # 基本压测 |
6.3 压测报告模板
1 | === 负载均衡器压测报告 === |
7. 优化方向
| 优化项 | 预期效果 |
|---|---|
使用 sendfile 转发静态资源 |
减少 CPU 使用,提升吞吐 |
| 连接池(到后端的持久连接) | 减少连接建立开销 |
| 内存池替代 malloc/free | 减少内存分配开销 |
| 缓存热点响应 | 减轻后端压力 |
| SSL/TLS 卸载(OpenSSL/mbedTLS) | 减少加密开销 |
| 批量发送(writev) | 减少系统调用次数 |
| 协议解析优化(SIMD/查表) | 提升小包处理能力 |
8. 扩展功能(可选)
1 | ✓ HTTPS 支持(OpenSSL/BoringSSL) |
- 本文作者: CoderSong
- 本文链接: https://jack-song-gif.github.io/2026/07/22/第8周:阶段项目——简易 HTTP 负载均衡器/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!