TODO 列表 - API Gateway 功能开发计划
本文档列出了 API Gateway 当前缺失的功能和开发计划。这些功能基于对业界标准 API Gateway(如 Kong、Traefik、Envoy)的调研分析。
高优先级(核心功能)
1. 负载均衡(Load Balancing)
状态: 🟢 已实现
描述: 当前只支持单个后端服务实例,需要支持多实例负载均衡。
功能需求:
- [x] 多后端实例配置(upstream/backend pool)
- [x] 负载均衡算法(round-robin, least-connections, ip-hash, weighted)
- [x] 健康检查驱动的动态路由(自动剔除不健康实例)
- [x] 权重配置支持
影响: 无法实现高可用和横向扩展
2. 限流与速率控制(Rate Limiting & Throttling)
状态: 🟢 已实现
描述: 限流插件已完整实现,支持多种算法、存储后端和键类型。
功能需求:
- [x] 基于 IP、用户、API Key 的限流
- [x] 令牌桶/漏桶算法实现
- [x] 分布式限流(基于 Redis)
- [x] 限流策略配置(每秒请求数、每分钟请求数等)
- [x] 限流响应(429 Too Many Requests)
- [x] 限流插件实现
影响: 无法防止 API 滥用和 DDoS 攻击
3. 超时控制(Timeout)
状态: 🟡 部分实现(健康检查有超时,但请求代理层面缺失)
描述: 健康检查有超时配置,但请求代理层面缺少超时控制。
功能需求:
- [ ] 连接超时(connect timeout)
- [ ] 读取超时(read timeout)
- [ ] 写入超时(write timeout)
- [ ] 全局和路由级别的超时配置
影响: 无法防止慢请求阻塞,可能导致资源耗尽
4. 重试机制(Retry)
状态: 🔴 未实现
描述: 完全缺失重试功能。
功能需求:
- [ ] 可配置的重试次数
- [ ] 重试策略(指数退避、固定间隔)
- [ ] 可重试的错误码配置(5xx, 网络错误等)
- [ ] 幂等性检查
影响: 网络抖动时无法自动恢复,影响可用性
5. 监控与可观测性(Monitoring & Observability)
状态: 🔴 未实现
描述: 只有基础日志,缺少结构化监控。
功能需求:
- [ ] Prometheus metrics 导出
- [ ] 请求/响应指标(QPS、延迟、错误率)
- [ ] 分布式追踪(OpenTelemetry/Jaeger 集成)
- [ ] 结构化日志(JSON 格式)
- [ ] 告警集成
影响: 无法监控网关性能和问题诊断困难
中优先级(重要功能)
6. 熔断器(Circuit Breaker)
状态: 🔴 未实现
描述: 完全缺失熔断器功能。
功能需求:
- [ ] 基于错误率的熔断
- [ ] 基于响应时间的熔断
- [ ] 半开状态自动恢复
- [ ] 熔断器状态监控
影响: 无法防止级联故障,无法快速失败
7. CORS 支持
状态: 🔴 未实现
描述: 完全缺失 CORS 功能。
功能需求:
- [ ] CORS 预检请求(OPTIONS)处理
- [ ] 可配置的 CORS 策略(允许的源、方法、头、凭证等)
- [ ] 路由级别的 CORS 配置
影响: 浏览器跨域请求无法正常工作
8. 认证/授权实现
状态: 🟡 部分实现(配置存在但实现可能不完整)
描述: 配置层面支持多种认证类型,但实际实现可能不完整。
功能需求:
- [ ] JWT 验证和解析
- [ ] OAuth2/OIDC 完整流程实现
- [ ] API Key 验证
- [ ] 基于角色的访问控制(RBAC)
- [ ] 权限策略配置
影响: 安全功能不完整,存在安全风险
9. 请求验证
状态: 🔴 未实现
描述: 完全缺失请求验证功能。
功能需求:
- [ ] 请求大小限制
- [ ] 请求参数验证
- [ ] Schema 验证(JSON Schema)
- [ ] 请求签名验证
影响: 无法防止恶意请求和无效数据
10. 响应缓存
状态: 🟡 部分实现(Redis 配置存在但未实现缓存功能)
描述: 有 Redis 缓存配置,但未实现响应缓存功能。
功能需求:
- [ ] 基于路径的响应缓存
- [ ] 缓存策略配置(TTL、缓存键规则)
- [ ] 缓存失效策略
- [ ] 条件请求支持(ETag、Last-Modified)
影响: 无法减少后端负载,影响性能
低优先级(增强功能)
11. WebSocket 支持
状态: 🟡 部分实现(依赖存在但未集成)
描述: 虽然 go.mod 中有 gorilla/websocket 依赖,但核心代码中未实现 WebSocket 代理。
功能需求:
- [ ] WebSocket 升级处理
- [ ] WebSocket 连接代理
- [ ] WebSocket 消息转发
影响: 无法支持实时通信场景
12. SSL/TLS 终止
状态: 🟡 部分实现(配置存在但未实现)
描述: 配置结构存在,但未在核心代码中实现。
功能需求:
- [ ] TLS 证书管理
- [ ] SNI(Server Name Indication)支持
- [ ] 自动证书续期(Let's Encrypt 集成)
- [ ] TLS 版本和加密套件配置
影响: 无法在网关层面终止 TLS,增加后端服务负担
13. 服务发现集成
状态: 🔴 未实现
描述: 只支持静态配置,不支持动态服务发现。
功能需求:
- [ ] Kubernetes Service 发现
- [ ] Consul 集成
- [ ] etcd 集成
- [ ] DNS 服务发现
- [ ] 动态后端注册/注销
影响: 无法适应云原生环境,配置管理复杂
14. 灰度发布/金丝雀发布
状态: 🔴 未实现
描述: 完全缺失灰度发布功能。
功能需求:
- [ ] 基于权重的流量分配
- [ ] 基于 Header 的路由规则
- [ ] A/B 测试支持
- [ ] 版本管理
影响: 无法安全地进行版本升级和测试
15. 请求/响应体转换
状态: 🔴 未实现
描述: 只支持头和查询参数修改,不支持请求/响应体转换。
功能需求:
- [ ] JSON 请求体修改
- [ ] XML 请求体转换
- [ ] 请求/响应体大小限制
- [ ] 内容类型转换
影响: 无法实现复杂的协议转换和数据转换
16. API 版本管理
状态: 🟡 部分实现(路径级别)
描述: 路径级别的版本控制,缺少结构化版本管理。
功能需求:
- [ ] API 版本定义和管理
- [ ] 版本路由规则
- [ ] 版本弃用策略
- [ ] 版本兼容性检查
影响: API 演进管理困难
17. 请求日志记录
状态: 🟡 部分实现(基础日志)
描述: 只有基础日志,缺少结构化请求日志。
功能需求:
- [ ] 访问日志(Access Log)格式
- [ ] 请求/响应日志记录
- [ ] 日志采样
- [ ] 敏感信息脱敏
影响: 审计和问题排查困难
18. 多协议支持
状态: 🟡 部分实现(仅 HTTP/HTTPS)
描述: 只支持 HTTP/HTTPS。
功能需求:
- [ ] gRPC 代理
- [ ] GraphQL 支持
- [ ] HTTP/2 完整支持
- [ ] WebSocket(已提及)
影响: 无法支持现代微服务架构
实现建议
- 利用现有插件系统: 部分功能可以通过插件实现(如限流、CORS),保持核心轻量
- 渐进式实现: 优先实现高优先级功能,逐步完善
- 参考业界标准: 参考 Kong、Traefik、Envoy 的实现方式
- 保持向后兼容: 新功能不应破坏现有配置和 API
状态说明
- 🔴 未实现 - 功能完全缺失
- 🟡 部分实现 - 有相关配置或依赖,但功能不完整
- 🟢 已实现 - 功能完整可用
更新记录
- 2024-12-01: 初始 TODO 列表创建,基于功能分析
- 2026-02-01: 负载均衡功能已实现(round-robin、weighted、least-connections、ip-hash 算法,健康检查,多服务器支持)