- Create MigrationTool console app for exporting DB config to K8s YAML - Support dry-run mode and validation - Add Npgsql and YamlDotNet dependencies
6.2 KiB
6.2 KiB
#MY|# Roadmap:Fengling 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
阶段 2:K8s 健康检查委托 ✅ 已完成
目标: 将 K8s 服务健康监控从网关移除,委托给 fengling-console。
需求:
- K8S-01:从网关注销 K8s 健康监控
- K8S-02:网关将服务健康检查委托给 console
成功标准:
- KubernetesPendingSyncService 已从网关移除
- PendingServicesController 已从网关移除
- 网关只执行请求路由,不做健康监控
已删除的文件:
Services/KubernetesPendingSyncService.csControllers/PendingServicesController.csModels/GwPendingServiceDiscovery.cs
已修改的文件:
Program.cs- 移除服务注册和 using 语句Data/GatewayDbContext.cs- 移除 DbSet 和模型配置
阶段 3:安全加固
目标: 修复关键安全漏洞。
需求:
- SEC-01:移除源代码中的硬编码凭据
- SEC-02:实现正确的 JWT Token 验证
- SEC-03:为网关管理 API 端点添加认证
成功标准:
- 源代码中无硬编码密码/密钥
- JWT Token 经过验证(签名、过期时间、颁发者、受众)
- 所有 /api/gateway/* 端点需要认证
阶段 4:性能优化
目标: 优化高负载下的网关性能。
需求:
- PERF-01:优化负载均衡锁竞争
- PERF-02:实现增量路由缓存更新
成功标准:
- 负载均衡不需要每个请求都获取 Redis 锁
- 路由缓存更新是增量式的,而非全量重载
- 网关处理能力提升 10 倍
阶段 5:可观测性与测试
目标: 添加可观测性和测试覆盖。
需求:
- OBS-01:分布式追踪集成
- OBS-02:网关性能自定义指标
- TEST-01:RouteCache 单元测试
- TEST-02:JwtTransformMiddleware 单元测试
- TEST-03:负载均衡策略单元测试
成功标准:
- 分布式追踪包含网关跨度
- 导出关键指标(请求数、延迟、错误率)
- 核心组件测试覆盖率 >80%
BZ|## 阶段 6:网关插件技术调研与实现 ✅ 进行中
目标: 实现网关插件化支持。
已规划计划:
- 006-01: ✅ 已完成 - 插件加载基础设施 (PLUG-01, PLUG-02)
- 006-02: 📋 待执行 - YARP 插件集成 (PLUG-03)
需求:
- PLUG-01:网关插件化架构设计
- PLUG-02:插件加载机制
- PLUG-03:YARP 插件集成
成功标准:
- 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:制定新的网关配置架构
成功标准:
- 完成网关配置新想法的可行性分析
- 提出与现有阶段兼容的配置方案
- 更新 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