6.8 KiB
6.8 KiB
爱鉴花小程序 - 系统架构文档
版本历史
| 版本 | 日期 | 作者 | 描述 |
|---|---|---|---|
| v1.0 | 2024-03-15 | 系统架构师 | 初始版本 |
1. 架构设计原则
1.1 设计原则
- 微服务架构:模块化设计,服务解耦
- 高可用性:99.9%可用性目标
- 可扩展性:支持水平扩展
- 安全性:端到端数据加密
- 性能优化:响应时间<2秒
1.2 技术选型理由
| 技术栈 | 选型理由 | 替代方案 |
|---|---|---|
| Node.js + Express | 高性能I/O处理,生态丰富 | Python Django, Java Spring Boot |
| MySQL 8.0+ | 事务支持完善,生态成熟 | PostgreSQL, MongoDB |
| Redis Cluster | 高性能缓存,分布式支持 | Memcached, Hazelcast |
| Vue.js 3 + Ant Design | 组件化开发,企业级UI | React + AntD, Angular + Material |
| uni-app | 跨端开发,成本效益高 | Taro, React Native |
2. 系统架构图
graph TB
subgraph "客户端层"
A[微信小程序] --> B[后台管理系统]
A --> C[官网系统]
end
subgraph "接入层"
D[API网关 - Nginx] --> E[负载均衡]
end
subgraph "应用服务层"
F[用户服务] --> G[认证服务]
H[商品服务] --> I[订单服务]
J[识别服务] --> K[支付服务]
L[推广服务] --> M[统计服务]
end
subgraph "数据层"
N[MySQL 8.0+] --> O[主从复制]
P[Redis Cluster] --> Q[分布式缓存]
R[腾讯云COS] --> S[文件存储]
end
E --> F
E --> H
E --> J
E --> L
F --> N
H --> N
J --> N
L --> N
F --> P
H --> P
J --> P
3. 微服务架构设计
3.1 服务划分
| 服务名称 | 职责 | 技术栈 | 部署方式 |
|---|---|---|---|
| 用户服务 | 用户管理、权限控制 | Node.js + Express | 独立部署 |
| 商品服务 | 商品管理、库存管理 | Node.js + Express | 独立部署 |
| 订单服务 | 订单处理、支付集成 | Node.js + Express | 独立部署 |
| 识别服务 | 植物识别AI集成 | Node.js + TensorFlow.js | 独立部署 |
| 推广服务 | 推广奖励计算 | Node.js + Express | 独立部署 |
| 网关服务 | API路由、认证 | Nginx + Lua | 独立部署 |
3.2 服务通信机制
- 同步调用:RESTful API(HTTP/HTTPS)
- 异步消息:Redis Pub/Sub(预留RabbitMQ集成)
- 服务发现:Consul/Nacos(预留)
- 配置中心:Apollo(预留)
4. 数据库设计
4.1 数据库架构
erDiagram
USERS ||--o{ ORDERS : "创建"
USERS ||--o{ IDENTIFICATIONS : "发起"
USERS ||--o{ PROMOTIONS : "参与"
PRODUCTS ||--o{ ORDER_ITEMS : "包含"
CATEGORIES ||--o{ PRODUCTS : "分类"
ORDERS ||--o{ ORDER_ITEMS : "包含"
ORDERS ||--o{ PAYMENTS : "关联"
USERS {
bigint id PK
varchar username
varchar password_hash
varchar phone
varchar email
enum user_type
datetime created_at
datetime updated_at
}
PRODUCTS {
bigint id PK
varchar name
text description
decimal price
int stock
bigint category_id FK
varchar image_url
}
4.2 关键表结构
用户表 (users)
CREATE TABLE users (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password_hash VARCHAR(255) NOT NULL,
phone VARCHAR(20) NOT NULL UNIQUE,
email VARCHAR(100),
user_type ENUM('consumer', 'gardener', 'merchant', 'creator') DEFAULT 'consumer',
avatar_url VARCHAR(255),
real_name VARCHAR(50),
promotion_balance DECIMAL(10,2) DEFAULT 0.00,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_phone (phone),
INDEX idx_email (email)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
推广记录表 (promotion_records)
CREATE TABLE promotion_records (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
promoter_id BIGINT NOT NULL,
referred_id BIGINT NOT NULL,
reward_amount DECIMAL(10,2) DEFAULT 0.00,
reward_type ENUM('registration', 'first_order') NOT NULL,
status ENUM('pending', 'completed', 'rejected') DEFAULT 'pending',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
completed_at TIMESTAMP NULL,
FOREIGN KEY (promoter_id) REFERENCES users(id),
FOREIGN KEY (referred_id) REFERENCES users(id),
INDEX idx_promoter (promoter_id),
INDEX idx_referred (referred_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
5. 部署架构
5.1 生产环境部署
graph LR
subgraph "负载均衡层"
A[阿里云SLB] --> B[Nginx集群]
end
subgraph "应用服务器集群"
C[用户服务 2台] --> D[MySQL主从]
E[商品服务 2台] --> D
F[订单服务 2台] --> D
G[识别服务 2台] --> D
end
subgraph "缓存层"
H[Redis哨兵模式] --> I[3节点集群]
end
subgraph "存储层"
J[腾讯云COS] --> K[CDN加速]
L[MySQL主库] --> M[MySQL从库]
end
B --> C
B --> E
B --> F
B --> G
C --> H
E --> H
F --> H
G --> H
5.2 监控告警体系
- 应用监控:Prometheus + Grafana
- 日志收集:ELK Stack
- 链路追踪:Jaeger
- 告警通知:钉钉/邮件/SMS
6. 安全架构
6.1 安全防护措施
- 网络层:VPC隔离,安全组规则
- 应用层:JWT认证,RBAC权限控制
- 数据层:字段级加密,SQL注入防护
- 传输层:HTTPS加密,TLS 1.3
6.2 敏感数据处理
- 密码:bcrypt加密存储
- 手机号:AES加密存储
- 支付信息:PCI DSS合规处理
- 日志数据:脱敏处理
7. 性能优化策略
7.1 数据库优化
- 索引优化:覆盖索引,联合索引
- 查询优化:避免SELECT *,分页查询
- 连接池:最大200连接,超时30秒
7.2 缓存策略
- Redis缓存:热点数据缓存,TTL设置
- 本地缓存:Node.js内存缓存
- CDN加速:静态资源加速
7.3 异步处理
- 耗时操作异步化
- 消息队列削峰填谷
- 批量处理优化
8. 容灾备份方案
8.1 数据备份
- 每日全量备份:mysqldump + binlog
- 实时增量备份:MySQL主从复制
- 异地备份:OSS冷备存储
8.2 故障恢复
- 数据库故障:主从切换,30分钟恢复
- 服务故障:健康检查,自动重启
- 网络故障:多可用区部署
9. 扩展性设计
9.1 水平扩展
- 无状态服务,支持弹性伸缩
- 数据库分库分表方案
- 缓存集群扩展
9.2 功能扩展
- 插件化架构设计
- API版本管理
- 灰度发布机制