fengling-console/.planning/phases/03-gateway-config-broadcast/03-CONTEXT.md

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 后刷新
## Deferred Ideas
  • 自动触发广播(未来可选优化)

Phase: 03-gateway-config-broadcast Context gathered: 2026-03-03