SpringBoot3 + Nacos + Sentinel 微服务完整实战(Java17/21 适配)
·
SpringBoot3 + Nacos + Sentinel 微服务完整实战(Java17/21 适配)
标签:#SpringBoot3 #Nacos #Sentinel #微服务 #Java 后端 #高可用
阅读人群:Java 后端、微服务开发、架构师、面试求职者
阅读收益:从零搭建可运行微服务工程,掌握配置中心、服务注册发现、流量熔断限流全套生产方案,适配 Java17/21 新项目标准
一、前言
2026 年企业微服务技术栈已经完成标准化升级:
- SpringBoot3 + SpringCloud 6 成为新项目标配,最低要求 Java17,推荐 Java21;
- Nacos 替代 Eureka、Consul,同时兼顾服务注册发现与统一配置中心;
- Sentinel 作为轻量级流量防护组件,实现限流、熔断、降级、系统自适应保护,适配云原生微服务;
- 传统 Dubbo+SpringCloud 混合架构逐步统一为 SpringCloud Alibaba 体系。
很多开发者单独会用 Nacos、Sentinel,但缺少三者整合落地完整流程,本文提供可直接复制运行的完整工程代码,无冗余配置,规避生产高频踩坑点。
二、技术版本选型(生产稳定组合)
| 组件 | 版本 | 说明 |
|---|---|---|
| JDK | 17/21 | SpringBoot3 强制最低 JDK17 |
| SpringBoot | 3.2.x | 长期稳定分支 |
| SpringCloud Alibaba | 2023.0.1.2 | 适配 Boot3 |
| Nacos | 2.3.2 | 服务注册 + 配置中心 |
| Sentinel | 1.8.7 | 流量防护控制台 |
| Maven | 3.8+ | 构建工具 |
三、父工程 pom 依赖统一管理
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.micro</groupId>
<artifactId>micro-parent</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>
<modules>
<module>micro-user</module>
</modules>
<properties>
<java.version>17</java.version>
<spring.boot.version>3.2.5</spring.boot.version>
<cloud.alibaba.version>2023.0.1.2</cloud.alibaba.version>
</properties>
<!-- 统一版本锁定 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${cloud.alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- 通用工具 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
</project>
四、微服务子模块 pom(用户服务示例 micro-user)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.micro</groupId>
<artifactId>micro-parent</artifactId>
<version>1.0.0</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>micro-user</artifactId>
<name>用户微服务</name>
<dependencies>
<!-- SpringBoot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Nacos 服务注册+配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- Sentinel 流量防护 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<!-- 健康检查监控 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
</project>
五、bootstrap.yml 核心配置(Nacos 必用)
SpringBoot3 读取配置中心优先加载bootstrap.yml,将服务地址、环境、命名空间统一配置:
spring:
application:
name: micro-user
cloud:
# Nacos注册中心
nacos:
discovery:
server-addr: 127.0.0.1:8848
namespace: dev
# Nacos配置中心
config:
server-addr: 127.0.0.1:8848
namespace: dev
file-extension: yaml
group: DEFAULT_GROUP
# Sentinel控制台配置
sentinel:
transport:
dashboard: 127.0.0.1:8080
port: 8719
profiles:
active: dev
server:
port: 8001
配置说明
spring.application.name必须与 Nacos 配置文件名一致:micro-user-dev.yaml;- namespace 区分开发、测试、生产环境,隔离配置;
- sentinel.transport.dashboard 指向本地 Sentinel 控制台地址。
六、项目启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
// 开启Nacos服务注册
@EnableDiscoveryClient
public class MicroUserApplication {
public static void main(String[] args) {
SpringApplication.run(MicroUserApplication.class, args);
}
}
七、业务接口 + Sentinel 限流熔断实战
7.1 基础 Controller
import com.alibaba.csp.sentinel.annotation.SentinelResource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
/**
* Sentinel资源注解:绑定限流/熔断规则
* blockHandler:限流触发兜底方法
* fallback:业务异常熔断兜底
*/
@GetMapping("/user/get/{id}")
@SentinelResource(value = "getUserInfo", blockHandler = "flowBlockHandler", fallback = "errorFallback")
public String getUserInfo(@PathVariable Long id) {
// 模拟业务查询
if (id < 0) {
throw new RuntimeException("非法用户ID");
}
return "查询用户成功,ID:" + id;
}
// 限流兜底(仅处理流量超限)
public String flowBlockHandler(Long id) {
return "系统繁忙,请稍后重试!当前访问量过高";
}
// 异常熔断兜底(业务报错降级)
public String errorFallback(Long id) {
return "服务异常,触发降级,ID:" + id;
}
}
7.2 控制台配置规则操作步骤
- 启动 Nacos:
startup.cmd -m standalone; - 启动 Sentinel 控制台:
java -jar sentinel-dashboard-1.8.7.jar; - 启动 micro-user 服务,访问一次接口触发 Sentinel 客户端注册;
- 控制台流量规则配置:
- 资源名:
getUserInfo - 阈值类型:QPS
- 单机阈值:2(每秒最多 2 次请求)
- 资源名:
- 熔断规则:设置异常比例 0.5,触发后熔断 5 秒。
八、Nacos 配置中心使用示例
在 Nacos 后台新建配置 micro-user-dev.yaml
user:
upload-size: 10MB
page-size: 10
代码动态读取配置:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ConfigController {
@Value("${user.page-size}")
private Integer pageSize;
@GetMapping("/config/get")
public String getConfig() {
return "分页大小配置:" + pageSize;
}
}
修改 Nacos 配置无需重启服务,实时刷新生效。
九、生产环境高频踩坑总结
9.1 Nacos 常见问题
- SpringBoot3 不识别 bootstrap.yml:需引入
spring-cloud-starter-bootstrap依赖; - 注册失败:检查 namespace、服务名、IP 端口是否连通;
- 配置不刷新:添加
@RefreshScope注解到读取配置类。
9.2 Sentinel 常见问题
- 控制台看不到服务:必须先访问一次接口激活客户端;
- 规则重启丢失:生产需对接 Nacos 持久化限流规则;
- 兜底方法不生效:参数、返回值必须与原接口完全一致。
9.3 JDK17 适配坑
- 移除 javax 包,统一使用 jakarta;
- 反射默认限制,部分框架需添加启动参数开放反射;
- Lombok 版本需匹配 SpringBoot3,低版本编译报错。
十、生产扩展方案
- Nacos 集群部署:3 节点集群保证注册中心高可用;
- Sentinel 规则持久化:将限流、熔断规则存入 Nacos,重启不丢失;
- Feign 远程调用:整合 OpenFeign 实现微服务之间调用,配合 Sentinel 全局降级;
- 日志链路追踪:接入 SkyWalking 实现分布式链路排查;
- Java21 虚拟线程:改造 Web 容器使用虚拟线程,提升高并发吞吐。
十一、总结
SpringBoot3 + Nacos + Sentinel 是目前中小厂、大厂通用轻量微服务架构,对比 SpringCloud 原生组件拥有部署简单、运维成本低、功能一体化的优势。
作为 Java 后端开发者,这套技术栈是面试、项目开发必备技能:Nacos 管控配置与服务治理,Sentinel 保障服务不雪崩,二者结合彻底解决微服务分布式、高并发稳定性问题。
更多推荐

所有评论(0)