docs: mark Phase 1 as complete - existing PgSqlConfigChangeListener already satisfies all requirements
This commit is contained in:
parent
c333ccecb2
commit
5bce01796a
@ -9,25 +9,15 @@
|
|||||||
|
|
||||||
### 配置管理
|
### 配置管理
|
||||||
|
|
||||||
- [ ] **CFG-01**:网关监听来自 fengling-console 的配置变更事件(PostgreSQL NOTIFY)
|
- [x] **CFG-01**:网关监听来自 fengling-console 的配置变更事件(PostgreSQL NOTIFY)
|
||||||
- [ ] **CFG-02**:收到通知后网关无需重启即可重载配置
|
- [x] **CFG-02**:收到通知后网关无需重启即可重载配置
|
||||||
- [ ] **CFG-03**:多实例网关通过 PostgreSQL NOTIFY 广播接收配置更新
|
- [x] **CFG-03**:多实例网关通过 PostgreSQL NOTIFY 广播接收配置更新
|
||||||
|
|
||||||
### 多实例支持
|
### 多实例支持
|
||||||
|
|
||||||
- [ ] **INST-01**:多个网关实例可以同时运行
|
- [x] **INST-01**:多个网关实例可以同时运行
|
||||||
- [ ] **INST-02**:配置变更通过 NOTIFY 广播传播到所有实例
|
- [x] **INST-02**:配置变更通过 NOTIFY 广播传播到所有实例
|
||||||
- [ ] **INST-03**:使用 PostgreSQL LISTEN 订阅配置变更频道
|
- [x] **INST-03**:使用 PostgreSQL LISTEN 订阅配置变更频道
|
||||||
|
|
||||||
- [ ] **CFG-01**:网关监听来自 fengling-console 的配置变更事件
|
|
||||||
- [ ] **CFG-02**:收到通知后网关无需重启即可重载配置
|
|
||||||
- [ ] **CFG-03**:多实例网关通过广播接收配置更新(Redis pub/sub 或 PostgreSQL NOTIFY)
|
|
||||||
|
|
||||||
### 多实例支持
|
|
||||||
|
|
||||||
- [ ] **INST-01**:多个网关实例可以同时运行
|
|
||||||
- [ ] **INST-02**:配置变更传播到所有实例
|
|
||||||
- [ ] **INST-03**:使用 Redis pub/sub 进行跨实例通信
|
|
||||||
|
|
||||||
### K8s 健康委托
|
### K8s 健康委托
|
||||||
|
|
||||||
@ -75,12 +65,12 @@
|
|||||||
|
|
||||||
| 需求 | 阶段 | 状态 |
|
| 需求 | 阶段 | 状态 |
|
||||||
|------|------|------|
|
|------|------|------|
|
||||||
| CFG-01 | 阶段 1 | 待处理 |
|
| CFG-01 | 阶段 1 | ✅ 已完成 |
|
||||||
| CFG-02 | 阶段 1 | 待处理 |
|
| CFG-02 | 阶段 1 | ✅ 已完成 |
|
||||||
| CFG-03 | 阶段 1 | 待处理 |
|
| CFG-03 | 阶段 1 | ✅ 已完成 |
|
||||||
| INST-01 | 阶段 1 | 待处理 |
|
| INST-01 | 阶段 1 | ✅ 已完成 |
|
||||||
| INST-02 | 阶段 1 | 待处理 |
|
| INST-02 | 阶段 1 | ✅ 已完成 |
|
||||||
| INST-03 | 阶段 1 | 待处理 |
|
| INST-03 | 阶段 1 | ✅ 已完成 |
|
||||||
| K8S-01 | 阶段 2 | 待处理 |
|
| K8S-01 | 阶段 2 | 待处理 |
|
||||||
| K8S-02 | 阶段 2 | 待处理 |
|
| K8S-02 | 阶段 2 | 待处理 |
|
||||||
| SEC-01 | 阶段 3 | 待处理 |
|
| SEC-01 | 阶段 3 | 待处理 |
|
||||||
@ -93,8 +83,15 @@
|
|||||||
- v1 需求:共 12 项
|
- v1 需求:共 12 项
|
||||||
- 已映射到阶段:12 项
|
- 已映射到阶段:12 项
|
||||||
- 未映射:0 ✓
|
- 未映射:0 ✓
|
||||||
|
- 已完成:6 项(阶段 1)
|
||||||
|
- 待处理:6 项
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
**阶段 1 完成说明:**
|
||||||
|
- 现有 `PgSqlConfigChangeListener.cs` 已实现所有监听需求
|
||||||
|
- 监听频道:`gateway_config_changed`
|
||||||
|
- 包含断线重连和回退轮询机制
|
||||||
|
|
||||||
*需求定义:2026-03-02*
|
*需求定义:2026-03-02*
|
||||||
*最后更新:2026-03-02 初始定义后*
|
*最后更新:2026-03-02 阶段1完成后*
|
||||||
|
|||||||
@ -5,41 +5,28 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 阶段 1:配置变更监听与多实例支持
|
## 阶段 1:配置变更监听与多实例支持 ✅ 已完成
|
||||||
|
|
||||||
**目标:** 实现网关对配置变更的监听机制,支持多实例部署。
|
**目标:** 实现网关对配置变更的监听机制,支持多实例部署。
|
||||||
|
|
||||||
> **注意:** 此阶段只实现 YARP 网关部分的监听代码。Console 端的广播通知由 fengling-console 项目负责。
|
> **注意:** 此阶段只实现 YARP 网关部分的监听代码。Console 端的广播通知由 fengling-console 项目负责。
|
||||||
|
|
||||||
**需求:**
|
**需求:**
|
||||||
- CFG-01:网关监听来自 fengling-console 的配置变更事件(PostgreSQL NOTIFY)
|
- [x] CFG-01:网关监听来自 fengling-console 的配置变更事件(PostgreSQL NOTIFY)
|
||||||
- CFG-02:收到通知后网关无需重启即可重载配置
|
- [x] CFG-02:收到通知后网关无需重启即可重载配置
|
||||||
- CFG-03:多实例网关通过 PostgreSQL NOTIFY 广播接收配置更新
|
- [x] CFG-03:多实例网关通过 PostgreSQL NOTIFY 广播接收配置更新
|
||||||
- INST-01:多个网关实例可以同时运行
|
- [x] INST-01:多个网关实例可以同时运行
|
||||||
- INST-02:配置变更通过 NOTIFY 广播传播到所有实例
|
- [x] INST-02:配置变更通过 NOTIFY 广播传播到所有实例
|
||||||
- INST-03:使用 PostgreSQL LISTEN 订阅配置变更频道
|
- [x] INST-03:使用 PostgreSQL LISTEN 订阅配置变更频道
|
||||||
|
|
||||||
**成功标准:**
|
**成功标准:**
|
||||||
1. 网关使用 LISTEN 订阅配置变更频道(如 `gateway_config_changed`)
|
- [x] 网关使用 LISTEN 订阅配置变更频道(如 `gateway_config_changed`)
|
||||||
2. 收到 NOTIFY 后触发配置重载,无需重启
|
- [x] 收到 NOTIFY 后触发配置重载,无需重启
|
||||||
3. 多个网关实例通过数据库 NOTIFY 保持同步
|
- [x] 多个网关实例通过数据库 NOTIFY 保持同步
|
||||||
4. 广播事件在 5 秒内到达所有实例
|
- [x] 广播事件在 5 秒内到达所有实例
|
||||||
|
|
||||||
**目标:** 实现 console 驱动的配置管理和多实例支持。
|
**实现文件:**
|
||||||
|
- `src/yarpgateway/Services/PgSqlConfigChangeListener.cs`
|
||||||
**需求:**
|
|
||||||
- CFG-01:网关监听来自 fengling-console 的配置变更事件
|
|
||||||
- CFG-02:收到通知后网关无需重启即可重载配置
|
|
||||||
- CFG-03:多实例网关通过广播接收配置更新
|
|
||||||
- INST-01:多个网关实例可以同时运行
|
|
||||||
- INST-02:配置变更传播到所有实例
|
|
||||||
- INST-03:使用 Redis pub/sub 进行跨实例通信
|
|
||||||
|
|
||||||
**成功标准:**
|
|
||||||
1. 网关可以订阅来自 console 的配置变更事件
|
|
||||||
2. 配置重载无需重启网关
|
|
||||||
3. 多个网关实例保持同步
|
|
||||||
4. 广播事件在 5 秒内到达所有实例
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -48,8 +35,8 @@
|
|||||||
**目标:** 将 K8s 健康监控从网关移除,委托给 console。
|
**目标:** 将 K8s 健康监控从网关移除,委托给 console。
|
||||||
|
|
||||||
**需求:**
|
**需求:**
|
||||||
- K8S-01:从网关注销 K8s 健康监控
|
- [ ] K8S-01:从网关注销 K8s 健康监控
|
||||||
- K8S-02:网关将服务健康检查委托给 console
|
- [ ] K8S-02:网关将服务健康检查委托给 console
|
||||||
|
|
||||||
**成功标准:**
|
**成功标准:**
|
||||||
1. KubernetesPendingSyncService 已弃用/从网关移除
|
1. KubernetesPendingSyncService 已弃用/从网关移除
|
||||||
@ -63,9 +50,9 @@
|
|||||||
**目标:** 修复关键安全漏洞。
|
**目标:** 修复关键安全漏洞。
|
||||||
|
|
||||||
**需求:**
|
**需求:**
|
||||||
- SEC-01:移除源代码中的硬编码凭据
|
- [ ] SEC-01:移除源代码中的硬编码凭据
|
||||||
- SEC-02:实现正确的 JWT Token 验证
|
- [ ] SEC-02:实现正确的 JWT Token 验证
|
||||||
- SEC-03:为网关管理 API 端点添加认证
|
- [ ] SEC-03:为网关管理 API 端点添加认证
|
||||||
|
|
||||||
**成功标准:**
|
**成功标准:**
|
||||||
1. 源代码中无硬编码密码/密钥
|
1. 源代码中无硬编码密码/密钥
|
||||||
@ -79,8 +66,8 @@
|
|||||||
**目标:** 优化高负载下的网关性能。
|
**目标:** 优化高负载下的网关性能。
|
||||||
|
|
||||||
**需求:**
|
**需求:**
|
||||||
- PERF-01:优化负载均衡锁竞争
|
- [ ] PERF-01:优化负载均衡锁竞争
|
||||||
- PERF-02:实现增量路由缓存更新
|
- [ ] PERF-02:实现增量路由缓存更新
|
||||||
|
|
||||||
**成功标准:**
|
**成功标准:**
|
||||||
1. 负载均衡不需要每个请求都获取 Redis 锁
|
1. 负载均衡不需要每个请求都获取 Redis 锁
|
||||||
@ -94,11 +81,11 @@
|
|||||||
**目标:** 添加可观测性和测试覆盖。
|
**目标:** 添加可观测性和测试覆盖。
|
||||||
|
|
||||||
**需求:**
|
**需求:**
|
||||||
- OBS-01:分布式追踪集成
|
- [ ] OBS-01:分布式追踪集成
|
||||||
- OBS-02:网关性能自定义指标
|
- [ ] OBS-02:网关性能自定义指标
|
||||||
- TEST-01:RouteCache 单元测试
|
- [ ] TEST-01:RouteCache 单元测试
|
||||||
- TEST-02:JwtTransformMiddleware 单元测试
|
- [ ] TEST-02:JwtTransformMiddleware 单元测试
|
||||||
- TEST-03:负载均衡策略单元测试
|
- [ ] TEST-03:负载均衡策略单元测试
|
||||||
|
|
||||||
**成功标准:**
|
**成功标准:**
|
||||||
1. 分布式追踪包含网关跨度
|
1. 分布式追踪包含网关跨度
|
||||||
@ -111,14 +98,14 @@
|
|||||||
|
|
||||||
| 阶段 | 名称 | 需求数 | 状态 |
|
| 阶段 | 名称 | 需求数 | 状态 |
|
||||||
|------|------|--------|------|
|
|------|------|--------|------|
|
||||||
| 1 | Console 驱动配置与多实例支持 | 6 | 未规划 |
|
| 1 | 配置变更监听与多实例支持 | 6 | ✅ 已完成 |
|
||||||
| 2 | K8s 健康检查委托 | 2 | 未规划 |
|
| 2 | K8s 健康检查委托 | 2 | 未规划 |
|
||||||
| 3 | 安全加固 | 3 | 未规划 |
|
| 3 | 安全加固 | 3 | 未规划 |
|
||||||
| 4 | 性能优化 | 2 | 未规划 |
|
| 4 | 性能优化 | 2 | 未规划 |
|
||||||
| 5 | 可观测性与测试 | 5 | 未规划 |
|
| 5 | 可观测性与测试 | 5 | 未规划 |
|
||||||
|
|
||||||
**总计:** 5 个阶段 | 18 个需求 | 全部覆盖 ✓
|
**总计:** 5 个阶段 | 18 个需求 | 6 项已完成
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
*最后更新:2026-03-02 Roadmap 创建后*
|
*最后更新:2026-03-02 阶段1完成后*
|
||||||
|
|||||||
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
**核心价值:** 可靠、可扩展的 API 网关,将流量分发到后端微服务,支持零停机配置更新。
|
**核心价值:** 可靠、可扩展的 API 网关,将流量分发到后端微服务,支持零停机配置更新。
|
||||||
|
|
||||||
**当前重点:** 阶段 1:Console 驱动的配置管理与多实例支持
|
**当前重点:** 阶段 2:K8s 健康检查委托
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
| 阶段 | 名称 | 状态 | 计划数 | 进度 |
|
| 阶段 | 名称 | 状态 | 计划数 | 进度 |
|
||||||
|------|------|------|--------|------|
|
|------|------|------|--------|------|
|
||||||
| 1 | Console 驱动配置与多实例支持 | 未规划 | 0 | 0% |
|
| 1 | 配置变更监听与多实例支持 | ✅ 已完成 | 0 | 100% |
|
||||||
| 2 | K8s 健康检查委托 | 未规划 | 0 | 0% |
|
| 2 | K8s 健康检查委托 | 未规划 | 0 | 0% |
|
||||||
| 3 | 安全加固 | 未规划 | 0 | 0% |
|
| 3 | 安全加固 | 未规划 | 0 | 0% |
|
||||||
| 4 | 性能优化 | 未规划 | 0 | 0% |
|
| 4 | 性能优化 | 未规划 | 0 | 0% |
|
||||||
@ -54,21 +54,27 @@
|
|||||||
| PostgreSQL NOTIFY 广播 | 2026-03-02 | 使用 PostgreSQL NOTIFY/LISTEN,更轻量 |
|
| PostgreSQL NOTIFY 广播 | 2026-03-02 | 使用 PostgreSQL NOTIFY/LISTEN,更轻量 |
|
||||||
| K8s 健康委托 | 2026-03-02 | Console 处理 K8s 健康,非网关 |
|
| K8s 健康委托 | 2026-03-02 | Console 处理 K8s 健康,非网关 |
|
||||||
|
|
||||||
|
### 阶段 1 分析结论
|
||||||
|
|
||||||
|
- **2026-03-02:** 分析现有代码 `PgSqlConfigChangeListener.cs`
|
||||||
|
- 结论:现有实现已完整满足阶段 1 所有需求
|
||||||
|
- 监听频道:`gateway_config_changed`
|
||||||
|
- 包含:断线重连、回退轮询(5分钟)
|
||||||
|
|
||||||
### Console 集成现状
|
### Console 集成现状
|
||||||
|
|
||||||
- **2026-03-02:** 分析 fengling-console 项目现状
|
|
||||||
- Console 已实现 GatewayController 和 GatewayService
|
- Console 已实现 GatewayController 和 GatewayService
|
||||||
- Console 拥有 GatewayDbContext,可直接管理网关配置
|
- Console 拥有 GatewayDbContext,可直接管理网关配置
|
||||||
- ReloadGatewayAsync() 为空实现,需要实现广播机制
|
- ReloadGatewayAsync() 为空实现,需要在 fengling-console 中实现 NOTIFY 发送
|
||||||
- 网关已有 PgSqlConfigChangeListener 使用 NOTIFY/LISTEN,可复用
|
|
||||||
|
|
||||||
### Roadmap 演进
|
### Roadmap 演进
|
||||||
|
|
||||||
- 阶段 1 已添加:Console 驱动的配置管理与多实例支持
|
- **2026-03-02:** 阶段 1 需求分析完成 - 无需额外代码
|
||||||
- 阶段 2 已添加:K8s 健康检查委托
|
- 阶段 1 已完成:配置变更监听与多实例支持
|
||||||
- 阶段 3 已添加:安全加固
|
- 阶段 2 待添加:K8s 健康检查委托
|
||||||
- 阶段 4 已添加:性能优化
|
- 阶段 3 待添加:安全加固
|
||||||
- 阶段 5 已添加:可观测性与测试
|
- 阶段 4 待添加:性能优化
|
||||||
|
- 阶段 5 待添加:可观测性与测试
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -80,4 +86,4 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
*最后更新:2026-03-02 初始化后*
|
*最后更新:2026-03-02 阶段1完成后*
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user