1.9 KiB
1.9 KiB
Phase 3: 网关配置变更广播机制 - Context
Gathered: 2026-03-03 Status: Ready for planning
## Phase Boundary分析现有的网关配置广播机制,梳理路由→服务→下游的完整链路,确定配置变更时的广播策略。
## Implementation Decisions广播触发策略
- 仅手动触发:所有 CRUD 操作(路由、集群、实例、权重)不自动广播
- 下游需要刷新时,手动调用 POST /api/console/gateway/reload
- 事件只通知"需要刷新",不包含具体变更内容
- 下游收到通知后,自行查询数据库刷新配置
广播事件格式
- 通道:
gateway_config_changed - 事件内容:只包含 action: "reload",不含具体变更详情
- 下游逻辑:收到通知 → 查询数据库 → 刷新内存缓存
需分析的现有代码
- ConfigNotificationService.cs - 已实现的 NOTIFY 机制
- GatewayService.cs - 需集成通知服务
- GatewayController.cs - /reload 接口
Claude's Discretion
- 自动触发 vs 手动触发的具体实现方式
- 广播失败时的错误处理策略
- 日志记录细节
<code_context>
Existing Code Insights
Reusable Assets
- ConfigNotificationService.cs: PostgreSQL NOTIFY 机制已实现
- INotificationService 接口: 可直接复用
Established Patterns
- 使用 PgSqlNotificationService 发布通知
- 通道名称:
gateway_config_changed
Integration Points
- GatewayService 需注入 INotificationService
- ReloadGatewayAsync 需调用通知服务
</code_context>
## Specific Ideas- 事件 payload 尽量精简,只传递 "reload" action
- 下游网关监听同一数据库连接,收到 NOTIFY 后刷新
- 自动触发广播(未来可选优化)
Phase: 03-gateway-config-broadcast Context gathered: 2026-03-03