重构动物认领页面和导航菜单,统一使用SVG图标并优化交互体验
This commit is contained in:
611
docs/整个项目的架构文档.md
Normal file
611
docs/整个项目的架构文档.md
Normal file
@@ -0,0 +1,611 @@
|
||||
# 解班客项目系统架构文档
|
||||
|
||||
## 1. 项目概述
|
||||
|
||||
### 1.1 项目简介
|
||||
解班客是一个综合性的社交旅行平台,融合了结伴旅行和动物认领两大核心功能。项目采用现代化的微服务架构,包含微信小程序、管理后台、官方网站和后端服务四个主要模块。
|
||||
|
||||
### 1.2 业务架构
|
||||
```mermaid
|
||||
graph TB
|
||||
A[用户端] --> B[微信小程序]
|
||||
A --> C[官方网站]
|
||||
D[管理端] --> E[管理后台]
|
||||
|
||||
B --> F[后端服务]
|
||||
C --> F
|
||||
E --> F
|
||||
|
||||
F --> G[用户服务]
|
||||
F --> H[活动服务]
|
||||
F --> I[动物认领服务]
|
||||
F --> J[支付服务]
|
||||
F --> K[消息服务]
|
||||
F --> L[文件服务]
|
||||
|
||||
G --> M[数据库集群]
|
||||
H --> M
|
||||
I --> M
|
||||
J --> M
|
||||
K --> M
|
||||
L --> M
|
||||
|
||||
F --> N[缓存集群]
|
||||
F --> O[消息队列]
|
||||
F --> P[对象存储]
|
||||
```
|
||||
|
||||
### 1.3 技术选型原则
|
||||
- **稳定性优先**:选择成熟稳定的技术栈
|
||||
- **性能考虑**:支持高并发和快速响应
|
||||
- **可扩展性**:支持业务快速发展和功能扩展
|
||||
- **开发效率**:提高开发效率和维护便利性
|
||||
- **成本控制**:在满足需求的前提下控制技术成本
|
||||
|
||||
## 2. 整体架构设计
|
||||
|
||||
### 2.1 系统架构图
|
||||
```mermaid
|
||||
graph TB
|
||||
subgraph "客户端层"
|
||||
A1[微信小程序]
|
||||
A2[管理后台Web]
|
||||
A3[官方网站]
|
||||
end
|
||||
|
||||
subgraph "网关层"
|
||||
B1[API网关]
|
||||
B2[负载均衡器]
|
||||
end
|
||||
|
||||
subgraph "应用服务层"
|
||||
C1[用户服务]
|
||||
C2[活动服务]
|
||||
C3[认领服务]
|
||||
C4[支付服务]
|
||||
C5[消息服务]
|
||||
C6[文件服务]
|
||||
C7[管理服务]
|
||||
end
|
||||
|
||||
subgraph "数据服务层"
|
||||
D1[MySQL主从集群]
|
||||
D2[Redis集群]
|
||||
D3[MongoDB集群]
|
||||
D4[Elasticsearch]
|
||||
end
|
||||
|
||||
subgraph "基础设施层"
|
||||
E1[Docker容器]
|
||||
E2[Kubernetes]
|
||||
E3[监控系统]
|
||||
E4[日志系统]
|
||||
E5[CI/CD]
|
||||
end
|
||||
|
||||
subgraph "第三方服务"
|
||||
F1[微信API]
|
||||
F2[支付接口]
|
||||
F3[短信服务]
|
||||
F4[地图服务]
|
||||
F5[云存储]
|
||||
end
|
||||
|
||||
A1 --> B1
|
||||
A2 --> B1
|
||||
A3 --> B1
|
||||
|
||||
B1 --> B2
|
||||
B2 --> C1
|
||||
B2 --> C2
|
||||
B2 --> C3
|
||||
B2 --> C4
|
||||
B2 --> C5
|
||||
B2 --> C6
|
||||
B2 --> C7
|
||||
|
||||
C1 --> D1
|
||||
C2 --> D1
|
||||
C3 --> D1
|
||||
C4 --> D1
|
||||
C5 --> D2
|
||||
C6 --> D3
|
||||
C7 --> D1
|
||||
|
||||
C1 --> D2
|
||||
C2 --> D2
|
||||
C3 --> D2
|
||||
C4 --> D2
|
||||
|
||||
C2 --> D4
|
||||
C3 --> D4
|
||||
|
||||
C1 --> F1
|
||||
C4 --> F2
|
||||
C5 --> F3
|
||||
C2 --> F4
|
||||
C6 --> F5
|
||||
```
|
||||
|
||||
### 2.2 架构分层说明
|
||||
|
||||
#### 2.2.1 客户端层
|
||||
- **微信小程序**:面向C端用户的主要应用
|
||||
- **管理后台Web**:面向运营人员的管理界面
|
||||
- **官方网站**:品牌展示和用户获取的官方门户
|
||||
|
||||
#### 2.2.2 网关层
|
||||
- **API网关**:统一的API入口,负责路由、鉴权、限流等
|
||||
- **负载均衡器**:请求分发和服务负载均衡
|
||||
|
||||
#### 2.2.3 应用服务层
|
||||
- **用户服务**:用户注册、登录、资料管理
|
||||
- **活动服务**:活动发布、报名、管理
|
||||
- **认领服务**:动物认领、管理、互动
|
||||
- **支付服务**:支付处理、订单管理
|
||||
- **消息服务**:消息推送、通知管理
|
||||
- **文件服务**:文件上传、存储、处理
|
||||
- **管理服务**:后台管理功能
|
||||
|
||||
#### 2.2.4 数据服务层
|
||||
- **MySQL主从集群**:关系型数据存储
|
||||
- **Redis集群**:缓存和会话存储
|
||||
- **MongoDB集群**:文档型数据存储
|
||||
- **Elasticsearch**:搜索和日志分析
|
||||
|
||||
#### 2.2.5 基础设施层
|
||||
- **Docker容器**:应用容器化部署
|
||||
- **Kubernetes**:容器编排和管理
|
||||
- **监控系统**:系统监控和告警
|
||||
- **日志系统**:日志收集和分析
|
||||
- **CI/CD**:持续集成和部署
|
||||
|
||||
## 3. 技术栈选型
|
||||
|
||||
### 3.1 前端技术栈
|
||||
|
||||
#### 3.1.1 微信小程序
|
||||
| 技术 | 版本 | 选型理由 |
|
||||
|------|------|----------|
|
||||
| 微信小程序原生 | 最新版本 | 官方支持,性能最优,功能最全 |
|
||||
| Vant Weapp | 1.x | 成熟的小程序UI组件库 |
|
||||
| MobX | 6.x | 轻量级状态管理 |
|
||||
|
||||
#### 3.1.2 管理后台
|
||||
| 技术 | 版本 | 选型理由 |
|
||||
|------|------|----------|
|
||||
| Vue.js | 3.x | 现代化前端框架,生态丰富 |
|
||||
| Element Plus | 2.x | 成熟的Vue3 UI组件库 |
|
||||
| Vue Router | 4.x | Vue官方路由管理 |
|
||||
| Pinia | 2.x | Vue3推荐的状态管理 |
|
||||
| Vite | 4.x | 快速的构建工具 |
|
||||
| TypeScript | 5.x | 类型安全,提高代码质量 |
|
||||
|
||||
#### 3.1.3 官方网站
|
||||
| 技术 | 版本 | 选型理由 |
|
||||
|------|------|----------|
|
||||
| Vue.js | 3.x | 与管理后台技术栈统一 |
|
||||
| Nuxt.js | 3.x | SSR支持,SEO友好 |
|
||||
| Tailwind CSS | 3.x | 原子化CSS,开发效率高 |
|
||||
| TypeScript | 5.x | 类型安全 |
|
||||
|
||||
### 3.2 后端技术栈
|
||||
|
||||
#### 3.2.1 核心框架
|
||||
| 技术 | 版本 | 选型理由 |
|
||||
|------|------|----------|
|
||||
| Node.js | 18+ LTS | 高性能,生态丰富,开发效率高 |
|
||||
| Express.js | 4.x | 成熟的Web框架,中间件丰富 |
|
||||
| TypeScript | 5.x | 类型安全,提高代码质量 |
|
||||
| PM2 | 5.x | 进程管理和监控 |
|
||||
|
||||
#### 3.2.2 数据库
|
||||
| 技术 | 版本 | 选型理由 |
|
||||
|------|------|----------|
|
||||
| MySQL | 8.0+ | 成熟稳定的关系型数据库 |
|
||||
| Redis | 7.x | 高性能缓存和会话存储 |
|
||||
| MongoDB | 6.x | 灵活的文档型数据库 |
|
||||
|
||||
#### 3.2.3 中间件和工具
|
||||
| 技术 | 版本 | 选型理由 |
|
||||
|------|------|----------|
|
||||
| Nginx | 1.20+ | 高性能Web服务器和反向代理 |
|
||||
| RabbitMQ | 3.11+ | 可靠的消息队列 |
|
||||
| Elasticsearch | 8.x | 强大的搜索和分析引擎 |
|
||||
| Docker | 20.x+ | 容器化部署 |
|
||||
| Kubernetes | 1.25+ | 容器编排 |
|
||||
|
||||
### 3.3 第三方服务
|
||||
| 服务 | 提供商 | 用途 |
|
||||
|------|--------|------|
|
||||
| 微信开放平台 | 腾讯 | 小程序登录、支付、分享 |
|
||||
| 腾讯云COS | 腾讯云 | 对象存储 |
|
||||
| 腾讯云SMS | 腾讯云 | 短信服务 |
|
||||
| 腾讯地图API | 腾讯 | 地图和定位服务 |
|
||||
| 微信支付 | 腾讯 | 支付服务 |
|
||||
|
||||
## 4. 系统设计
|
||||
|
||||
### 4.1 微服务架构设计
|
||||
|
||||
#### 4.1.1 服务拆分原则
|
||||
- **业务边界清晰**:按业务领域拆分服务
|
||||
- **数据独立**:每个服务拥有独立的数据存储
|
||||
- **接口标准化**:统一的API设计规范
|
||||
- **服务自治**:服务可独立开发、部署、扩展
|
||||
|
||||
#### 4.1.2 服务间通信
|
||||
```mermaid
|
||||
graph LR
|
||||
A[API网关] --> B[用户服务]
|
||||
A --> C[活动服务]
|
||||
A --> D[认领服务]
|
||||
A --> E[支付服务]
|
||||
|
||||
C --> F[消息队列]
|
||||
D --> F
|
||||
E --> F
|
||||
|
||||
F --> G[消息服务]
|
||||
F --> H[通知服务]
|
||||
|
||||
B --> I[Redis缓存]
|
||||
C --> I
|
||||
D --> I
|
||||
E --> I
|
||||
```
|
||||
|
||||
#### 4.1.3 数据一致性
|
||||
- **最终一致性**:通过消息队列实现最终一致性
|
||||
- **分布式事务**:使用Saga模式处理跨服务事务
|
||||
- **数据同步**:定时任务同步关键数据
|
||||
- **补偿机制**:失败场景的数据补偿
|
||||
|
||||
### 4.2 数据架构设计
|
||||
|
||||
#### 4.2.1 数据分层
|
||||
```mermaid
|
||||
graph TB
|
||||
A[应用层] --> B[服务层]
|
||||
B --> C[数据访问层]
|
||||
C --> D[数据存储层]
|
||||
|
||||
subgraph "数据存储层"
|
||||
D1[MySQL - 业务数据]
|
||||
D2[Redis - 缓存数据]
|
||||
D3[MongoDB - 文档数据]
|
||||
D4[ES - 搜索数据]
|
||||
end
|
||||
|
||||
C --> D1
|
||||
C --> D2
|
||||
C --> D3
|
||||
C --> D4
|
||||
```
|
||||
|
||||
#### 4.2.2 数据库设计原则
|
||||
- **读写分离**:主库写入,从库读取
|
||||
- **分库分表**:按业务和数据量进行分库分表
|
||||
- **索引优化**:合理设计索引提高查询性能
|
||||
- **数据备份**:定期备份和恢复策略
|
||||
|
||||
#### 4.2.3 缓存策略
|
||||
- **多级缓存**:浏览器缓存 + CDN缓存 + Redis缓存
|
||||
- **缓存更新**:Cache-Aside模式
|
||||
- **缓存穿透**:布隆过滤器防止缓存穿透
|
||||
- **缓存雪崩**:缓存过期时间随机化
|
||||
|
||||
### 4.3 安全架构设计
|
||||
|
||||
#### 4.3.1 安全防护体系
|
||||
```mermaid
|
||||
graph TB
|
||||
A[用户请求] --> B[WAF防火墙]
|
||||
B --> C[API网关]
|
||||
C --> D[身份认证]
|
||||
D --> E[权限验证]
|
||||
E --> F[业务服务]
|
||||
|
||||
F --> G[数据加密]
|
||||
G --> H[数据库]
|
||||
|
||||
I[安全监控] --> J[日志分析]
|
||||
J --> K[告警系统]
|
||||
```
|
||||
|
||||
#### 4.3.2 安全措施
|
||||
- **身份认证**:JWT Token + 刷新Token机制
|
||||
- **权限控制**:RBAC角色权限模型
|
||||
- **数据加密**:敏感数据加密存储和传输
|
||||
- **接口安全**:接口签名、频率限制、参数验证
|
||||
- **安全监控**:实时监控异常行为和攻击
|
||||
|
||||
## 5. 部署架构
|
||||
|
||||
### 5.1 部署环境规划
|
||||
|
||||
#### 5.1.1 环境分类
|
||||
| 环境 | 用途 | 配置 |
|
||||
|------|------|------|
|
||||
| 开发环境 | 日常开发测试 | 单机部署,资源共享 |
|
||||
| 测试环境 | 功能测试验证 | 模拟生产环境 |
|
||||
| 预发布环境 | 上线前验证 | 生产环境配置 |
|
||||
| 生产环境 | 正式服务 | 高可用集群部署 |
|
||||
|
||||
#### 5.1.2 生产环境架构
|
||||
```mermaid
|
||||
graph TB
|
||||
subgraph "负载均衡层"
|
||||
A1[Nginx LB 1]
|
||||
A2[Nginx LB 2]
|
||||
end
|
||||
|
||||
subgraph "应用服务层"
|
||||
B1[App Server 1]
|
||||
B2[App Server 2]
|
||||
B3[App Server 3]
|
||||
end
|
||||
|
||||
subgraph "数据库层"
|
||||
C1[MySQL Master]
|
||||
C2[MySQL Slave 1]
|
||||
C3[MySQL Slave 2]
|
||||
C4[Redis Cluster]
|
||||
end
|
||||
|
||||
subgraph "存储层"
|
||||
D1[文件存储]
|
||||
D2[日志存储]
|
||||
D3[备份存储]
|
||||
end
|
||||
|
||||
A1 --> B1
|
||||
A1 --> B2
|
||||
A2 --> B2
|
||||
A2 --> B3
|
||||
|
||||
B1 --> C1
|
||||
B2 --> C1
|
||||
B3 --> C1
|
||||
|
||||
B1 --> C2
|
||||
B2 --> C3
|
||||
B3 --> C2
|
||||
|
||||
B1 --> C4
|
||||
B2 --> C4
|
||||
B3 --> C4
|
||||
|
||||
B1 --> D1
|
||||
B2 --> D1
|
||||
B3 --> D1
|
||||
```
|
||||
|
||||
### 5.2 容器化部署
|
||||
|
||||
#### 5.2.1 Docker容器化
|
||||
- **应用容器化**:所有服务打包为Docker镜像
|
||||
- **镜像管理**:私有镜像仓库管理
|
||||
- **容器编排**:使用Docker Compose或Kubernetes
|
||||
- **资源限制**:合理设置容器资源限制
|
||||
|
||||
#### 5.2.2 Kubernetes部署
|
||||
```yaml
|
||||
# 示例:用户服务部署配置
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: user-service
|
||||
spec:
|
||||
replicas: 3
|
||||
selector:
|
||||
matchLabels:
|
||||
app: user-service
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: user-service
|
||||
spec:
|
||||
containers:
|
||||
- name: user-service
|
||||
image: jiebanke/user-service:latest
|
||||
ports:
|
||||
- containerPort: 3000
|
||||
env:
|
||||
- name: NODE_ENV
|
||||
value: "production"
|
||||
resources:
|
||||
requests:
|
||||
memory: "256Mi"
|
||||
cpu: "250m"
|
||||
limits:
|
||||
memory: "512Mi"
|
||||
cpu: "500m"
|
||||
```
|
||||
|
||||
### 5.3 监控和运维
|
||||
|
||||
#### 5.3.1 监控体系
|
||||
```mermaid
|
||||
graph TB
|
||||
A[应用监控] --> D[监控中心]
|
||||
B[系统监控] --> D
|
||||
C[业务监控] --> D
|
||||
|
||||
D --> E[告警系统]
|
||||
D --> F[可视化面板]
|
||||
|
||||
E --> G[短信告警]
|
||||
E --> H[邮件告警]
|
||||
E --> I[微信告警]
|
||||
```
|
||||
|
||||
#### 5.3.2 监控指标
|
||||
- **系统指标**:CPU、内存、磁盘、网络使用率
|
||||
- **应用指标**:响应时间、吞吐量、错误率
|
||||
- **业务指标**:用户活跃度、交易量、转化率
|
||||
- **自定义指标**:关键业务流程的监控指标
|
||||
|
||||
## 6. 性能优化
|
||||
|
||||
### 6.1 前端性能优化
|
||||
|
||||
#### 6.1.1 小程序优化
|
||||
- **代码分包**:按功能模块分包加载
|
||||
- **图片优化**:WebP格式、懒加载、压缩
|
||||
- **缓存策略**:合理使用本地缓存
|
||||
- **网络优化**:请求合并、预加载
|
||||
|
||||
#### 6.1.2 Web端优化
|
||||
- **构建优化**:代码分割、Tree Shaking
|
||||
- **资源优化**:压缩、合并、CDN加速
|
||||
- **渲染优化**:虚拟滚动、懒加载
|
||||
- **缓存优化**:浏览器缓存、Service Worker
|
||||
|
||||
### 6.2 后端性能优化
|
||||
|
||||
#### 6.2.1 应用层优化
|
||||
- **代码优化**:算法优化、异步处理
|
||||
- **连接池**:数据库连接池管理
|
||||
- **缓存策略**:多级缓存、缓存预热
|
||||
- **异步处理**:消息队列异步处理
|
||||
|
||||
#### 6.2.2 数据库优化
|
||||
- **索引优化**:合理创建和使用索引
|
||||
- **查询优化**:SQL语句优化
|
||||
- **读写分离**:主从分离,读写分离
|
||||
- **分库分表**:水平分割,垂直分割
|
||||
|
||||
### 6.3 系统性能目标
|
||||
|
||||
| 指标 | 目标值 | 说明 |
|
||||
|------|--------|------|
|
||||
| 响应时间 | < 200ms | API接口平均响应时间 |
|
||||
| 并发用户 | 10,000+ | 同时在线用户数 |
|
||||
| 可用性 | 99.9% | 系统可用性 |
|
||||
| 错误率 | < 0.1% | 系统错误率 |
|
||||
| 数据库QPS | 5,000+ | 数据库查询性能 |
|
||||
|
||||
## 7. 扩展性设计
|
||||
|
||||
### 7.1 水平扩展
|
||||
|
||||
#### 7.1.1 应用层扩展
|
||||
- **无状态设计**:应用服务无状态,支持水平扩展
|
||||
- **负载均衡**:多实例负载均衡
|
||||
- **自动扩缩容**:基于负载自动扩缩容
|
||||
- **服务发现**:动态服务发现和注册
|
||||
|
||||
#### 7.1.2 数据层扩展
|
||||
- **读写分离**:读库水平扩展
|
||||
- **分库分表**:数据水平分割
|
||||
- **缓存集群**:Redis集群扩展
|
||||
- **搜索集群**:Elasticsearch集群扩展
|
||||
|
||||
### 7.2 垂直扩展
|
||||
|
||||
#### 7.2.1 功能扩展
|
||||
- **插件化架构**:支持功能插件化扩展
|
||||
- **模块化设计**:新功能模块化开发
|
||||
- **API版本管理**:支持API版本演进
|
||||
- **配置化**:业务规则配置化
|
||||
|
||||
#### 7.2.2 技术栈扩展
|
||||
- **多语言支持**:支持多种编程语言
|
||||
- **多数据库支持**:支持多种数据库
|
||||
- **云原生**:支持云原生技术栈
|
||||
- **微服务演进**:支持微服务架构演进
|
||||
|
||||
## 8. 风险评估与应对
|
||||
|
||||
### 8.1 技术风险
|
||||
|
||||
#### 8.1.1 性能风险
|
||||
- **风险描述**:高并发场景下系统性能瓶颈
|
||||
- **影响程度**:高
|
||||
- **应对策略**:
|
||||
- 性能测试和优化
|
||||
- 缓存策略优化
|
||||
- 数据库优化
|
||||
- 水平扩展
|
||||
|
||||
#### 8.1.2 可用性风险
|
||||
- **风险描述**:系统故障导致服务不可用
|
||||
- **影响程度**:高
|
||||
- **应对策略**:
|
||||
- 高可用架构设计
|
||||
- 故障自动恢复
|
||||
- 监控告警系统
|
||||
- 灾备方案
|
||||
|
||||
#### 8.1.3 数据安全风险
|
||||
- **风险描述**:数据泄露或丢失
|
||||
- **影响程度**:高
|
||||
- **应对策略**:
|
||||
- 数据加密
|
||||
- 访问控制
|
||||
- 数据备份
|
||||
- 安全审计
|
||||
|
||||
### 8.2 业务风险
|
||||
|
||||
#### 8.2.1 用户增长风险
|
||||
- **风险描述**:用户快速增长超出系统承载能力
|
||||
- **影响程度**:中
|
||||
- **应对策略**:
|
||||
- 弹性扩展架构
|
||||
- 性能监控
|
||||
- 容量规划
|
||||
- 分阶段发布
|
||||
|
||||
#### 8.2.2 第三方依赖风险
|
||||
- **风险描述**:第三方服务故障影响系统功能
|
||||
- **影响程度**:中
|
||||
- **应对策略**:
|
||||
- 多供应商策略
|
||||
- 服务降级
|
||||
- 本地缓存
|
||||
- 监控告警
|
||||
|
||||
### 8.3 运维风险
|
||||
|
||||
#### 8.3.1 部署风险
|
||||
- **风险描述**:部署过程中出现故障
|
||||
- **影响程度**:中
|
||||
- **应对策略**:
|
||||
- 蓝绿部署
|
||||
- 灰度发布
|
||||
- 自动化部署
|
||||
- 回滚机制
|
||||
|
||||
#### 8.3.2 人员风险
|
||||
- **风险描述**:关键人员离职影响项目进度
|
||||
- **影响程度**:中
|
||||
- **应对策略**:
|
||||
- 文档完善
|
||||
- 知识分享
|
||||
- 团队培训
|
||||
- 备份人员
|
||||
|
||||
## 9. 总结
|
||||
|
||||
### 9.1 架构优势
|
||||
- **高可用性**:多层次的高可用保障
|
||||
- **高性能**:多级缓存和性能优化
|
||||
- **可扩展性**:支持业务快速发展
|
||||
- **安全性**:全方位的安全防护
|
||||
- **可维护性**:清晰的架构分层和模块化设计
|
||||
|
||||
### 9.2 技术创新点
|
||||
- **微服务架构**:现代化的微服务架构设计
|
||||
- **容器化部署**:Docker + Kubernetes容器化部署
|
||||
- **多端统一**:统一的后端服务支持多端应用
|
||||
- **智能推荐**:基于用户行为的智能推荐算法
|
||||
- **实时通信**:WebSocket实时消息推送
|
||||
|
||||
### 9.3 后续演进
|
||||
- **云原生**:向云原生架构演进
|
||||
- **服务网格**:引入Service Mesh技术
|
||||
- **AI集成**:集成人工智能技术
|
||||
- **边缘计算**:支持边缘计算场景
|
||||
- **国际化**:支持多语言和多地区部署
|
||||
Reference in New Issue
Block a user