# 活牛采购智能数字化系统 - 系统架构设计 ## 版本历史 | 版本 | 日期 | 作者 | 变更说明 | |------|------|------|----------| | v1.0 | 2024-05-15 | 系统架构师 | 基于现有项目架构整理 | | v2.0 | 2024-12-20 | 系统架构师 | 重构架构文档,完善技术细节 | ## 1. 整体架构概览 ### 1.1 系统架构图 ```mermaid graph TB subgraph "用户层" A[采购人] --> B[小程序矩阵] C[供应商] --> B D[司机] --> B E[管理员] --> F[管理后台] G[访客] --> H[企业官网] end subgraph "应用层" B[小程序矩阵
Uni-app] --> I[API网关] F[管理后台
Vue 3] --> I H[企业官网
HTML5] --> J[静态资源] end subgraph "服务层" I[API网关
Nginx] --> K[认证服务] I --> L[业务服务集群] K[认证服务
JWT] --> L L[业务服务
Express.js] --> M[数据访问层] end subgraph "数据层" M[数据访问层
Sequelize ORM] --> N[MySQL主库] M --> O[MySQL从库] M --> P[Redis缓存] M --> Q[文件存储
MinIO/OSS] end subgraph "基础设施层" R[容器化部署
Docker] --> S[负载均衡
Nginx] S --> T[应用服务器] T --> U[数据库服务器] V[监控告警
Prometheus] --> W[日志收集
ELK] end ``` ### 1.2 架构分层说明 | 层级 | 职责 | 技术栈 | 说明 | |------|------|--------|------| | **用户层** | 用户交互界面 | 浏览器、微信小程序 | 提供多端用户访问入口 | | **应用层** | 前端应用 | Vue 3、Uni-app、HTML5 | 负责用户界面展示和交互 | | **服务层** | 业务逻辑处理 | Express.js、JWT | 处理业务逻辑和数据处理 | | **数据层** | 数据存储管理 | MySQL、Redis、MinIO | 负责数据持久化和缓存 | | **基础设施层** | 运行环境支撑 | Docker、Nginx、监控 | 提供系统运行基础环境 | ## 2. 技术栈选型 ### 2.1 前端技术栈 | 技术/框架 | 版本 | 用途 | 选型理由 | |-----------|------|------|----------| | **Vue 3** | 3.4+ | 管理后台框架 | 组合式API、更好的TypeScript支持、性能优化 | | **TypeScript** | 5.0+ | 类型系统 | 静态类型检查、提高代码质量和可维护性 | | **Element Plus** | 2.4+ | UI组件库 | Vue 3生态、组件丰富、文档完善 | | **Vite** | 5.0+ | 构建工具 | 极速开发体验、优化的构建性能 | | **Pinia** | 2.1+ | 状态管理 | Vue 3官方推荐、API简洁、性能优异 | | **Vue Router** | 4.2+ | 路由管理 | Vue 3官方路由、支持组合式API | | **Uni-app** | 3.8+ | 小程序框架 | 一套代码多端运行、降低开发维护成本 | ### 2.2 后端技术栈 | 技术/框架 | 版本 | 用途 | 选型理由 | |-----------|------|------|----------| | **Node.js** | 18+ | 运行环境 | 高性能、生态丰富、JavaScript全栈 | | **Express.js** | 4.18+ | Web框架 | 轻量灵活、中间件丰富、学习成本低 | | **Sequelize** | 6.35+ | ORM框架 | 支持多种数据库、简化数据库操作 | | **JWT** | 9.0+ | 身份认证 | 无状态认证、跨域支持 | | **Joi** | 17.11+ | 数据验证 | 强大的数据校验能力 | | **Multer** | 1.4+ | 文件上传 | Express文件上传中间件 | | **Socket.io** | 4.7+ | 实时通信 | WebSocket封装、实时数据推送 | ### 2.3 数据存储技术栈 | 技术 | 版本 | 用途 | 选型理由 | |------|------|------|----------| | **MySQL** | 8.0+ | 关系型数据库 | 成熟稳定、ACID特性、适合复杂业务关系 | | **Redis** | 7.0+ | 缓存数据库 | 高性能缓存、支持多种数据结构 | | **MinIO** | Latest | 对象存储 | S3兼容、私有化部署、适合文件存储 | ### 2.4 基础设施技术栈 | 技术 | 版本 | 用途 | 选型理由 | |------|------|------|----------| | **Docker** | 24.0+ | 容器化 | 环境一致性、部署便捷 | | **Nginx** | 1.24+ | 反向代理 | 高性能、负载均衡、静态资源服务 | | **PM2** | 5.3+ | 进程管理 | Node.js进程管理、自动重启 | | **Prometheus** | 2.47+ | 监控系统 | 时序数据库、强大的查询语言 | | **Grafana** | 10.2+ | 监控面板 | 可视化监控、丰富的图表 | ## 3. 系统模块设计 ### 3.1 核心业务模块 ```mermaid graph LR A[用户管理模块] --> B[订单管理模块] B --> C[供应商管理模块] C --> D[运输管理模块] D --> E[质量管理模块] E --> F[财务管理模块] F --> G[通知管理模块] H[权限管理] --> A I[文件管理] --> C I --> D I --> E J[日志管理] --> B J --> D J --> F ``` #### 3.1.1 用户管理模块 (User Management) **职责**: - 用户注册、登录、注销 - 用户信息管理和维护 - 角色权限分配和控制 - 用户状态管理 **核心功能**: ```javascript /** * 用户管理服务 */ class UserService { // 用户注册 async register(userData) { } // 用户登录 async login(phone, password) { } // 获取用户信息 async getUserInfo(userId) { } // 更新用户信息 async updateUser(userId, updateData) { } // 用户权限验证 async checkPermission(userId, permission) { } } ``` **数据模型**: - User(用户基本信息) - Role(角色定义) - Permission(权限定义) - UserRole(用户角色关联) #### 3.1.2 订单管理模块 (Order Management) **职责**: - 订单创建、查询、更新 - 订单状态流转管理 - 订单审核和确认 - 订单统计和分析 **核心功能**: ```javascript /** * 订单管理服务 */ class OrderService { // 创建订单 async createOrder(orderData) { } // 查询订单列表 async getOrderList(filters, pagination) { } // 获取订单详情 async getOrderDetail(orderId) { } // 更新订单状态 async updateOrderStatus(orderId, status) { } // 订单统计 async getOrderStatistics(dateRange) { } } ``` **状态流转**: ``` 待确认 → 已确认 → 准备中 → 运输中 → 已到达 → 已验收 → 已完成 ``` #### 3.1.3 运输管理模块 (Transport Management) **职责**: - 运输任务分配和管理 - 实时位置跟踪 - 运输状态监控 - 异常情况处理 **核心功能**: ```javascript /** * 运输管理服务 */ class TransportService { // 创建运输任务 async createTransportTask(taskData) { } // 更新位置信息 async updateLocation(taskId, locationData) { } // 获取运输轨迹 async getTransportTrack(taskId) { } // 异常情况上报 async reportException(taskId, exceptionData) { } } ``` ### 3.2 前端模块结构 #### 3.2.1 管理后台模块结构 ``` admin-system/src/ ├── components/ # 公共组件 │ ├── Layout/ # 布局组件 │ ├── Charts/ # 图表组件 │ ├── Forms/ # 表单组件 │ └── Tables/ # 表格组件 ├── views/ # 页面组件 │ ├── dashboard/ # 数据驾驶舱 │ ├── order/ # 订单管理 │ ├── user/ # 用户管理 │ ├── transport/ # 运输管理 │ ├── finance/ # 财务管理 │ └── system/ # 系统管理 ├── stores/ # 状态管理 │ ├── user.ts # 用户状态 │ ├── order.ts # 订单状态 │ └── app.ts # 应用状态 ├── api/ # API接口 │ ├── user.ts # 用户接口 │ ├── order.ts # 订单接口 │ └── transport.ts # 运输接口 ├── utils/ # 工具函数 │ ├── request.ts # HTTP请求封装 │ ├── auth.ts # 认证工具 │ └── common.ts # 通用工具 └── types/ # TypeScript类型定义 ├── user.ts # 用户类型 ├── order.ts # 订单类型 └── api.ts # API类型 ``` #### 3.2.2 小程序模块结构 ``` mini_program/ ├── client-mp/ # 采购人小程序 │ ├── pages/ │ │ ├── index/ # 首页 │ │ ├── order/ # 订单管理 │ │ ├── transport/ # 运输跟踪 │ │ └── profile/ # 个人中心 │ ├── components/ # 组件 │ ├── utils/ # 工具函数 │ └── api/ # 接口调用 ├── supplier-mp/ # 供应商小程序 ├── driver-mp/ # 司机小程序 └── staff-mp/ # 内部员工小程序 ``` ## 4. 数据库设计 ### 4.1 数据库架构 ```mermaid graph TB A[应用服务] --> B[读写分离中间件] B --> C[MySQL主库
写操作] B --> D[MySQL从库1
读操作] B --> E[MySQL从库2
读操作] A --> F[Redis集群
缓存层] F --> G[Redis主节点] F --> H[Redis从节点] A --> I[文件存储
MinIO集群] ``` ### 4.2 核心数据表设计 #### 4.2.1 用户相关表 ```sql -- 用户表 CREATE TABLE users ( id BIGINT PRIMARY KEY AUTO_INCREMENT, phone VARCHAR(20) UNIQUE NOT NULL COMMENT '手机号', password VARCHAR(255) NOT NULL COMMENT '密码', name VARCHAR(100) NOT NULL COMMENT '姓名', role ENUM('client', 'supplier', 'driver', 'trader', 'admin') NOT NULL COMMENT '角色', status ENUM('active', 'inactive', 'banned') DEFAULT 'active' COMMENT '状态', avatar VARCHAR(500) COMMENT '头像URL', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_phone (phone), INDEX idx_role (role), INDEX idx_status (status) ) COMMENT '用户表'; -- 用户详情表 CREATE TABLE user_profiles ( id BIGINT PRIMARY KEY AUTO_INCREMENT, user_id BIGINT NOT NULL, company_name VARCHAR(200) COMMENT '公司名称', business_license VARCHAR(500) COMMENT '营业执照', contact_address TEXT COMMENT '联系地址', emergency_contact VARCHAR(100) COMMENT '紧急联系人', emergency_phone VARCHAR(20) COMMENT '紧急联系电话', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE, INDEX idx_user_id (user_id) ) COMMENT '用户详情表'; ``` #### 4.2.2 订单相关表 ```sql -- 订单表 CREATE TABLE orders ( id BIGINT PRIMARY KEY AUTO_INCREMENT, order_no VARCHAR(50) UNIQUE NOT NULL COMMENT '订单号', client_id BIGINT NOT NULL COMMENT '采购人ID', trader_id BIGINT COMMENT '贸易商ID', supplier_id BIGINT COMMENT '供应商ID', cattle_type VARCHAR(50) NOT NULL COMMENT '牛只品种', quantity INT NOT NULL COMMENT '数量', weight_range VARCHAR(50) COMMENT '重量范围', unit_price DECIMAL(10,2) NOT NULL COMMENT '单价', total_amount DECIMAL(12,2) NOT NULL COMMENT '总金额', delivery_address TEXT NOT NULL COMMENT '交货地址', delivery_time DATETIME COMMENT '要求交货时间', status ENUM('pending', 'confirmed', 'preparing', 'transporting', 'arrived', 'accepted', 'completed', 'cancelled') DEFAULT 'pending', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (client_id) REFERENCES users(id), FOREIGN KEY (trader_id) REFERENCES users(id), FOREIGN KEY (supplier_id) REFERENCES users(id), INDEX idx_order_no (order_no), INDEX idx_client_id (client_id), INDEX idx_status (status), INDEX idx_created_at (created_at) ) COMMENT '订单表'; -- 订单状态变更记录表 CREATE TABLE order_status_logs ( id BIGINT PRIMARY KEY AUTO_INCREMENT, order_id BIGINT NOT NULL, from_status VARCHAR(50) COMMENT '原状态', to_status VARCHAR(50) NOT NULL COMMENT '新状态', operator_id BIGINT COMMENT '操作人ID', remark TEXT COMMENT '备注', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (order_id) REFERENCES orders(id) ON DELETE CASCADE, FOREIGN KEY (operator_id) REFERENCES users(id), INDEX idx_order_id (order_id), INDEX idx_created_at (created_at) ) COMMENT '订单状态变更记录表'; ``` #### 4.2.3 运输相关表 ```sql -- 运输任务表 CREATE TABLE transport_tasks ( id BIGINT PRIMARY KEY AUTO_INCREMENT, task_no VARCHAR(50) UNIQUE NOT NULL COMMENT '任务号', order_id BIGINT NOT NULL COMMENT '订单ID', driver_id BIGINT NOT NULL COMMENT '司机ID', vehicle_no VARCHAR(20) NOT NULL COMMENT '车牌号', start_location VARCHAR(200) COMMENT '起始地点', end_location VARCHAR(200) COMMENT '目的地点', start_time DATETIME COMMENT '开始时间', end_time DATETIME COMMENT '结束时间', status ENUM('assigned', 'started', 'transporting', 'arrived', 'completed') DEFAULT 'assigned', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (order_id) REFERENCES orders(id), FOREIGN KEY (driver_id) REFERENCES users(id), INDEX idx_task_no (task_no), INDEX idx_order_id (order_id), INDEX idx_driver_id (driver_id), INDEX idx_status (status) ) COMMENT '运输任务表'; -- 位置跟踪表 CREATE TABLE location_tracks ( id BIGINT PRIMARY KEY AUTO_INCREMENT, task_id BIGINT NOT NULL COMMENT '任务ID', latitude DECIMAL(10,6) NOT NULL COMMENT '纬度', longitude DECIMAL(10,6) NOT NULL COMMENT '经度', address VARCHAR(500) COMMENT '地址', speed DECIMAL(5,2) COMMENT '速度', direction DECIMAL(5,2) COMMENT '方向', recorded_at TIMESTAMP NOT NULL COMMENT '记录时间', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (task_id) REFERENCES transport_tasks(id) ON DELETE CASCADE, INDEX idx_task_id (task_id), INDEX idx_recorded_at (recorded_at) ) COMMENT '位置跟踪表'; ``` ### 4.3 数据库优化策略 #### 4.3.1 索引优化 - **主键索引**:所有表使用自增主键 - **唯一索引**:手机号、订单号等唯一字段 - **复合索引**:常用查询条件组合 - **覆盖索引**:减少回表查询 #### 4.3.2 分区策略 ```sql -- 按时间分区的位置跟踪表 CREATE TABLE location_tracks ( -- 字段定义... ) PARTITION BY RANGE (YEAR(recorded_at)) ( PARTITION p2024 VALUES LESS THAN (2025), PARTITION p2025 VALUES LESS THAN (2026), PARTITION p_future VALUES LESS THAN MAXVALUE ); ``` #### 4.3.3 读写分离 - **主库**:处理所有写操作和实时性要求高的读操作 - **从库**:处理统计查询、报表生成等读操作 - **中间件**:自动路由读写请求 ## 5. API设计规范 ### 5.1 RESTful API设计原则 #### 5.1.1 URL设计规范 ``` GET /api/v1/orders # 获取订单列表 POST /api/v1/orders # 创建订单 GET /api/v1/orders/:id # 获取订单详情 PUT /api/v1/orders/:id # 更新订单 DELETE /api/v1/orders/:id # 删除订单 ``` #### 5.1.2 HTTP状态码规范 | 状态码 | 含义 | 使用场景 | |--------|------|----------| | 200 | OK | 请求成功 | | 201 | Created | 资源创建成功 | | 400 | Bad Request | 请求参数错误 | | 401 | Unauthorized | 未认证 | | 403 | Forbidden | 无权限 | | 404 | Not Found | 资源不存在 | | 500 | Internal Server Error | 服务器内部错误 | #### 5.1.3 响应格式规范 ```json { "code": 200, "message": "success", "data": { // 响应数据 }, "timestamp": "2024-12-20T10:00:00Z" } ``` ### 5.2 核心API接口设计 #### 5.2.1 用户认证接口 ```javascript // 用户登录 POST /api/v1/auth/login { "phone": "13800138000", "password": "password123" } // 响应 { "code": 200, "message": "登录成功", "data": { "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "user": { "id": 1, "name": "张三", "role": "client", "avatar": "https://example.com/avatar.jpg" } } } ``` #### 5.2.2 订单管理接口 ```javascript // 创建订单 POST /api/v1/orders { "cattleType": "西门塔尔", "quantity": 50, "weightRange": "400-500kg", "unitPrice": 28.5, "deliveryAddress": "北京市朝阳区...", "deliveryTime": "2024-12-25T10:00:00Z" } // 获取订单列表 GET /api/v1/orders?page=1&limit=20&status=pending // 响应 { "code": 200, "message": "success", "data": { "list": [...], "total": 100, "page": 1, "limit": 20 } } ``` ## 6. 安全架构设计 ### 6.1 认证与授权 #### 6.1.1 JWT认证机制 ```javascript /** * JWT Token结构 */ { "header": { "alg": "HS256", "typ": "JWT" }, "payload": { "userId": 1, "role": "client", "permissions": ["order:read", "order:create"], "exp": 1640995200, "iat": 1640908800 } } ``` #### 6.1.2 权限控制模型 ```javascript /** * RBAC权限控制 */ const permissions = { 'client': ['order:create', 'order:read', 'transport:read'], 'supplier': ['order:read', 'order:update', 'cattle:manage'], 'driver': ['transport:read', 'transport:update', 'location:report'], 'admin': ['*'] // 所有权限 }; ``` ### 6.2 数据安全 #### 6.2.1 数据加密 - **传输加密**:HTTPS/TLS 1.3 - **存储加密**:敏感数据AES-256加密 - **密码加密**:bcrypt哈希算法 #### 6.2.2 输入验证 ```javascript /** * 数据验证中间件 */ const orderValidation = Joi.object({ cattleType: Joi.string().required(), quantity: Joi.number().integer().min(1).max(1000).required(), unitPrice: Joi.number().positive().precision(2).required(), deliveryAddress: Joi.string().min(10).max(500).required() }); ``` ### 6.3 安全防护 #### 6.3.1 防护措施 - **SQL注入防护**:参数化查询、ORM框架 - **XSS防护**:输入过滤、输出编码 - **CSRF防护**:CSRF Token验证 - **请求限流**:基于IP和用户的限流策略 #### 6.3.2 监控告警 ```javascript /** * 安全事件监控 */ const securityEvents = { 'login_failure': '登录失败次数过多', 'permission_denied': '权限访问被拒绝', 'sql_injection': 'SQL注入攻击尝试', 'unusual_activity': '异常活动检测' }; ``` ## 7. 性能优化策略 ### 7.1 前端性能优化 #### 7.1.1 代码分割与懒加载 ```javascript // 路由懒加载 const routes = [ { path: '/order', component: () => import('@/views/order/OrderList.vue') } ]; // 组件懒加载 const LazyComponent = defineAsyncComponent(() => import('@/components/HeavyComponent.vue') ); ``` #### 7.1.2 资源优化 - **图片优化**:WebP格式、响应式图片 - **代码压缩**:Gzip/Brotli压缩 - **CDN加速**:静态资源CDN分发 - **缓存策略**:浏览器缓存、Service Worker ### 7.2 后端性能优化 #### 7.2.1 数据库优化 ```javascript /** * 查询优化示例 */ // 使用索引优化查询 const orders = await Order.findAll({ where: { status: 'pending', created_at: { [Op.gte]: new Date('2024-01-01') } }, include: [{ model: User, attributes: ['id', 'name'] // 只查询需要的字段 }], limit: 20, offset: (page - 1) * 20 }); ``` #### 7.2.2 缓存策略 ```javascript /** * Redis缓存策略 */ class CacheService { // 用户信息缓存(30分钟) async getUserInfo(userId) { const cacheKey = `user:${userId}`; let user = await redis.get(cacheKey); if (!user) { user = await User.findByPk(userId); await redis.setex(cacheKey, 1800, JSON.stringify(user)); } return JSON.parse(user); } // 订单列表缓存(5分钟) async getOrderList(filters) { const cacheKey = `orders:${JSON.stringify(filters)}`; let orders = await redis.get(cacheKey); if (!orders) { orders = await Order.findAll(filters); await redis.setex(cacheKey, 300, JSON.stringify(orders)); } return JSON.parse(orders); } } ``` ### 7.3 系统性能监控 #### 7.3.1 关键性能指标 | 指标 | 目标值 | 监控方式 | |------|--------|----------| | 页面加载时间 | < 2秒 | 前端性能监控 | | API响应时间 | < 1秒 | APM监控 | | 数据库查询时间 | < 100ms | 慢查询日志 | | 系统可用性 | > 99.9% | 健康检查 | #### 7.3.2 性能监控工具 - **前端监控**:Web Vitals、Performance API - **后端监控**:Prometheus + Grafana - **数据库监控**:MySQL Performance Schema - **日志分析**:ELK Stack ## 8. 部署架构 ### 8.1 容器化部署 #### 8.1.1 Docker容器设计 ```dockerfile # Node.js应用容器 FROM node:18-alpine WORKDIR /app # 复制依赖文件 COPY package*.json ./ RUN npm ci --only=production # 复制应用代码 COPY . . # 暴露端口 EXPOSE 3000 # 启动应用 CMD ["npm", "start"] ``` #### 8.1.2 Docker Compose编排 ```yaml version: '3.8' services: app: build: . ports: - "3000:3000" environment: - NODE_ENV=production - DB_HOST=mysql - REDIS_HOST=redis depends_on: - mysql - redis mysql: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: ${DB_PASSWORD} MYSQL_DATABASE: ${DB_NAME} volumes: - mysql_data:/var/lib/mysql redis: image: redis:7-alpine volumes: - redis_data:/data nginx: image: nginx:alpine ports: - "80:80" - "443:443" volumes: - ./nginx.conf:/etc/nginx/nginx.conf - ./ssl:/etc/nginx/ssl volumes: mysql_data: redis_data: ``` ### 8.2 生产环境架构 ```mermaid graph TB A[负载均衡器
Nginx] --> B[Web服务器1
Node.js] A --> C[Web服务器2
Node.js] A --> D[Web服务器3
Node.js] B --> E[MySQL主库] C --> E D --> E B --> F[MySQL从库1] C --> F D --> F B --> G[Redis集群] C --> G D --> G H[文件存储
MinIO] --> I[对象存储] J[监控系统
Prometheus] --> K[告警系统
AlertManager] K --> L[通知渠道
邮件/短信/钉钉] ``` ### 8.3 CI/CD流水线 #### 8.3.1 自动化部署流程 ```yaml # GitHub Actions配置 name: Deploy to Production on: push: branches: [main] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: '18' - run: npm ci - run: npm test - run: npm run lint build: needs: test runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Build Docker image run: docker build -t niumall:${{ github.sha }} . - name: Push to registry run: docker push niumall:${{ github.sha }} deploy: needs: build runs-on: ubuntu-latest steps: - name: Deploy to production run: | ssh user@server "docker pull niumall:${{ github.sha }}" ssh user@server "docker-compose up -d" ``` ## 9. 扩展性设计 ### 9.1 水平扩展策略 #### 9.1.1 应用层扩展 - **无状态设计**:应用服务器无状态,支持水平扩展 - **负载均衡**:Nginx负载均衡,支持多实例部署 - **会话管理**:Redis集中式会话存储 #### 9.1.2 数据层扩展 - **读写分离**:主从复制,读写分离 - **分库分表**:按业务模块或时间分片 - **缓存集群**:Redis集群,提高缓存容量 ### 9.2 微服务演进路径 #### 9.2.1 服务拆分策略 ``` 单体应用 → 模块化应用 → 微服务架构 Phase 1: 模块化重构 - 按业务领域拆分模块 - 统一数据访问层 - 服务接口标准化 Phase 2: 服务化改造 - 独立部署单元 - 服务间通信机制 - 配置中心建设 Phase 3: 微服务架构 - 服务注册发现 - 分布式链路追踪 - 熔断降级机制 ``` #### 9.2.2 技术栈演进 | 阶段 | 架构模式 | 技术栈 | 复杂度 | |------|---------|--------|--------| | 当前 | 单体应用 | Express.js + MySQL | 低 | | 中期 | 模块化应用 | Express.js + 微服务 | 中 | | 长期 | 微服务架构 | Spring Cloud + K8s | 高 | --- **文档维护**:本文档由架构团队负责维护,重大架构变更时及时更新。 **最后更新时间**:2024年12月20日