Spring Cloud 分布式服务部署实战:从 0 到 1 实现微服务上线

Spring Cloud 分布式服务部署实战:从 0 到 1 实现微服务上线

在微服务开发中,我们习惯在本地 IDE 运行服务,但真正上线必须经过分布式多服务器部署。这篇文章基于 Spring Cloud 实战,手把手带你完成 MySQL、Nacos、网关、商品服务、订单服务的分布式部署,可直接用于学习与生产环境参考。


一、部署前规划

本次部署采用4 台 Linux 服务器(CentOS/Ubuntu 均可),服务拆分如下:

服务器 部署内容
服务器 1 MySQL + Nacos
服务器 2 商品服务实例 1、订单服务实例 1
服务器 3 商品服务实例 2、订单服务实例 2
服务器 4 网关服务(Gateway)

核心原则

  • MySQL、Nacos、网关:单例部署(学习环境简化)

  • 商品服务、订单服务:多实例部署(实现负载均衡)

  • 最少 1 台服务器可演示,建议 3 台以上效果最佳


二、MySQL 部署与远程授权

微服务必须依赖统一数据库,MySQL 需开启远程访问

1. 安装与初始化

先完成 MySQL 安装与项目库表初始化,这里不再赘述。

2. 创建远程用户并授权

sql 复制代码
-- 创建用户
CREATE USER 'bite'@'%' IDENTIFIED BY 'BITE@yyds.666';

-- 授权所有库所有表,允许任意IP访问
GRANT ALL ON *.* TO 'bite'@'%';

-- 刷新权限
FLUSH PRIVILEGES;

3. 修改绑定地址

bash 复制代码
# 编辑配置
vim /etc/mysql/mysql.conf.d/mysqld.cnf

Plain 复制代码
bind-address = 127.0.0.1

改为

Plain 复制代码
bind-address = 0.0.0.0

4. 重启与开放端口

bash 复制代码
sudo systemctl restart mysql
# 开放 3306 端口

5. 远程连接测试

bash 复制代码
mysql -h[服务器IP] -P3306 -ubite -pBITE@yyds.666

出现 MySQL 命令行即成功。


三、Nacos 注册中心部署

Nacos 是微服务的注册中心 + 配置中心,所有服务必须注册到同一 Nacos。

  1. 先安装 JDK(建议 1.8+ 或 17)

  2. 下载、解压、启动 Nacos

  3. 访问:http://\[IP\]:8848/nacos

  4. 确保所有服务能连通此 Nacos

注意:服务器防火墙必须开放 8848 端口。


四、商品服务 & 订单服务(多实例部署)

商品、订单服务步骤完全一致,这里统一说明。

1. 环境准备

  • 安装 JDK 17

  • 上传打好的 Jar 包:

    • product-service-1.0-SNAPSHOT.jar

    • order-service-1.0-SNAPSHOT.jar

2. 后台启动(关键)

跨服务器部署时,必须指定注册 IP,否则 Nacos 会注册内网 IP 导致调用失败。

bash 复制代码
# 启动商品服务
nohup java -jar product-service-1.0-SNAPSHOT.jar \
--spring.cloud.nacos.discovery.ip=[当前服务器外网IP] \
> logs/product.log &

# 启动订单服务
nohup java -jar order-service-1.0-SNAPSHOT.jar \
--spring.cloud.nacos.discovery.ip=[当前服务器外网IP] \
> logs/order.log &

3. 开放端口

  • 商品服务:默认 10030

  • 订单服务:默认 10040

4. 接口测试

Plain 复制代码
# 商品
http://[IP]:10030/product/1001

# 订单
http://[IP]:10040/order/1

返回 JSON 数据即部署成功。


五、网关服务(Gateway)部署

网关统一入口、路由转发、负载均衡。

1. 上传 Jar 包

gateway-1.0-SNAPSHOT.jar

2. 后台启动

bash 复制代码
nohup java -jar gateway-1.0-SNAPSHOT.jar \
--server.port=8080 \
> logs/gateway.log &

3. 开放 8080 端口

4. 网关路由测试

Plain 复制代码
# 商品(网关转发)
http://[网关IP]:8080/product/1001

# 订单(网关转发)
http://[网关IP]:8080/order/1

能正常访问说明网关 + 服务发现 + 负载均衡全部生效。


六、部署成功的关键要点

  1. MySQL 必须授权远程访问

  2. Nacos 必须所有服务器互通

  3. 微服务跨公网部署:必须指定 spring.cloud.nacos.discovery.ip

  4. 服务器防火墙 / 安全组:开放 3306、8848、8080、10030、10040

  5. 使用 nohup 后台运行,日志输出便于排查


七、总结

这套流程是标准 Spring Cloud 分布式上线模板

  • 注册中心统一管理

  • 数据服务统一存储

  • 网关统一入口

  • 核心服务多实例扩容

按照本文步骤,你可以快速把本地微服务搬到多服务器分布式环境,为高可用、负载均衡、熔断降级打下基础。

相关推荐
xmjd msup3 小时前
spring security 超详细使用教程(接入springboot、前后端分离)
java·spring boot·spring
雨辰AI6 小时前
SpringBoot3 + 人大金仓 V9 微服务监控实战|Prometheus+Grafana+SkyWalking 全链路监控
数据库·后端·微服务·grafana·prometheus·skywalking
myrh pdmd6 小时前
maven导入spring框架
数据库·spring·maven
中冕—霍格沃兹软件开发测试8 小时前
区块链交易最终一致性测试的核心挑战与实践框架
微服务·架构·单元测试·区块链·集成测试·旅游
BENA ceic9 小时前
Spring 的三种注入方式?
java·数据库·spring
二哈赛车手9 小时前
新人笔记---项目中简易版的RAG检索后评测指标(@Recall ,Mrr..)实现
java·开发语言·笔记·spring·ai
NaMM CHIN10 小时前
Spring Boot + Spring AI快速体验
人工智能·spring boot·spring
norq juox10 小时前
Spring 中集成Hibernate
java·spring·hibernate