fengling-gateway/.planning/ROADMAP.md
movingsam 52eba07097 feat: add MigrationTool for gateway config migration (IMPL-7)
- Create MigrationTool console app for exporting DB config to K8s YAML
- Support dry-run mode and validation
- Add Npgsql and YamlDotNet dependencies
2026-03-08 00:35:04 +08:00

6.2 KiB
Raw Blame History

#MY|# RoadmapFengling Gateway

创建日期: 2026-03-02 核心价值: 可靠、可扩展的 API 网关,将流量分发到后端微服务,支持零停机配置更新。


阶段 1配置变更监听与多实例支持 已完成

目标: 实现网关对配置变更的监听机制,支持多实例部署。

注意: 此阶段只实现 YARP 网关部分的监听代码。Console 端的广播通知由 fengling-console 项目负责。

需求:

  • CFG-01网关监听来自 fengling-console 的配置变更事件PostgreSQL NOTIFY
  • CFG-02收到通知后网关无需重启即可重载配置
  • CFG-03多实例网关通过 PostgreSQL NOTIFY 广播接收配置更新
  • INST-01多个网关实例可以同时运行
  • INST-02配置变更通过 NOTIFY 广播传播到所有实例
  • INST-03使用 PostgreSQL LISTEN 订阅配置变更频道

成功标准:

  • 网关使用 LISTEN 订阅配置变更频道(如 gateway_config_changed
  • 收到 NOTIFY 后触发配置重载,无需重启
  • 多个网关实例通过数据库 NOTIFY 保持同步
  • 广播事件在 5 秒内到达所有实例

实现文件:

  • src/yarpgateway/Services/PgSqlConfigChangeListener.cs

阶段 2K8s 健康检查委托 已完成

目标: 将 K8s 服务健康监控从网关移除,委托给 fengling-console。

需求:

  • K8S-01从网关注销 K8s 健康监控
  • K8S-02网关将服务健康检查委托给 console

成功标准:

  • KubernetesPendingSyncService 已从网关移除
  • PendingServicesController 已从网关移除
  • 网关只执行请求路由,不做健康监控

已删除的文件:

  • Services/KubernetesPendingSyncService.cs
  • Controllers/PendingServicesController.cs
  • Models/GwPendingServiceDiscovery.cs

已修改的文件:

  • Program.cs - 移除服务注册和 using 语句
  • Data/GatewayDbContext.cs - 移除 DbSet 和模型配置

阶段 3安全加固

目标: 修复关键安全漏洞。

需求:

  • SEC-01移除源代码中的硬编码凭据
  • SEC-02实现正确的 JWT Token 验证
  • SEC-03为网关管理 API 端点添加认证

成功标准:

  1. 源代码中无硬编码密码/密钥
  2. JWT Token 经过验证(签名、过期时间、颁发者、受众)
  3. 所有 /api/gateway/* 端点需要认证

阶段 4性能优化

目标: 优化高负载下的网关性能。

需求:

  • PERF-01优化负载均衡锁竞争
  • PERF-02实现增量路由缓存更新

成功标准:

  1. 负载均衡不需要每个请求都获取 Redis 锁
  2. 路由缓存更新是增量式的,而非全量重载
  3. 网关处理能力提升 10 倍

阶段 5可观测性与测试

目标: 添加可观测性和测试覆盖。

需求:

  • OBS-01分布式追踪集成
  • OBS-02网关性能自定义指标
  • TEST-01RouteCache 单元测试
  • TEST-02JwtTransformMiddleware 单元测试
  • TEST-03负载均衡策略单元测试

成功标准:

  1. 分布式追踪包含网关跨度
  2. 导出关键指标(请求数、延迟、错误率)
  3. 核心组件测试覆盖率 >80%

BZ|## 阶段 6网关插件技术调研与实现 进行中

目标: 实现网关插件化支持。

已规划计划:

  • 006-01: 已完成 - 插件加载基础设施 (PLUG-01, PLUG-02)
  • 006-02: 📋 待执行 - YARP 插件集成 (PLUG-03)

需求:

  • PLUG-01网关插件化架构设计
  • PLUG-02插件加载机制
  • PLUG-03YARP 插件集成

成功标准:

  • 1. 网关支持动态加载插件
  • 2. 插件之间相互隔离
  • 3. 插件可以在运行时热加载/卸载

已实现文件 (006-01)

  • src/yarpgateway/Plugins/PluginLoadContext.cs - ALC 隔离
  • src/yarpgateway/Plugins/PluginLoader.cs - 发现和加载
  • src/yarpgateway/Plugins/PluginHost.cs - 生命周期管理
  • 单元测试 15 个全部通过

待实现文件 (006-02)

  • src/yarpgateway/Plugins/PluginTransformProvider.cs - YARP Transform 提供者
  • src/yarpgateway/Plugins/DestinationSelector.cs - 目标选择器
  • src/yarpgateway/Plugins/PluginConfigWatcher.cs - Console DB 通知监听

目标: 实现网关插件化支持。

需求:

  • PLUG-01网关插件化架构设计
  • PLUG-02插件加载机制
  • PLUG-03插件隔离与生命周期管理

成功标准:

  • 1. 网关支持动态加载插件
  • 2. 插件之间相互隔离
  • 3. 插件可以在运行时热加载/卸载

已实现文件:

  • src/yarpgateway/Plugins/PluginLoadContext.cs - ALC 隔离
  • src/yarpgateway/Plugins/PluginLoader.cs - 发现和加载
  • src/yarpgateway/Plugins/PluginHost.cs - 生命周期管理
  • 单元测试 15 个全部通过

Roadmap 摘要

阶段 名称 需求数 状态
1 配置变更监听与多实例支持 6 已完成
2 K8s 健康检查委托 2 已完成
3 安全加固 3 未规划
4 性能优化 2 未规划
5 可观测性与测试 5 未规划
6 网关插件技术调研与实现 3 进行中

阶段 7网关配置重构规划

目标: 分析网关配置新想法的可行性,重新规划网关配置架构。

需求:

  • REPL-01分析"网关配置的新想法.md"中的方案
  • REPL-02识别与现有需求的冲突点
  • REPL-03制定新的网关配置架构

成功标准:

  1. 完成网关配置新想法的可行性分析
  2. 提出与现有阶段兼容的配置方案
  3. 更新 roadmap 以反映新的配置架构

Roadmap 摘要

阶段 名称 需求数 状态
1 配置变更监听与多实例支持 6 已完成
2 K8s 健康检查委托 2 已完成
3 安全加固 3 未规划
4 性能优化 2 未规划
5 可观测性与测试 5 未规划
6 网关插件技术调研与实现 3 进行中
7 网关配置重构规划 3 待规划

总计: 7 个阶段 | 24 个需求 | 8 项已完成


最后更新2026-03-04 阶段6已完成 PLUG-01 和 PLUG-02