【基于Spring Cloud 实现简单的微服务案例:集成Nacos、Gateway和Sentinel】
在微服务架构日益普及的今天,如何有效地管理服务配置、实现智能路由和保障系统稳定性成为关键问题。本文将详细介绍一个基于Spring Cloud Alibaba的完整微服务小案例,全方位讲解Nacos、Gateway和Sentinel在项目中的集成与应用(源码在最后)。
项目概述
本项目是一个典型的电商微服务系统,采用Spring Boot 2.6.11和Spring Cloud 2021.0.4构建,通过Spring Cloud Alibaba 2021.0.4.0集成以下核心组件:
- Nacos:配置中心和服务发现
- Gateway:API网关和路由管理
- Sentinel:流量控制和系统保护
项目包含以下核心模块:
- 网关服务(gateway):负责请求路由、负载均衡和流量控制
- 订单服务(order):处理订单相关业务逻辑
- 产品服务(product):管理商品信息
- 用户服务(user):处理用户相关功能
微服务项目结构图
shop-parent (根项目)
├── shop-api-gateway (网关服务)
│ ├── src/main/java
│ │ └── com.example
│ │ ├── config (网关配置)
│ │ ├── filter (过滤器)
│ │ └── GatewayApp.java (启动类)
│ ├── src/main/resources
│ │ ├── application.yml (应用配置)
│ │ └── bootstrap.yml (引导配置)
│ └── pom.xml
│
├── shop-product-api (产品API)
│ ├── src/main/java
│ │ └── com.example.entity
│ │ └── TShopProduct.java (产品实体)
│ └── pom.xml
│
├── shop-product-server (产品服务)
│ ├── src/main/java
│ │ └── com.example
│ │ ├── controller (控制器)
│ │ ├── mapper (数据访问)
│ │ ├── service (业务逻辑)
│ │ └── ProductApp.java (启动类)
│ ├── src/main/resources
│ │ ├── application.yml (应用配置)
│ │ └── bootstrap.yml (引导配置)
│ └── pom.xml
│
├── shop-order-api (订单API)
│ ├── src/main/java
│ │ └── com.example.entity
│ │ └── TShopOrder.java (订单实体)
│ └── pom.xml
│
├── shop-order-server (订单服务)
│ ├── src/main/java
│ │ └── com.example
│ │ ├── advice (异常处理)
│ │ ├── controller (控制器)
│ │ ├── feign (服务调用)
│ │ ├── handler (处理器)
│ │ ├── mapper (数据访问)
│ │ ├── parser (解析器)
│ │ ├── service (业务逻辑)
│ │ └── OrderApp.java (启动类)
│ ├── src/main/resources
│ │ ├── application.yml (应用配置)
│ │ └── bootstrap.yml (引导配置)
│ └── pom.xml
│
├── shop-user-api (用户API)
│ ├── src/main/java
│ │ └── com.example.entity
│ │ └── TShopUser.java (用户实体)
│ └── pom.xml
│
└── shop-user-server (用户服务)
├── src/main/java
│ └── com.example
│ ├── controller (控制器)
│ ├── mapper (数据访问)
│ ├── service (业务逻辑)
│ └── UserApp.java (启动类)
├── src/main/resources
│ ├── application.yml (应用配置)
│ └── bootstrap.yml (引导配置)
└── pom.xml
数据库表
已上传至gitee项目代码文件中,自行添加到数据库中即可
技术栈
- Spring Boot 2.6.11
- Spring Cloud 2021.0.4
- Spring Cloud Alibaba 2021.0.4.0
- Nacos 2.2.3(单机模式)
- Sentinel 1.8.3
- Gateway(Spring Cloud Gateway)
- Maven 3.8+
Nacos集成详解
配置中心功能
所有微服务通过Nacos实现配置的统一管理。每个服务在启动时从Nacos配置中心加载自己的配置文件,支持配置的动态刷新功能。
服务发现功能
微服务启动时自动向Nacos注册自己的服务信息,包括服务名称、IP地址和端口等。其他服务可以通过服务名称发现并调用该服务。
共享配置功能
订单服务通过共享配置功能引入全局配置,多个服务可以共享通用配置项,如全局开关、通用参数等。

Gateway网关集成
路由功能
网关服务通过配置实现智能路由,将不同路径的请求转发到对应的服务。例如:
/p/**路径的请求转发到产品服务/o/**路径的请求转发到订单服务
负载均衡
网关集成Ribbon实现负载均衡,能够自动在多个服务实例间分发请求。
Sentinel流量控制集成
流量控制
通过Sentinel实现流量控制,防止系统因突发大流量而崩溃。可以针对不同的资源设置不同的流控规则。
熔断降级
当某个服务出现异常时,Sentinel可以自动熔断对该服务的调用,避免故障扩散,并在适当时机尝试恢复。
系统自适应保护
Sentinel能够根据系统的实时负载情况,自动调整流量控制策略,保护系统稳定运行。
测试路径
http://localhost:9000/o/order/save/1/1/2?token=12
http://localhost:9000/p/product/get/1?token=12
http://localhost:8092/user/get/1
http://localhost:8091/showtitle

核心功能亮点
动态配置刷新
通过Nacos配置中心,项目支持配置的动态刷新功能。当配置发生变化时,服务能够实时获取最新配置,无需重启服务。(建议先在idea中编写application.yml,然后粘贴到Nacos配置中,然后将application注释即可)
以gateway-dev.yml为例

服务自动发现
服务启动时自动注册到Nacos,其他服务可以自动发现并调用,无需硬编码服务地址。
熔断降级机制
通过Sentinel实现服务间的熔断降级,提高系统的容错能力和稳定性。
项目部署架构
项目采用单机部署模式,适用于开发和测试环境:
- Nacos作为配置中心和服务发现组件
- Gateway作为统一入口和路由转发
- 各业务服务独立部署
- Sentinel提供流量控制和系统保护
运行效果展示
- 各微服务成功注册到Nacos,可在Nacos控制台的服务列表中查看
- 通过网关可以访问各微服务接口,实现自动路由
- Sentinel控制台可以监控流量并实施流控规则
- 修改Nacos中的配置后,服务能实时获取最新配置值
- Nacos服务列表页面
- 网关路由访问效果
> 3. Sentinel控制台实时监控
- 配置刷新前后对比
注:绿色为新加,红色为修改或删除
发布之后直接刷新shoutitle页面
最佳实践总结
Nacos使用建议
- 合理规划命名空间和分组,实现环境隔离
- 使用共享配置减少重复配置项
- 启用配置版本管理,便于回滚
Gateway使用建议
- 合理设计路由规则,避免路径冲突
- 配置合适的超时时间和重试机制
- 启用访问日志,便于问题排查
Sentinel使用建议
- 根据业务特点设置合理的流控规则
- 配置完善的降级处理逻辑
- 监控关键业务指标,及时调整策略
总结
通过本项目的实践,我们成功地将Nacos、Gateway和Sentinel集成到微服务架构中,实现了配置管理、服务发现、智能路由、流量控制等核心功能。这些组件的协同工作大大提升了微服务架构的可维护性、可扩展性和稳定性。
本项目采用单机部署模式,适用于开发和测试环境。在生产环境中,可以根据需要部署集群以提高可用性。通过合理使用这些技术组件,可以显著提升开发效率和系统稳定性,为构建高可用的微服务系统奠定了坚实基础。
源码获取
完整的项目源码已上传至gitee,欢迎下载和交流学习。
如果您觉得这篇文章对您有帮助,请点赞关注,我会持续分享更多实用的技术文章。如有任何问题,欢迎在评论区留言讨论。
更多推荐

> 3. Sentinel控制台实时监控





所有评论(0)