2.2 KiB
2.2 KiB
Phase 1: 实现 Gateway 配置管理及事件推送 - Context
收集日期: 2026-03-02 状态: Ready for planning 来源: Manual planning (gsd-tools not available)
更新: 2026-03-03 - 添加数据源决策
## Phase Boundary实现 Console 管理 Gateway 配置的完整能力,包括:
- Gateway 配置的 CRUD 操作(已大部实现)
- 配置变更事件推送(待实现)
- 下游 Gateway 监听配置变更并重载
现有能力:
- GatewayController: API 端点已实现
- GatewayService: 业务逻辑已实现
- DTOs: 数据传输对象已定义
待实现:
- ReloadGatewayAsync() 广播机制
- 配置变更时自动触发广播
技术选型
- 广播机制: PostgreSQL NOTIFY/LISTEN(轻量方案,无需额外依赖)
- 备选方案: Redis pub/sub(如需多实例通信)
数据源
- 通知服务数据库连接: 从 EF Core DbContext 获取,而非从配置文件读取
- 实现方式: 注入 ConsoleDbContext,使用
DbContext.Database.GetConnectionString()
功能决策
- 自动广播: 配置变更(创建/更新/删除)时自动触发广播
- 手动广播: 提供 /api/console/gateway/reload 手动触发端点
Claude's Discretion
- 具体的 NOTIFY 通道名称格式
- 事件 payload 结构设计
- 是否需要事件类型区分(service/route/instance)
关键文件:
- src/Services/GatewayService.cs - ReloadGatewayAsync() 空实现需填充
- src/Controllers/GatewayController.cs - POST /reload 端点
- src/Services/ConfigNotificationService.cs - 需修改为使用 DbContext 获取连接字符串
依赖:
- Npgsql - PostgreSQL 通知(已通过 EF Core 引用)
- Redis(可选)- 如选择 Redis pub/sub
参考实现:
- 网关已有 PgSqlConfigChangeListener 使用 NOTIFY/LISTEN,可复用
- K8s 服务健康检查(后续 Phase)
- Redis pub/sub(如果 PostgreSQL NOTIFY 方案不够用再考虑)
Phase: 01-gateway-config-management Context gathered: 2026-03-02, updated 2026-03-03