fengling-gateway/.planning/PROJECT.md
2026-03-02 18:15:23 +08:00

2.8 KiB
Raw Blame History

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 变更,网关监听并重载)
  • 通过广播事件支持多网关实例部署
  • 将 K8s 健康检查从网关移除(委托给 console

范围外

  • [直接配置网关的 UI] — 由 fengling-console 负责
  • [网关中的 K8s 服务健康检查] — 委托给 console
  • [认证/授权逻辑] — 由 auth-service 负责

背景

生态系统结构:

  ↓ 路由流量到:
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 发布配置变更 → 网关订阅并重载
  • 多实例支持通过广播实现Redis pub/sub 或 PostgreSQL NOTIFY
  • Console 负责所有 K8s 服务健康监控
  • 网关只处理请求路由

当前问题(来自 CONCERNS.md

  • 硬编码凭据(安全风险)
  • JWT Token 未验证(安全风险)
  • API 端点无认证(安全风险)
  • 负载均衡锁竞争
  • 缺少单元测试

约束

  • 多实例:网关必须支持同时运行多个实例
  • 热重载:配置变更无需重启
  • 技术栈.NET 10.0, YARP, PostgreSQL, Redis
  • 部署Docker + Kubernetes

关键决策

决策 理由 结果
Console 驱动配置 集中管理,单一事实来源 ✓ 良好
广播事件实现多实例 支持水平扩展 ✓ 良好
K8s 健康委托给 console 降低网关复杂度console 是运维中心 ✓ 良好
保持 YARP 为核心 微软维护,支持良好 ✓ 良好

最后更新2026-03-02 初始化后