- 独立服务端 (Server):需要下载安装包,独立启动进程(类似装 MySQL)。
- Spring Boot 应用 (App):需要你创建一个 Java 项目,引入依赖,写启动类(类似写业务代码)。
- 代码依赖库 (Library) :只需要在
pom.xml里引入,不需要单独启动,它寄生在你的服务里。
Spring Cloud 核心组件部署方式表
| 组件名称 | 角色定位 | 部署/启动方式 | 是否需要写代码 | 典型操作 |
|---|---|---|---|---|
| Nacos | 注册中心 & 配置中心 (通讯录+广播站) | 独立服务端 (下载压缩包 -> 解压 -> 运行脚本) | ❌ 不需要 | 下载 Nacos,运行 startup.sh 或 startup.cmd |
| Sentinel Dashboard | 流控控制台 (流量遥控器) | 独立服务端 (下载 jar 包 -> java -jar 运行) |
❌ 不需要 | 下载 sentinel-dashboard.jar,运行命令启动 |
| Spring Cloud Gateway | 网关 (大楼前台/保安) | Spring Boot 应用 (创建一个独立的微服务项目) | ✅ 需要 | 新建一个 Spring Boot 工程,引入 Gateway 依赖,配置路由规则,启动 |
| OpenFeign | 远程调用 (对讲机) | 代码依赖库 (POM) (嵌入在你的业务服务里) | ✅ 需要 | 在 pom.xml 加依赖,代码里加 @FeignClient 注解 |
| LoadBalancer | 负载均衡 (选号器) | 代码依赖库 (POM) (嵌入在你的业务服务里) | ❌ 不需要 (通常被 Feign/Gateway 自动引入) | 只要引入了 Feign 或 Nacos Discovery,它就自动在里面干活了 |
| Sentinel Core | 限流熔断核心 (空调主机/阀门) | 代码依赖库 (POM) (嵌入在网关或业务服务里) | ✅ 需要 | 在 pom.xml 加 Sentinel 依赖,它会随服务一起启动 |
| Seata (进阶) | 分布式事务 (事务大管家) | 独立服务端 (TC) + 代码依赖库 (RM/TM) | ❌ Server端不用 ✅ Client端需要 | 也要下载 Seata Server 独立运行,业务代码里加依赖 |
详细拆解与避坑指南
1. 那些"独立部署"的家伙 (Server)
这些组件就像 MySQL 或 Redis 一样,属于基础设施。
-
Nacos:
-
怎么玩: 去官网下载
.zip或.tar.gz,解压,进入bin目录,执行启动命令。 -
注意: 生产环境它通常是 3 台组成的集群,外挂一个 MySQL 数据库。
-
Sentinel Dashboard:
-
怎么玩: 去 GitHub 下载一个
.jar包,直接用java -jar sentinel-dashboard.jar启动。 -
注意: 它挂了不影响业务运行,只是你没法改规则了。
2. 那个"像业务服务"的家伙 (App)
- Spring Cloud Gateway:
- 怎么玩: 它本质上就是一个普通的 Spring Boot 项目。
- 区别: 普通服务写的是 Controller (业务逻辑),它写的是
application.yml(路由规则)。 - 启动: 和启动你的 OrderServe 一模一样,运行
main方法。
3. 那些"隐形"的家伙 (Library)
- OpenFeign / LoadBalancer / Sentinel Core:
- 怎么玩: 它们是寄生虫。
- 原理: 只要你在
pom.xml里写了<dependency>...openfeign...</dependency>,Maven 就会把它们的 Jar 包下载下来。当你启动OrderServe时,这些代码就加载进内存了。 - 看不见: 你在服务器上通过
ps -ef | grep java看进程时,看不到 Feign 或 LoadBalancer 的进程,你只能看到OrderServe的进程。
总结一条规律
- 要存数据的、要提供管理界面的 -> 通常是 独立部署 (Server) (如 Nacos, Sentinel Dashboard)。
- 处理网络请求入口的 -> 通常是 Spring Boot 应用 (App) (如 Gateway)。
- 处理服务间逻辑调用的 -> 通常是 POM 依赖 (Library) (如 Feign, LoadBalancer)。