135 lines
4.1 KiB
Markdown
135 lines
4.1 KiB
Markdown
# Roadmap:Fengling Gateway
|
||
|
||
**创建日期:** 2026-03-02
|
||
**核心价值:** 可靠、可扩展的 API 网关,将流量分发到后端微服务,支持零停机配置更新。
|
||
|
||
---
|
||
|
||
## 阶段 1:配置变更监听与多实例支持 ✅ 已完成
|
||
|
||
**目标:** 实现网关对配置变更的监听机制,支持多实例部署。
|
||
|
||
> **注意:** 此阶段只实现 YARP 网关部分的监听代码。Console 端的广播通知由 fengling-console 项目负责。
|
||
|
||
**需求:**
|
||
- [x] CFG-01:网关监听来自 fengling-console 的配置变更事件(PostgreSQL NOTIFY)
|
||
- [x] CFG-02:收到通知后网关无需重启即可重载配置
|
||
- [x] CFG-03:多实例网关通过 PostgreSQL NOTIFY 广播接收配置更新
|
||
- [x] INST-01:多个网关实例可以同时运行
|
||
- [x] INST-02:配置变更通过 NOTIFY 广播传播到所有实例
|
||
- [x] INST-03:使用 PostgreSQL LISTEN 订阅配置变更频道
|
||
|
||
**成功标准:**
|
||
- [x] 网关使用 LISTEN 订阅配置变更频道(如 `gateway_config_changed`)
|
||
- [x] 收到 NOTIFY 后触发配置重载,无需重启
|
||
- [x] 多个网关实例通过数据库 NOTIFY 保持同步
|
||
- [x] 广播事件在 5 秒内到达所有实例
|
||
|
||
**实现文件:**
|
||
- `src/yarpgateway/Services/PgSqlConfigChangeListener.cs`
|
||
|
||
---
|
||
|
||
## 阶段 2:K8s 健康检查委托 ✅ 已完成
|
||
|
||
**目标:** 将 K8s 服务健康监控从网关移除,委托给 fengling-console。
|
||
|
||
**需求:**
|
||
- [x] K8S-01:从网关注销 K8s 健康监控
|
||
- [x] K8S-02:网关将服务健康检查委托给 console
|
||
|
||
**成功标准:**
|
||
- [x] KubernetesPendingSyncService 已从网关移除
|
||
- [x] PendingServicesController 已从网关移除
|
||
- [x] 网关只执行请求路由,不做健康监控
|
||
|
||
**已删除的文件:**
|
||
- `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-01:RouteCache 单元测试
|
||
- [ ] TEST-02:JwtTransformMiddleware 单元测试
|
||
- [ ] TEST-03:负载均衡策略单元测试
|
||
|
||
**成功标准:**
|
||
1. 分布式追踪包含网关跨度
|
||
2. 导出关键指标(请求数、延迟、错误率)
|
||
3. 核心组件测试覆盖率 >80%
|
||
## 阶段 6:网关插件技术调研与实现
|
||
|
||
**目标:** 实现网关插件化支持。
|
||
|
||
**需求:**
|
||
- [ ] PLUG-01:网关插件化架构设计
|
||
- [ ] PLUG-02:插件加载机制
|
||
- [ ] PLUG-03:插件隔离与生命周期管理
|
||
|
||
**成功标准:**
|
||
1. 网关支持动态加载插件
|
||
2. 插件之间相互隔离
|
||
3. 插件可以在运行时热加载/卸载
|
||
|
||
---
|
||
|
||
## Roadmap 摘要
|
||
|
||
|| 阶段 | 名称 | 需求数 | 状态 |
|
||
||------|------|--------|------|
|
||
|| 1 | 配置变更监听与多实例支持 | 6 | ✅ 已完成 |
|
||
|| 2 | K8s 健康检查委托 | 2 | ✅ 已完成 |
|
||
|| 3 | 安全加固 | 3 | 未规划 |
|
||
|| 4 | 性能优化 | 2 | 未规划 |
|
||
|| 5 | 可观测性与测试 | 5 | 未规划 |
|
||
|| 6 | 网关插件技术调研与实现 | 3 | 未规划 |
|
||
|
||
**总计:** 6 个阶段 | 21 个需求 | 8 项已完成
|
||
|
||
---
|
||
|
||
*最后更新:2026-03-04 阶段6已添加*
|