13 KiB
13 KiB
FischerX 系统架构
文档版本: v1.0.0
创建日期: 2026-05-25
最后更新: 2026-05-25
文档作者: FischerX 团队
文档状态: 已发布
适用范围: 全体开发人员、架构师
目录
一、架构概述
1.1 设计理念
FischerX 采用现代化全栈架构设计,遵循以下核心原则:
- 模块化设计: 将系统拆分为独立可复用的模块,降低耦合度
- 可扩展性: 支持水平扩展和垂直扩展,预留技术升级空间
- 快速开发: 开箱即用的基础设施配置,提升开发效率
- 业务复用: 提取通用业务模式,固化行业最佳实践
- 标准化: 统一的代码规范、接口标准、数据标准
- 国内适配: 充分考虑国内环境特殊性,提供完整的国内生态集成
1.2 架构目标
- 高可用性: 99.9% 以上的系统可用性
- 高性能: 接口响应时间 < 200ms(P95)
- 可维护性: 清晰的代码结构,完善的文档
- 可扩展性: 支持从单体应用平滑过渡到微服务
- 安全性: 满足国内合规要求,数据安全有保障
二、架构层次
2.1 整体架构图
graph TB
subgraph "应用层"
WebApp[Web应用]
AdminApp[管理后台]
MobileApp[移动应用]
MiniApp[小程序]
end
subgraph "业务层"
UserMod[用户管理]
AuthMod[权限控制]
PayMod[支付系统]
ContMod[内容管理]
OrderMod[订单系统]
NotifyMod[消息通知]
FileMod[文件存储]
AnalyMod[数据分析]
end
subgraph "服务层"
AuthSvc[认证服务]
PaySvc[支付网关]
SMSSvc[短信服务]
VerifySvc[实名认证]
MapSvc[地图服务]
AISvc[AI服务]
MonitorSvc[监控服务]
LogSvc[日志服务]
end
subgraph "数据层"
PostgreSQL[(PostgreSQL)]
Redis[(Redis)]
RabbitMQ[(RabbitMQ)]
Elastic[(Elasticsearch)]
OSS[(对象存储)]
end
subgraph "基础设施层"
K8s[Kubernetes]
SLB[负载均衡]
CDN[CDN加速]
CI_CD[CI/CD]
Monitor[监控告警]
Logging[日志收集]
end
WebApp --> UserMod
WebApp --> AuthMod
WebApp --> PayMod
WebApp --> ContMod
WebApp --> OrderMod
WebApp --> NotifyMod
AdminApp --> UserMod
AdminApp --> AuthMod
AdminApp --> ContMod
AdminApp --> OrderMod
AdminApp --> AnalyMod
MobileApp --> UserMod
MobileApp --> PayMod
MobileApp --> OrderMod
MobileApp --> NotifyMod
MiniApp --> UserMod
MiniApp --> PayMod
MiniApp --> OrderMod
UserMod --> AuthSvc
UserMod --> PostgreSQL
UserMod --> Redis
AuthMod --> AuthSvc
AuthMod --> PostgreSQL
AuthMod --> Redis
PayMod --> PaySvc
PayMod --> PostgreSQL
PayMod --> RabbitMQ
PayMod --> Redis
ContMod --> PostgreSQL
ContMod --> OSS
ContMod --> Elastic
OrderMod --> PostgreSQL
OrderMod --> RabbitMQ
OrderMod --> Redis
NotifyMod --> SMSSvc
NotifyMod --> RabbitMQ
FileMod --> OSS
FileMod --> CDN
AnalyMod --> PostgreSQL
AnalyMod --> Elastic
AuthSvc --> PostgreSQL
AuthSvc --> Redis
PaySvc --> PostgreSQL
PaySvc --> Redis
MonitorSvc --> Monitor
LogSvc --> Logging
PostgreSQL --> K8s
Redis --> K8s
RabbitMQ --> K8s
Elastic --> K8s
OSS --> CDN
2.2 层次说明
应用层
- Web应用: 面向用户的主站应用
- 管理后台: 面向运营人员的管理系统
- 移动应用: React Native 开发的移动应用
- 小程序: 微信/支付宝小程序
业务层
- 用户管理模块: 用户注册、登录、信息管理
- 权限控制模块: RBAC 权限模型、角色管理、权限分配
- 支付系统模块: 微信支付、支付宝支付、银联支付
- 内容管理模块: 内容发布、审核、评论管理
- 订单系统模块: 订单创建、状态管理、查询统计
- 消息通知模块: 短信、邮件、推送、站内消息
- 文件存储模块: 对象存储、文件上传下载、CDN加速
- 数据分析模块: 用户行为分析、业务统计、数据可视化
服务层
- 认证服务: JWT Token管理、OAuth2.0集成
- 支付网关: 统一支付接口、多支付渠道切换
- 短信服务: 阿里云短信集成
- 实名认证: 身份证验证、人脸识别
- 地图服务: 高德地图集成
- AI服务: 百度AI、阿里AI集成
- 监控服务: 性能监控、错误追踪
- 日志服务: 日志收集、分析、查询
数据层
- PostgreSQL: 主关系数据库
- Redis: 分布式缓存、会话存储
- RabbitMQ: 可靠消息传递
- Elasticsearch: 全文搜索、日志分析
- 对象存储: 阿里云OSS/腾讯云COS
基础设施层
- Kubernetes: 容器编排
- 负载均衡: SLB/CLB
- CDN加速: 阿里云CDN
- CI/CD: 阿里云云效/Jenkins
- 监控告警: 阿里云ARMS/Prometheus+Grafana
- 日志收集: 阿里云SLS/ELK Stack
三、模块划分
3.1 核心模块清单
基础模块:
1. 用户管理模块
- 用户注册/登录
- 手机号验证码登录
- 微信/支付宝登录
- 实名认证
- 用户信息管理
2. 权限控制模块
- RBAC权限模型
- 角色管理
- 权限分配
- 资源访问控制
3. 认证授权模块
- JWT Token管理
- Session管理
- OAuth2.0集成
- 多因素认证
4. 文件存储模块
- 对象存储集成
- 文件上传/下载
- 图片处理(压缩、裁剪、水印)
- CDN加速
5. 消息通知模块
- 短信通知(阿里云短信)
- 邮件通知
- 推送通知(小程序、App)
- 站内消息
业务模块:
1. 支付系统模块
- 微信支付集成
- 支付宝支付集成
- 银联支付集成
- 订单管理
- 退款处理
2. 内容管理模块
- 内容发布
- 内容审核(敏感词过滤)
- 评论管理
- 标签分类
3. 订单系统模块
- 订单创建
- 订单状态管理
- 订单查询
- 订单统计
4. 数据分析模块
- 用户行为分析
- 业务数据统计
- 数据可视化
- 报表生成
服务模块:
1. 第三方服务集成
- 地图服务(高德地图)
- AI服务(百度AI、阿里AI)
- 实名认证服务
- OCR识别服务
2. 监控服务模块
- 性能监控
- 错误追踪
- 用户行为追踪
- 业务指标监控
3. 日志服务模块
- 日志收集
- 日志分析
- 日志查询
- 日志告警
3.2 模块依赖关系
graph LR
UserMod[用户管理] --> AuthMod[认证授权]
UserMod --> FileMod[文件存储]
AuthMod[认证授权] --> AuthSvc[认证服务]
PayMod[支付系统] --> OrderMod[订单系统]
PayMod[支付系统] --> NotifyMod[消息通知]
ContMod[内容管理] --> FileMod[文件存储]
ContMod[内容管理] --> UserMod[用户管理]
OrderMod[订单系统] --> UserMod[用户管理]
OrderMod[订单系统] --> NotifyMod[消息通知]
NotifyMod[消息通知] --> UserMod[用户管理]
AnalyMod[数据分析] --> UserMod[用户管理]
AnalyMod[数据分析] --> OrderMod[订单系统]
AnalyMod[数据分析] --> ContMod[内容管理]
四、技术架构
4.1 技术栈总览
| 层级 | 技术选型 | 说明 |
|---|---|---|
| 前端框架 | Next.js 14+ | React 框架,支持 SSR/SSG |
| 前端语言 | TypeScript 5+ | 类型安全 |
| 前端UI | Shadcn UI + Tailwind CSS | 组件库 + 原子化 CSS |
| 前端状态 | Zustand + React Query | 轻量级状态管理 |
| 后端框架 | NestJS | 企业级 Node.js 框架 |
| 后端语言 | TypeScript | 前后端技术栈统一 |
| ORM | Prisma | 类型安全的 ORM |
| 数据库 | PostgreSQL 15+ | 主关系数据库 |
| 缓存 | Redis 7+ | 分布式缓存 |
| 消息队列 | RabbitMQ | 可靠消息传递 |
| 搜索引擎 | Elasticsearch 8+ | 全文搜索 |
| 对象存储 | 阿里云 OSS | 国内首选云存储 |
| 容器化 | Docker + Kubernetes | 容器编排 |
| CI/CD | 阿里云云效 | 国内 CI/CD 平台 |
| 监控 | 阿里云 ARMS + Sentry | 应用监控 + 错误追踪 |
| 日志 | 阿里云 SLS | 日志服务 |
4.2 前端技术架构
核心框架:
- Next.js 14+ (React框架,支持SSR/SSG)
- TypeScript 5+ (类型安全)
- React 18+ (并发渲染、Suspense)
UI组件库:
- Shadcn UI (基于Radix UI的组件库)
- Tailwind CSS 3+ (原子化CSS)
- Ant Design 5+ (企业级组件库,国内生态)
状态管理:
- Zustand (轻量级状态管理)
- React Query (服务端状态管理)
- React Hook Form (表单管理)
工具链:
- Vite (构建工具)
- ESLint + Prettier (代码规范)
- Vitest + Playwright (测试框架)
4.3 后端技术架构
核心框架:
- Node.js 20+ LTS
- NestJS (企业级Node.js框架)
ORM框架:
- Prisma (Node.js ORM,类型安全)
API设计:
- RESTful API (标准接口)
- GraphQL (灵活查询)
- tRPC (端到端类型安全)
认证授权:
- Passport.js (Node.js认证中间件)
- JWT + RBAC权限控制
五、数据架构
5.1 数据库选型
| 数据库类型 | 技术选型 | 使用场景 |
|---|---|---|
| 关系型数据库 | PostgreSQL 15+ | 主数据库,存储业务数据 |
| 缓存数据库 | Redis 7+ | 分布式缓存、会话存储 |
| 消息队列 | RabbitMQ | 异步任务、事件驱动 |
| 搜索引擎 | Elasticsearch 8+ | 全文搜索、日志分析 |
| 对象存储 | 阿里云 OSS | 文件、图片、视频存储 |
5.2 数据流向
graph LR
App[前端应用] --> API[API服务]
API --> PostgreSQL[(PostgreSQL)]
API --> Redis[(Redis)]
API --> RabbitMQ[(RabbitMQ)]
API --> OSS[(对象存储)]
Worker[后台任务] --> RabbitMQ
Worker --> PostgreSQL
Worker --> Redis
Search[搜索服务] --> Elastic[(Elasticsearch)]
Search --> PostgreSQL
Analy[分析服务] --> PostgreSQL
Analy --> Elastic
六、部署架构
6.1 环境划分
| 环境 | 用途 | 数据隔离 |
|---|---|---|
| 开发环境 | 日常开发、调试 | 独立数据库 |
| 测试环境 | 功能测试、集成测试 | 独立数据库(测试数据) |
| 预发布环境 | 发布前验证 | 独立数据库(生产数据快照) |
| 生产环境 | 正式对外服务 | 生产数据库 |
6.2 部署架构图
graph TB
subgraph "CDN层"
CDN[阿里云CDN]
end
subgraph "负载均衡层"
SLB[阿里云SLB]
end
subgraph "应用层"
WebPod1[Web Pod 1]
WebPod2[Web Pod 2]
WebPodN[Web Pod N]
APIPod1[API Pod 1]
APIPod2[API Pod 2]
APIPodN[API Pod N]
end
subgraph "服务层"
Redis[(Redis 主从)]
RabbitMQ[(RabbitMQ 集群)]
Elastic[(Elasticsearch 集群)]
end
subgraph "数据层"
PostgreSQL[(PostgreSQL 主从)]
OSS[(阿里云OSS)]
end
CDN --> SLB
SLB --> WebPod1
SLB --> WebPod2
SLB --> WebPodN
SLB --> APIPod1
SLB --> APIPod2
SLB --> APIPodN
WebPod1 --> Redis
WebPod1 --> APIPod1
WebPod2 --> Redis
WebPod2 --> APIPod2
WebPodN --> Redis
WebPodN --> APIPodN
APIPod1 --> PostgreSQL
APIPod1 --> Redis
APIPod1 --> RabbitMQ
APIPod1 --> OSS
APIPod2 --> PostgreSQL
APIPod2 --> Redis
APIPod2 --> RabbitMQ
APIPod2 --> OSS
APIPodN --> PostgreSQL
APIPodN --> Redis
APIPodN --> RabbitMQ
APIPodN --> OSS
RabbitMQ --> Elastic
PostgreSQL --> Elastic
6.3 容器编排
使用 Kubernetes 进行容器编排,主要包括:
- Deployment: 管理无状态应用
- StatefulSet: 管理有状态应用(数据库、Redis等)
- Service: 服务发现和负载均衡
- ConfigMap/Secret: 配置管理
- Ingress: 外部访问入口
- HPA: 水平自动扩缩容
七、演进路线
7.1 第一阶段:单体应用
- 所有模块部署在同一个应用中
- 共享数据库和缓存
- 适合初期快速迭代
7.2 第二阶段:服务拆分
- 将核心模块拆分为独立服务
- 用户服务、支付服务、订单服务等
- 服务间通过 API 或消息队列通信
7.3 第三阶段:微服务架构
- 完全微服务化
- 每个服务独立部署、扩展
- 服务网格治理
- 链路追踪、熔断降级
文档维护: 本文档由架构师维护,架构重大变更时更新
反馈渠道: 如有问题,请提交 Issue 或联系架构师
最后更新: 2026-05-25
文档状态: 已发布