# cloud-nacos
**Repository Path**: wangpanA/cloud-nacos
## Basic Information
- **Project Name**: cloud-nacos
- **Description**: Demo Spring Cloud Doctor
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-01-22
- **Last Updated**: 2026-03-23
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Spring Cloud Nacos Demo





一个面向实战的 Spring Cloud Alibaba 微服务示例项目。
围绕 `Nacos 注册/配置中心`、`Gateway 网关`、`JWT 认证`、`RBAC 权限`、`Sentinel 限流熔断`、`RocketMQ 消息` 等能力,提供一套可运行、可扩展、可演示的完整工程。
---
## 项目定位
这个仓库不是单一功能 Demo,而是一个适合学习和二次开发的微服务脚手架,重点解决下面几类场景:
- 想快速搭建一套基于 Nacos 的 Spring Cloud 微服务基础工程
- 想把认证、鉴权、网关、服务调用、限流熔断串成一条完整链路
- 想拿一个能直接跑起来的项目,用于课程演示、毕设、内部 PoC 或个人练手
- 想在现有基础上继续扩展业务模块、前端页面、消息队列和部署方案
---
## 核心能力
- 统一网关入口:基于 Spring Cloud Gateway 做统一路由、跨域和安全拦截
- 认证鉴权:基于 JWT 的登录、刷新、校验、退出能力
- 权限控制:支持 RBAC 思路,可继续扩展菜单、按钮、接口级权限
- 服务治理:基于 Nacos 实现服务注册发现与配置集中管理
- 服务调用:基于 OpenFeign 实现服务间远程调用
- 稳定性治理:集成 Sentinel,支持限流、熔断、规则持久化
- 消息能力:集成 RocketMQ,覆盖生产、消费与部分测试场景
- 文档能力:集成 Knife4j,支持通过网关聚合查看接口文档
- 安全增强:包含接口安全、防重放、防刷、XSS/SQL 注入防护等扩展文档
- 容器部署:提供 `docker-compose.yml`,可一键拉起基础环境与核心服务
---
## 架构概览
```text
Client / Frontend
|
v
+----------------------+
| nacos-gateway | 统一入口 / 路由转发 / JWT 校验 / 文档聚合
+----------------------+
|
+---------------------> auth-service (认证服务)
|
+---------------------> provider-service (核心提供者服务)
|
+---------------------> consumer-service (Feign 调用示例)
|
+---------------------> more business APIs...
Infrastructure:
- Nacos : 注册中心 + 配置中心
- MySQL : 业务数据存储
- Redis : 缓存/状态支持
- RocketMQ : 异步消息
- Sentinel : 限流 / 熔断 / 降级
```
---
## 模块说明
| 模块 | 说明 | 默认本地端口 |
| --- | --- | --- |
| `nacos-gateway` | 网关层,统一入口、路由转发、JWT 校验、Knife4j 聚合 | `8080` |
| `nacos-auth` | 认证服务,负责登录、注册、Token 刷新与校验 | `8085` |
| `nacos-provider` | 提供者服务,承载用户与部分业务接口 | 由配置中心控制 |
| `nacos-consumer` | 消费者服务,演示 Feign 调用与服务协作 | 由配置中心控制 |
| `nacos-common` | 公共模块,封装 DTO、统一返回、异常处理、工具类等 | - |
| `nacos-frontend` | 前端工程,基于 Vue 3 + Element Plus | 前端开发端口由 Vite 决定 |
说明:
- `provider` 和 `consumer` 的具体端口可由 Nacos 配置中心或运行环境决定
- Docker 场景下暴露端口与本地开发端口不同,见下方“Docker 启动”
---
## 技术栈
| 类别 | 选型 |
| --- | --- |
| 基础框架 | Spring Boot 3.2.1、Spring Cloud 2023.0.0 |
| 微服务生态 | Spring Cloud Alibaba 2023.0.1.2、Nacos |
| 网关与调用 | Spring Cloud Gateway、OpenFeign、LoadBalancer |
| 安全认证 | Spring Security、JWT |
| 数据访问 | MySQL、MyBatis-Plus、Redis |
| 稳定性 | Sentinel |
| 消息队列 | RocketMQ |
| 接口文档 | Knife4j / OpenAPI 3 |
| 前端 | Vue 3、Vite、Element Plus、Pinia、Vue Router、ECharts |
| 构建工具 | Maven、Docker Compose |
---
## 仓库结构
```text
springcloud-nacos-demo
├── docs/ 项目文档
├── sql/ 初始化与业务 SQL
├── scripts/ 辅助脚本
├── data/ 数据目录
├── nacos-auth/ 认证服务
├── nacos-common/ 公共模块
├── nacos-consumer/ 消费者服务
├── nacos-gateway/ 网关服务
├── nacos-provider/ 提供者服务
├── nacos-frontend/ 前端工程
├── docker-compose.yml 容器编排
└── pom.xml Maven 父工程
```
---
## 快速开始
### 方式一:本地开发启动
适合需要调试代码、逐个模块启动的场景。
#### 1. 环境准备
- JDK `17+`
- Maven `3.8+`
- MySQL `8.0+`
- Redis `6+` 或 `7+`
- Nacos `2.3+`
- RocketMQ `4.x` 或与当前配置兼容的版本
#### 2. 初始化数据库
本仓库 `sql/` 目录下已经提供多份脚本,可按你的业务需要导入,例如:
- `sql/02_init.sql`
- `sql/03_rbac_init.sql`
- `sql/04_business_schema.sql`
- `sql/05_doctor_schema.sql`
如果你只是做最小化演示,建议先导入基础初始化脚本和 RBAC 相关脚本,再逐步补充业务表。
#### 3. 配置 Nacos
需要在 Nacos 中准备对应配置,通常包括:
- `nacos-auth`
- `nacos-gateway`
- `nacos-provider`
- `nacos-consumer`
至少要保证这些配置项正确:
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/your_db
username: your_username
password: your_password
jwt:
secret: your-jwt-secret
expiration: 86400
```
注意:
- `auth` 与 `gateway` 中的 `jwt.secret` 必须保持一致
- `provider`、`consumer` 的数据库、Redis、Nacos 地址应与你本地环境一致
#### 4. 启动顺序
建议按下面顺序启动:
```bash
mvn clean install -DskipTests
```
```bash
# 1. provider
cd nacos-provider
mvn spring-boot:run
```
```bash
# 2. auth
cd nacos-auth
mvn spring-boot:run
```
```bash
# 3. consumer
cd nacos-consumer
mvn spring-boot:run
```
```bash
# 4. gateway
cd nacos-gateway
mvn spring-boot:run
```
#### 5. 验证是否启动成功
```bash
curl http://localhost:8080/actuator/health
```
```bash
curl -X POST http://localhost:8080/auth/login \
-H "Content-Type: application/json" \
-d "{\"username\":\"admin\",\"password\":\"123456\"}"
```
---
### 方式二:Docker Compose 启动
适合快速体验整套环境。
```bash
docker compose up -d --build
```
默认会拉起这些容器:
- `mysql`
- `redis`
- `nacos`
- `rocketmq-namesrv`
- `rocketmq-broker`
- `rocketmq-dashboard`
- `nacos-provider`
- `nacos-auth`
- `nacos-consumer`
- `nacos-gateway`
Docker 默认端口映射如下:
| 服务 | 端口 |
| --- | --- |
| Gateway | `8000` |
| Provider | `8001` |
| Consumer | `8002` |
| Auth | `8003` |
| Nacos | `8848` |
| MySQL | `3306` |
| Redis | `6379` |
| RocketMQ Dashboard | `8081` |
说明:
- 本地开发常见端口是 `8080/8085/...`
- Docker 编排中对外暴露的是 `8000/8001/8002/8003`
- 首页展示时建议优先写明这两套端口差异,避免使用者混淆
---
## 常用访问入口
| 名称 | 地址 |
| --- | --- |
| 网关入口 | `http://localhost:8080` |
| 网关入口(Docker) | `http://localhost:8000` |
| Nacos 控制台 | `http://localhost:8848/nacos` |
| Knife4j 聚合文档 | `http://localhost:8080/doc.html` |
| RocketMQ Dashboard | `http://localhost:8081` |
---
## 接口示例
### 认证接口
| 方法 | 路径 | 说明 |
| --- | --- | --- |
| `POST` | `/auth/login` | 用户登录 |
| `POST` | `/auth/register` | 用户注册 |
| `POST` | `/auth/refresh` | 刷新 Token |
| `POST` | `/auth/verify` | 校验 Token |
| `POST` | `/auth/logout` | 用户退出 |
| `GET` | `/auth/me` | 获取当前用户信息 |
### Provider 接口
| 方法 | 路径 | 说明 |
| --- | --- | --- |
| `GET` | `/provider-service/provider/user/list` | 查询用户列表 |
| `GET` | `/provider-service/provider/user/{id}` | 根据 ID 查询用户 |
| `POST` | `/provider-service/provider/user/save` | 新增用户 |
| `PUT` | `/provider-service/provider/user/update` | 更新用户 |
| `DELETE` | `/provider-service/provider/user/{id}` | 删除用户 |
### Consumer 接口
| 方法 | 路径 | 说明 |
| --- | --- | --- |
| `GET` | `/consumer-service/consumer/hello` | Feign 调用演示 |
| `GET` | `/consumer-service/consumer/echo` | 本地测试接口 |
| `GET` | `/consumer-service/consumer/user/{id}` | 通过 Feign 查询用户 |
---
## 文档导航
如果你不是只想“跑起来”,而是想继续深入,建议直接看这些文档:
- [Docker 部署说明](docs/DOCKER_DEPLOY.md)
- [API 测试指南](docs/API_TEST_GUIDE.md)
- [RBAC 权限说明](docs/RBAC_GUIDE.md)
- [配置加密说明](docs/CONFIG_ENCRYPTION.md)
- [接口安全说明](docs/API_SECURITY.md)
- [Sentinel 使用说明](docs/SENTINEL.md)
- [RocketMQ 使用说明](docs/ROCKETMQ_GUIDE.md)
---
## 适合怎么用这个项目
- 作为 Spring Cloud Alibaba 学习样例
- 作为校招/毕设/课程设计的基础工程
- 作为中后台项目的微服务起步模板
- 作为认证鉴权、网关治理、服务调用、消息集成的演示仓库
---
## 后续可扩展方向
- Kubernetes 部署与 Helm 编排
- 链路追踪与可观测性接入
- 分布式事务支持
- 更完整的前后端联调示例
- CI/CD、自动化测试与发布流程
---
## 说明
- 当前仓库内部分配置与文档已经具备业务扩展痕迹,不再是最初的纯净最小 Demo
- 如果你打算对外展示,建议把业务场景、演示账号、默认密码、部署方式继续按你的目标受众再收敛一次
- 如果你需要,我可以继续帮你把 README 再细分成“Gitee 首页精简版 + docs/README-DEV 开发版”双文档结构
---
## License
本项目基于 [MIT License](LICENSE) 开源。