fengling-gateway/.planning/PROJECT.md

89 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Fengling Gateway
## 这是什么
基于 YARP (Yet Another Reverse Proxy) 的 API 网关用于风灵微服务生态系统。支持多租户路由、动态配置和分布式负载均衡将请求路由到下游服务auth-service、member-service、activity、platform、risk-control 等)。
## 核心价值
可靠、可扩展的 API 网关,将流量分发到后端微服务,支持零停机配置更新。
## 需求
### 已验证(现有功能)
- ✓ 基于 URL 路径的多租户路由 — 已有
- ✓ JWT Token 解析和租户声明提取 — 已有
- ✓ PostgreSQL 动态路由配置 — 已有
- ✓ Kubernetes 服务发现集成 — 已有
- ✓ 加权轮询负载均衡 — 已有
- ✓ 通过 PostgreSQL NOTIFY 实现配置热重载 — 已有
### 进行中
- [ ] 实现 console 驱动的配置管理(配置在 fengling-console 变更,网关监听并重载)
- [ ] 通过 PostgreSQL NOTIFY 广播支持多网关实例部署
- [ ] 将 K8s 健康检查从网关移除(委托给 console
### 范围外
- [直接配置网关的 UI] — 由 fengling-console 负责
- [网关中的 K8s 服务健康检查] — 委托给 console
- [认证/授权逻辑] — 由 auth-service 负责
## 背景
**生态系统结构:**
```
fengling-gateway/ # 当前项目 - API 网关 (YARP)
↓ 路由流量到:
fengling-console/ # 中央管理控制台 - 配置、租户管理
fengling-console-web/ # 控制台 Web UI
fengling-auth-service/ # 认证服务
fengling-member-service/ # 会员服务
fengling-activity/ # 活动服务
fengling-platform/ # 平台服务
fengling-risk-control/ # 风控服务
fengling-service-discovery/# 服务发现
```
**架构决策(新):**
- 网关配置由 fengling-console 管理,网关不直接配置
- Console 发布配置变更 → 网关订阅并重载
- 多实例支持通过 PostgreSQL NOTIFY/LISTEN 实现(更轻量,无需 Redis
- Console 负责所有 K8s 服务健康监控
- 网关只处理请求路由
**当前问题(来自 CONCERNS.md**
- 硬编码凭据(安全风险)
- JWT Token 未验证(安全风险)
- API 端点无认证(安全风险)
- 负载均衡锁竞争
- 缺少单元测试
**Console 集成现状:**
- fengling-console 已实现 GatewayController 和 GatewayService
- Console 拥有 GatewayDbContext可直接管理网关配置数据
- Console 的 ReloadGatewayAsync() 目前为空实现,未实现广播机制
- 网关已有 PgSqlConfigChangeListener 使用 NOTIFY/LISTEN可复用
## 约束
- **多实例**:网关必须支持同时运行多个实例
- **热重载**:配置变更无需重启
- **技术栈**.NET 10.0, YARP, PostgreSQL
- **部署**Docker + Kubernetes
## 关键决策
| 决策 | 理由 | 结果 |
|------|------|------|
| Console 驱动配置 | 集中管理,单一事实来源 | ✓ 良好 |
| PostgreSQL NOTIFY 广播 | 轻量方案,无需额外依赖 | ✓ 良好 |
| K8s 健康委托给 console | 降低网关复杂度console 是运维中心 | ✓ 良好 |
| 保持 YARP 为核心 | 微软维护,支持良好 | ✓ 良好 |
---
*最后更新2026-03-02 初始化后*