docs: update to use PostgreSQL NOTIFY for broadcast (lighter than Redis)
This commit is contained in:
parent
27ea1d1c21
commit
ee6bb763b9
@ -22,7 +22,7 @@
|
|||||||
### 进行中
|
### 进行中
|
||||||
|
|
||||||
- [ ] 实现 console 驱动的配置管理(配置在 fengling-console 变更,网关监听并重载)
|
- [ ] 实现 console 驱动的配置管理(配置在 fengling-console 变更,网关监听并重载)
|
||||||
- [ ] 通过广播事件支持多网关实例部署
|
- [ ] 通过 PostgreSQL NOTIFY 广播支持多网关实例部署
|
||||||
- [ ] 将 K8s 健康检查从网关移除(委托给 console)
|
- [ ] 将 K8s 健康检查从网关移除(委托给 console)
|
||||||
|
|
||||||
### 范围外
|
### 范围外
|
||||||
@ -34,7 +34,8 @@
|
|||||||
## 背景
|
## 背景
|
||||||
|
|
||||||
**生态系统结构:**
|
**生态系统结构:**
|
||||||
```fengling-gateway/ # 当前项目 - API 网关 (YARP)
|
```
|
||||||
|
fengling-gateway/ # 当前项目 - API 网关 (YARP)
|
||||||
↓ 路由流量到:
|
↓ 路由流量到:
|
||||||
fengling-console/ # 中央管理控制台 - 配置、租户管理
|
fengling-console/ # 中央管理控制台 - 配置、租户管理
|
||||||
fengling-console-web/ # 控制台 Web UI
|
fengling-console-web/ # 控制台 Web UI
|
||||||
@ -49,7 +50,7 @@ fengling-service-discovery/ # 服务发现
|
|||||||
**架构决策(新):**
|
**架构决策(新):**
|
||||||
- 网关配置由 fengling-console 管理,网关不直接配置
|
- 网关配置由 fengling-console 管理,网关不直接配置
|
||||||
- Console 发布配置变更 → 网关订阅并重载
|
- Console 发布配置变更 → 网关订阅并重载
|
||||||
- 多实例支持通过广播实现(Redis pub/sub 或 PostgreSQL NOTIFY)
|
- 多实例支持通过 PostgreSQL NOTIFY/LISTEN 实现(更轻量,无需 Redis)
|
||||||
- Console 负责所有 K8s 服务健康监控
|
- Console 负责所有 K8s 服务健康监控
|
||||||
- 网关只处理请求路由
|
- 网关只处理请求路由
|
||||||
|
|
||||||
@ -64,18 +65,13 @@ fengling-service-discovery/ # 服务发现
|
|||||||
- fengling-console 已实现 GatewayController 和 GatewayService
|
- fengling-console 已实现 GatewayController 和 GatewayService
|
||||||
- Console 拥有 GatewayDbContext,可直接管理网关配置数据
|
- Console 拥有 GatewayDbContext,可直接管理网关配置数据
|
||||||
- Console 的 ReloadGatewayAsync() 目前为空实现,未实现广播机制
|
- Console 的 ReloadGatewayAsync() 目前为空实现,未实现广播机制
|
||||||
- Redis 已引用但未使用,可用于 pub/sub 广播
|
- 网关已有 PgSqlConfigChangeListener 使用 NOTIFY/LISTEN,可复用
|
||||||
- 硬编码凭据(安全风险)
|
|
||||||
- JWT Token 未验证(安全风险)
|
|
||||||
- API 端点无认证(安全风险)
|
|
||||||
- 负载均衡锁竞争
|
|
||||||
- 缺少单元测试
|
|
||||||
|
|
||||||
## 约束
|
## 约束
|
||||||
|
|
||||||
- **多实例**:网关必须支持同时运行多个实例
|
- **多实例**:网关必须支持同时运行多个实例
|
||||||
- **热重载**:配置变更无需重启
|
- **热重载**:配置变更无需重启
|
||||||
- **技术栈**:.NET 10.0, YARP, PostgreSQL, Redis
|
- **技术栈**:.NET 10.0, YARP, PostgreSQL
|
||||||
- **部署**:Docker + Kubernetes
|
- **部署**:Docker + Kubernetes
|
||||||
|
|
||||||
## 关键决策
|
## 关键决策
|
||||||
@ -83,7 +79,7 @@ fengling-service-discovery/ # 服务发现
|
|||||||
| 决策 | 理由 | 结果 |
|
| 决策 | 理由 | 结果 |
|
||||||
|------|------|------|
|
|------|------|------|
|
||||||
| Console 驱动配置 | 集中管理,单一事实来源 | ✓ 良好 |
|
| Console 驱动配置 | 集中管理,单一事实来源 | ✓ 良好 |
|
||||||
| 广播事件实现多实例 | 支持水平扩展 | ✓ 良好 |
|
| PostgreSQL NOTIFY 广播 | 轻量方案,无需额外依赖 | ✓ 良好 |
|
||||||
| K8s 健康委托给 console | 降低网关复杂度,console 是运维中心 | ✓ 良好 |
|
| K8s 健康委托给 console | 降低网关复杂度,console 是运维中心 | ✓ 良好 |
|
||||||
| 保持 YARP 为核心 | 微软维护,支持良好 | ✓ 良好 |
|
| 保持 YARP 为核心 | 微软维护,支持良好 | ✓ 良好 |
|
||||||
|
|
||||||
|
|||||||
@ -51,7 +51,7 @@
|
|||||||
| 决策 | 日期 | 备注 |
|
| 决策 | 日期 | 备注 |
|
||||||
|------|------|------|
|
|------|------|------|
|
||||||
| Console 驱动配置 | 2026-03-02 | 配置在 fengling-console 变更,网关监听 |
|
| Console 驱动配置 | 2026-03-02 | 配置在 fengling-console 变更,网关监听 |
|
||||||
| 多实例广播 | 2026-03-02 | Redis pub/sub 或 PostgreSQL NOTIFY |
|
| PostgreSQL NOTIFY 广播 | 2026-03-02 | 使用 PostgreSQL NOTIFY/LISTEN,更轻量 |
|
||||||
| K8s 健康委托 | 2026-03-02 | Console 处理 K8s 健康,非网关 |
|
| K8s 健康委托 | 2026-03-02 | Console 处理 K8s 健康,非网关 |
|
||||||
|
|
||||||
### Console 集成现状
|
### Console 集成现状
|
||||||
@ -60,13 +60,7 @@
|
|||||||
- Console 已实现 GatewayController 和 GatewayService
|
- Console 已实现 GatewayController 和 GatewayService
|
||||||
- Console 拥有 GatewayDbContext,可直接管理网关配置
|
- Console 拥有 GatewayDbContext,可直接管理网关配置
|
||||||
- ReloadGatewayAsync() 为空实现,需要实现广播机制
|
- ReloadGatewayAsync() 为空实现,需要实现广播机制
|
||||||
- Redis 已引用但未使用,可用于 pub/sub
|
- 网关已有 PgSqlConfigChangeListener 使用 NOTIFY/LISTEN,可复用
|
||||||
|
|
||||||
| 决策 | 日期 | 备注 |
|
|
||||||
|------|------|------|
|
|
||||||
| Console 驱动配置 | 2026-03-02 | 配置在 fengling-console 变更,网关监听 |
|
|
||||||
| 多实例广播 | 2026-03-02 | Redis pub/sub 或 PostgreSQL NOTIFY |
|
|
||||||
| K8s 健康委托 | 2026-03-02 | Console 处理 K8s 健康,非网关 |
|
|
||||||
|
|
||||||
### Roadmap 演进
|
### Roadmap 演进
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user