Skip to content

部署架构初步方案

文档编号: SYS-TR-AR-005
版本: 1.0
日期: 2026-03-10
编制: 系统架构师
审核: 审核通过 ✅


1. 部署目标

  • 高可用:单点故障不影响整体服务
  • 可扩展:支持水平扩展应对业务增长
  • 易运维:简化部署流程,降低运维成本
  • 安全性:网络隔离,安全访问控制

2. 部署架构图

┌─────────────────────────────────────────────────────────────────┐
│                         外部网络                                 │
│                    互联网用户 / VPN用户                          │
└─────────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────┐
│                         接入层                                   │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │                   CDN(静态资源加速)                     │   │
│  └─────────────────────────────────────────────────────────┘   │
│                              │                                  │
│                              ▼                                  │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │              负载均衡(Nginx / SLB)                     │   │
│  │              SSL终止 / 流量分发 / 健康检查                │   │
│  └─────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────┐
│                         应用层                                   │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐             │
│  │  前端服务器1 │  │  前端服务器2 │  │  前端服务器N │             │
│  │  (Vue+Nginx)│  │  (Vue+Nginx)│  │  (Vue+Nginx)│             │
│  └──────┬──────┘  └──────┬──────┘  └──────┬──────┘             │
│         │                │                │                    │
│         └────────────────┼────────────────┘                    │
│                          │                                     │
│                          ▼                                     │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐             │
│  │  后端服务器1 │  │  后端服务器2 │  │  后端服务器N │             │
│  │(SpringBoot) │  │(SpringBoot) │  │(SpringBoot) │             │
│  └──────┬──────┘  └──────┬──────┘  └──────┬──────┘             │
└─────────┼────────────────┼────────────────┼────────────────────┘
          │                │                │
          └────────────────┼────────────────┘

┌─────────────────────────────────────────────────────────────────┐
│                         数据层                                   │
│  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐  │
│  │   MySQL主库      │  │   MySQL从库      │  │  Redis Cluster  │  │
│  │   (写操作)       │  │   (读操作)       │  │  (缓存/会话)    │  │
│  └─────────────────┘  └─────────────────┘  └─────────────────┘  │
└─────────────────────────────────────────────────────────────────┘

3. 环境规划

3.1 环境划分

环境用途配置数据
开发环境开发联调单机部署模拟数据
测试环境功能测试双机部署测试数据
预发布环境上线前验证同生产生产脱敏数据
生产环境正式运行集群部署真实数据

3.2 服务器规划(生产环境)

角色数量配置说明
负载均衡24C8GNginx主备
前端应用24C8GVue静态资源
后端应用28C16GSpring Boot服务
MySQL28C32G主从架构
Redis34C16G3主3从集群
监控14C8GPrometheus+Grafana

4. 容器化部署

4.1 Docker镜像

dockerfile
# 前端镜像
FROM nginx:alpine
COPY dist/ /usr/share/nginx/html/
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80

# 后端镜像
FROM eclipse-temurin:17-jre-alpine
COPY target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar"]

4.2 Docker Compose编排

yaml
version: '3.8'

services:
  # 前端服务
  frontend:
    image: system-platform/frontend:latest
    ports:
      - "80:80"
    depends_on:
      - backend
    deploy:
      replicas: 2

  # 后端服务
  backend:
    image: system-platform/backend:latest
    ports:
      - "8080:8080"
    environment:
      - SPRING_PROFILES_ACTIVE=prod
      - MYSQL_HOST=mysql
      - REDIS_HOST=redis
    depends_on:
      - mysql
      - redis
    deploy:
      replicas: 2

  # MySQL
  mysql:
    image: mysql:8.0
    environment:
      - MYSQL_ROOT_PASSWORD=xxxx
      - MYSQL_DATABASE=system_platform
    volumes:
      - mysql_data:/var/lib/mysql
    ports:
      - "3306:3306"

  # Redis
  redis:
    image: redis:7-alpine
    command: redis-server --appendonly yes
    volumes:
      - redis_data:/data
    ports:
      - "6379:6379"

volumes:
  mysql_data:
  redis_data:

5. 高可用设计

5.1 应用层高可用

┌─────────────────────────────────────────┐
│              负载均衡(Nginx)            │
│              健康检查 + 故障转移          │
└─────────────────────────────────────────┘
           │                │
           ▼                ▼
┌─────────────────┐  ┌─────────────────┐
│  应用实例1       │  │  应用实例2       │
│  (健康)          │  │  (健康)          │
└─────────────────┘  └─────────────────┘

故障场景:
┌─────────────────────────────────────────┐
│              负载均衡(Nginx)            │
│              健康检查 + 故障转移          │
└─────────────────────────────────────────┘
           │                │
           ▼                X
┌─────────────────┐  ┌─────────────────┐
│  应用实例1       │  │  应用实例2       │
│  (健康)          │  │  (故障)          │
│  接收全部流量     │  │  自动剔除        │
└─────────────────┘  └─────────────────┘

5.2 数据库高可用

MySQL主从架构:

┌─────────────┐         ┌─────────────┐
│  MySQL主库   │<───────>│  MySQL从库   │
│   (写)       │  同步    │   (读)       │
└──────┬──────┘         └──────┬──────┘
       │                       │
       │<────── 故障切换 ──────>│
       │      (Keepalived)     │

Redis Cluster:

┌─────────┐     ┌─────────┐     ┌─────────┐
│ Master1 │<───>│ Master2 │<───>│ Master3 │
│  (slot) │     │  (slot) │     │  (slot) │
└────┬────┘     └────┬────┘     └────┬────┘
     │               │               │
     ▼               ▼               ▼
┌─────────┐     ┌─────────┐     ┌─────────┐
│ Slave1  │     │ Slave2  │     │ Slave3  │
└─────────┘     └─────────┘     └─────────┘

6. 监控告警

6.1 监控指标

层级监控项工具
基础设施CPU、内存、磁盘、网络Prometheus + Node Exporter
应用服务QPS、响应时间、错误率Prometheus + Micrometer
数据库连接数、慢查询、主从延迟Prometheus + MySQL Exporter
缓存命中率、内存使用、连接数Prometheus + Redis Exporter
业务登录次数、操作频率自定义指标

6.2 告警规则

告警项阈值级别
CPU使用率>80%警告
CPU使用率>90%严重
内存使用率>80%警告
磁盘使用率>85%警告
应用响应时间>500ms警告
应用错误率>1%严重
MySQL主从延迟>1s警告
Redis命中率<90%警告

7. 备份恢复

7.1 备份策略

数据类型备份方式频率保留期
MySQL全量mysqldump每日30天
MySQL增量binlog实时7天
RedisRDB + AOF每小时7天
配置文件文件备份变更时永久

7.2 恢复流程

1. 确认故障范围

2. 停止受影响服务

3. 恢复数据(全量+增量)

4. 验证数据完整性

5. 启动服务

6. 验证服务正常

7. 恢复业务流量

8. 安全部署

8.1 网络安全

互联网 ──> 防火墙 ──> DMZ区(Nginx)──> 内网(应用+数据)

安全组规则:
- 外网只允许访问 80/443
- 内网只允许内网IP访问
- 数据库只允许应用服务器访问

8.2 访问控制

访问方式控制措施
服务器登录SSH密钥 + 堡垒机
数据库访问白名单 + 独立账号
管理后台VPN + 双因素认证
API访问Token + 限流

9. 下一步行动

  1. [ ] 编写Dockerfile和Docker Compose配置
  2. [ ] 搭建Harbor镜像仓库
  3. [ ] 配置CI/CD流水线
  4. [ ] 部署Prometheus监控
  5. [ ] 配置告警通知
  6. [ ] 制定灾备方案

文档版本历史

版本日期修改内容修改人
1.02026-03-10初始版本系统架构师

Released under the MIT License.