# 爱鉴花小程序 - 系统架构文档 ## 版本历史 | 版本 | 日期 | 作者 | 描述 | |------|------|------|------| | 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. 系统架构图 ```mermaid 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 数据库架构 ```mermaid 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)** ```sql 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)** ```sql 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 生产环境部署 ```mermaid 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版本管理 - 灰度发布机制