3.4 KiB
3.4 KiB
ERP API Gateway
基于Spring Cloud Gateway的统一API网关
功能特性
- ✅ Nacos服务发现 - 自动注册与发现微服务
- ✅ 动态路由 - 支持Nacos配置中心的动态路由更新
- ✅ JWT认证 - 统一认证鉴权
- ✅ Sentinel限流熔断 - 保护下游服务
- ✅ Redis分布式限流 - 基于令牌桶算法
- ✅ 统一日志 - 请求/响应完整日志
- ✅ 跨域处理 - CORS配置
项目结构
gateway/
├── pom.xml
├── src/main/
│ ├── java/com/erp/gateway/
│ │ ├── GatewayApplication.java
│ │ ├── config/
│ │ │ ├── GatewayConfig.java # 网关配置
│ │ │ ├── CorsConfig.java # 跨域配置
│ │ │ ├── SecurityConfig.java # 安全配置
│ │ │ ├── JwtUtil.java # JWT工具类
│ │ │ └── RateLimitConfig.java # 限流Key配置
│ │ ├── filter/
│ │ │ ├── AuthFilter.java # 认证过滤器
│ │ │ └── LogFilter.java # 日志过滤器
│ │ ├── handler/
│ │ │ └── JsonErrorHandler.java # JSON错误处理
│ │ └── sentinel/
│ │ └── SentinelConfig.java # Sentinel配置
│ └── resources/
│ ├── application.yml # 主配置
│ ├── bootstrap.yml # Nacos引导配置
│ ├── logback-spring.xml # 日志配置
│ └── nacos/
│ └── gateway-config.yml # Nacos中心化配置
└── docker/
├── Dockerfile
└── docker-compose.yml
快速开始
环境要求
- JDK 17+
- Maven 3.8+
- Redis
- Nacos 2.x
- Sentinel Dashboard
构建
mvn clean package -DskipTests
运行
java -jar target/gateway-1.0.0.jar
Docker部署
cd docker
docker-compose up -d
环境变量
| 变量 | 默认值 | 说明 |
|---|---|---|
| NACOS_SERVER | localhost:8848 | Nacos地址 |
| NACOS_USERNAME | nacos | Nacos用户名 |
| NACOS_PASSWORD | nacos | Nacos密码 |
| REDIS_HOST | localhost | Redis地址 |
| REDIS_PORT | 6379 | Redis端口 |
| JWT_SECRET | - | JWT密钥(256位) |
| SENTINEL_DASHBOARD | localhost:8080 | Sentinel控制台 |
| GATEWAY_PORT | 8080 | 网关端口 |
路由配置
| 服务 | 路径 | 下游服务 |
|---|---|---|
| 认证服务 | /api/auth/** | erp-auth |
| 用户服务 | /api/user/** | erp-user |
| 订单服务 | /api/order/** | erp-order |
| 商品服务 | /api/product/** | erp-product |
| 仓库服务 | /api/warehouse/** | erp-warehouse |
API端点
认证
POST /api/auth/login- 用户登录POST /api/auth/register- 用户注册POST /api/auth/refresh- 刷新Token
健康检查
GET /actuator/health- 健康状态
JWT认证
请求头格式:
Authorization: Bearer <token>
下游服务可获取的头部:
X-User-Name- 用户名X-User-Roles- 用户角色(逗号分隔)
限流策略
| API | QPS限制 |
|---|---|
| /api/auth/** | 200 |
| /api/user/** | 100 |
| /api/order/** | 100 |
| /api/product/** | 100 |
| /api/warehouse/** | 100 |
监控
- Actuator:
/actuator/gateway,/actuator/health - Sentinel: 连接Sentinel Dashboard查看实时数据
License
MIT