1. 为什么选 FastAPI
基于 Starlette(异步 Web 框架)+ Pydantic(数据验证序列化)。特点:高性能(与 NodeJS/Go 相当)、支持 ASGI(异步)、依赖注入(Depends)、自动生成 API 文档。
2. FastAPI 高并发设计
① 异步全链路:大模型 SDK 调用、向量库检索用 async/await 非阻塞 ② 批处理缓存减压:对话先进内存队列,累计到阈值(如 200 条)或时间窗口用 BackgroundTasks 批量异步写入(Bulk Insert)保护 DB ③ 演进方向:网关/中间件引入 Redis 令牌桶限流;语义缓存对相似问答直接返回。
启动:监听 0.0.0.0:8000(uvicorn main:app);标准输出/错误日志;进程异常自动重启(autorestart=true)。生产用 Gunicorn + Uvicorn。
3. 性能优化(微服务演进)
① 系统拆分(单体→微服务)② 缓存③ 消息队列(大模型调用/向量化写入剥离异步)④ 数据库数据分离 ⑤ 读写分离 ⑥ 服务监控 + 日志采集(Graylog)。
4. Docker / Dockerfile
① 基础镜像(官方优先 python:3.10-slim,避免 latest,用 slim/alpine 减体积)② WORKDIR /app ③ 系统依赖 apt-get ④ 先 COPY requirements.txt 再 pip install(利用缓存)⑤ COPY 代码 ⑥ EXPOSE 8000 ⑦ CMD。部署链路:docker、docker compose、CI/CD、Jenkins、Graylog。
5. 异步无阻塞任务
长耗时任务(评论生成)接口收请求立即返回 task_id,丢入 Celery + Redis 队列异步执行,前端轮询/WebSocket 取结果。并行用 asyncio.gather 或 ThreadPoolExecutor。
6. 代码质量与测试
pytest 单元+集成测试:状态码校验、JSON Schema 字段类型校验、边界值(空/超长/特殊字符)、大模型输出格式校验(LaTeX 闭合/JSON 可解析)、异常重试降级逻辑。测试环境自动化,通过才提测。
7. 数仓 ETL / 调度
信托离线数仓:每日 MySQL/Oracle → 贴源库(ODS),SQL 清洗(字段映射/类型对齐/过滤失效结清账单)→ 公共层(CDM)→ 报送层(RPT)。三层校验(空值/格式/统计);DQC + XXL/Dolphin 调度。掌握 Kafka/Flink 实时组件。Kimball 维度建模。
8. 流程优化通用手段
① 索引存储 ② 会话打包批量请求 ③ 流程池用空闲账号请求 ④ 异步+流式+进度打印+超时 ⑤ 消息队列(RabbitMQ/Kafka)。
评论