资讯动态

企业级微服务系统生产环境部署实践指南

发布时间:2026/11/6 10:21:46 来源:尧图企业网站定制
1. 项目部署概述作为《看潮企业管理软件》开发团队的技术负责人我刚刚完成了这个项目的第22次部署工作。这次部署标志着我们历时3个月的开发周期正式进入生产环境阶段。不同于测试环境的简单发布生产环境部署需要考虑更多实际因素用户并发量、数据安全性、系统稳定性等关键指标。这次部署的版本包含财务模块、人事管理、进销存三大核心功能采用微服务架构设计后端基于Spring Cloud框架前端使用Vue3TypeScript技术栈。整套系统需要部署在客户指定的阿里云ECS集群上同时对接客户现有的Oracle数据库和Active Directory认证系统。2. 部署环境准备2.1 服务器资源配置我们为客户规划的生产环境采用高可用架构应用服务器4台8核16G的ECS实例数据库服务器2台16核64G的RDS实例主从配置缓存服务器2台4核8G的Redis集群文件存储NAS共享存储提示实际资源配置应根据预期用户量调整。我们按照500并发用户的标准进行配置预留了30%的性能余量。2.2 基础软件安装所有服务器需要预先安装以下基础组件JDK 17要求使用Azul Zulu发行版Nginx 1.20作为反向代理和负载均衡Docker 20.10用于容器化部署Node.js 16前端构建依赖安装完成后需要执行以下验证命令# 验证Java环境 java -version # 验证Docker运行状态 systemctl status docker # 检查Nginx配置 nginx -t3. 后端服务部署3.1 微服务打包与配置我们的后端包含6个微服务模块auth-service认证服务user-service用户服务finance-service财务服务hr-service人事服务inventory-service库存服务gateway-service网关服务每个服务需要单独打包为Docker镜像。以finance-service为例Dockerfile配置如下FROM azul/zulu-openjdk:17 WORKDIR /app COPY target/finance-service-1.0.0.jar app.jar EXPOSE 8080 ENTRYPOINT [java,-jar,app.jar]3.2 数据库连接配置每个微服务需要配置独立的数据库连接池。在application-prod.yml中spring: datasource: url: jdbc:oracle:thin://db-prod:1521/ORCLPDB username: ${DB_USER} password: ${DB_PASSWORD} hikari: maximum-pool-size: 20 connection-timeout: 30000注意密码等敏感信息应通过环境变量注入不要直接写在配置文件中。4. 前端部署方案4.1 生产环境构建前端项目使用Vue CLI进行生产环境构建npm run build -- --mode production构建完成后会生成dist目录我们需要将其部署到Nginx上。Nginx配置示例server { listen 80; server_name erp.kanchao.com; location / { root /var/www/erp-web; try_files $uri $uri/ /index.html; } location /api { proxy_pass http://gateway-service:8080; proxy_set_header Host $host; } }4.2 CDN加速配置为提高静态资源加载速度我们配置了阿里云CDN将dist目录下的js/css文件上传到OSS配置CDN域名指向OSS存储桶在vue.config.js中设置publicPath为CDN地址module.exports { publicPath: process.env.NODE_ENV production ? https://cdn.kanchao.com/erp/ : / }5. 部署流程实施5.1 自动化部署脚本我们编写了基于Shell的部署脚本deploy.sh#!/bin/bash # 停止现有容器 docker-compose down # 清理旧镜像 docker image prune -f # 拉取最新镜像 docker-compose pull # 启动服务 docker-compose up -d # 健康检查 sleep 30 curl -s http://localhost:8080/actuator/health | grep UP || exit 15.2 蓝绿部署策略为确保零停机部署我们采用蓝绿部署方案准备两套完全相同的环境蓝环境和绿环境当前生产流量指向蓝环境将新版本部署到绿环境并进行验证通过Nginx切换流量到绿环境蓝环境作为备用或下一轮部署使用6. 监控与日志配置6.1 应用监控我们集成了PrometheusGrafana监控方案每个微服务暴露/metrics端点Prometheus定时采集指标数据Grafana配置业务看板关键监控指标包括JVM内存使用率接口响应时间数据库连接池使用率系统CPU/内存负载6.2 日志收集使用ELK栈进行日志集中管理Filebeat收集各节点日志Logstash进行日志过滤和处理Elasticsearch存储日志数据Kibana提供查询界面日志配置文件示例logback-spring.xmlappender nameELK classnet.logstash.logback.appender.LogstashTcpSocketAppender destinationlogstash:5044/destination encoder classnet.logstash.logback.encoder.LogstashEncoder/ /appender7. 常见问题与解决方案7.1 数据库连接泄露症状应用运行一段时间后出现数据库连接耗尽。解决方案检查代码中是否有未关闭的Connection配置合理的连接超时时间添加Druid监控界面实时查看连接状态7.2 内存泄漏问题症状JVM内存使用率持续升高直至OOM。排查步骤使用jmap生成堆转储文件通过MAT工具分析内存占用检查缓存使用是否合理7.3 跨域问题症状前端调用API时出现CORS错误。解决方法在网关层统一配置CORS对于Nginx代理添加以下配置add_header Access-Control-Allow-Origin $http_origin; add_header Access-Control-Allow-Methods GET, POST, OPTIONS; add_header Access-Control-Allow-Headers DNT,User-Agent,X-Requested-With,Content-Type;8. 安全加固措施8.1 网络层安全配置安全组规则仅开放必要端口启用VPC网络隔离设置Nginx WAF防护规则8.2 应用层安全启用Spring Security防护配置合理的权限控制敏感数据加密存储接口添加速率限制8.3 数据安全数据库定时备份启用Binlog日志敏感字段加密操作日志审计9. 性能优化实践9.1 数据库优化为高频查询字段添加索引优化SQL语句避免全表扫描配置合理的连接池参数使用读写分离架构9.2 缓存策略高频访问数据放入Redis配置合理的缓存过期时间使用多级缓存架构缓存击穿防护9.3 JVM调优在启动参数中添加-XX:UseG1GC -XX:MaxGCPauseMillis200 -XX:InitiatingHeapOccupancyPercent45 -Xms4g -Xmx4g10. 回滚机制设计10.1 快速回滚方案保留最近3个版本的Docker镜像维护版本发布清单编写自动化回滚脚本回滚命令示例docker tag erp-gateway:1.2.0 erp-gateway:current docker-compose up -d10.2 数据回滚策略部署前执行数据库备份使用Flyway管理数据库变更准备数据修复脚本重要回滚时需要考虑数据兼容性问题特别是数据库结构变更的情况。在实际部署过程中我们发现最大的挑战不是技术实现而是如何平衡业务连续性和系统更新需求。经过多次部署经验积累我们总结出一个原则任何部署操作都必须有可验证的回退方案并且要在非业务高峰期执行。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑