Skip to content

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(已提及)

影响: 无法支持现代微服务架构


实现建议

  1. 利用现有插件系统: 部分功能可以通过插件实现(如限流、CORS),保持核心轻量
  2. 渐进式实现: 优先实现高优先级功能,逐步完善
  3. 参考业界标准: 参考 Kong、Traefik、Envoy 的实现方式
  4. 保持向后兼容: 新功能不应破坏现有配置和 API

状态说明

  • 🔴 未实现 - 功能完全缺失
  • 🟡 部分实现 - 有相关配置或依赖,但功能不完整
  • 🟢 已实现 - 功能完整可用

更新记录

  • 2024-12-01: 初始 TODO 列表创建,基于功能分析
  • 2026-02-01: 负载均衡功能已实现(round-robin、weighted、least-connections、ip-hash 算法,健康检查,多服务器支持)

Released under the MIT License.