fastapi-proxy-test / memory-bank /systemPatterns.md
tanbushi's picture
Sun Jun 8 15:02:12 CST 2025
b7791c2
|
raw
history blame
2.36 kB

系统模式 (System Patterns)

架构概述

本项目将采用基于 FastAPI 的微服务架构。核心是一个 FastAPI 应用,负责接收所有进来的请求,并根据数据库中的配置将请求转发到相应的后端服务,并管理 API Key。

graph LR
    Client --> Proxy[FastAPI Proxy]
    Proxy --> Database[SQLite Database]
    Proxy --> BackendA[Backend Service A]
    Proxy --> BackendB[Backend Service B]
    Proxy --> BackendC[Backend Service C]
    Database --> Proxy

设计模式

  • API Gateway Pattern: FastAPI 应用充当 API 网关,作为客户端访问后端服务的单一入口点。
  • Database Pattern: 使用 SQLite 数据库存储 Key 类别、Key 实例和代理规则配置。
  • Configuration Pattern: 代理规则和 Key 信息通过数据库进行管理,而非静态配置文件。
  • Middleware Pattern: 利用 FastAPI 的中间件功能处理请求和响应的通用逻辑(如日志、认证等)。

关键组件

  • FastAPI Application: 核心应用,处理路由、请求转发和 Key 管理 API。
  • SQLite Database: 存储 Key 类别 (key_categories)、API Key 实例 (api_keys) 和代理规则 (proxy_rules)。
  • SQLAlchemy Models: 定义与数据库表对应的 Python 模型 (KeyCategory, APIKey)。
  • CRUD Operations: 实现对数据库中 Key 类别和 Key 实例的增删改查逻辑 (app/crud.py)。
  • Key Selection Logic: 根据代理规则从 Key 池中选择合适 Key 的逻辑。
  • HTTP Client: 用于向后端服务发起请求(例如使用 httpx 库)。
  • Request/Response Transformer (Optional): 根据配置修改请求和响应。

数据流

  1. 客户端发起请求到 FastAPI Proxy。
  2. FastAPI Proxy 接收请求。
  3. Proxy 查找数据库: 根据请求查找数据库 (proxy_rules 表) 获取匹配的代理规则。
  4. Key 选择 (如果需要): 如果匹配规则需要 Key,Proxy 查询数据库 (api_keys 表) 获取 Key 池,并根据策略选择一个 Key。
  5. 应用 Key 并转发: Proxy 根据规则中定义的应用方式,将选定的 Key 应用到转发请求中。使用 HTTP Client 向后端服务发起请求。
  6. 后端服务返回响应。
  7. Request/Response Transformer (如果存在) 修改响应。
  8. FastAPI Proxy 将响应返回给客户端。