Appearance
micro-java Gateway
模块:packages/micro-java/gateway
入口:com.xichen.micro.gateway.GatewayApplication
端口:8080(与 server-java 对外端口一致)
职责
- 对外统一入口,隐藏 auth-service / system-service 内网端口
- 通过 Nacos
lb://做服务发现与负载均衡 - Resilience4j 熔断 + GET 重试;失败降级到
/fallback - 全局 CORS(
GatewayCorsConfig+CORS_ORIGINS),供 Web :5173 直连 Gateway 时跨域 - 不做 JWT 校验(由各业务服务
xichen-common完成)
路由表
配置:gateway/src/main/resources/application.yml
| 路由 id | 路径 | 目标 |
|---|---|---|
| auth-service | /api/v1/auth/**、/api/v1/health | lb://auth-service |
| system-service | /api/v1/system/** | lb://system-service |
| monitor-service | /api/v1/monitor/** | lb://monitor-service |
| auth-swagger | /auth-service/api-docs/**、/auth-service/swagger-ui/** | auth-service(StripPrefix=1) |
| system-swagger | /system-service/api-docs/**、/system-service/swagger-ui/** | system-service(StripPrefix=1) |
| monitor-swagger | /monitor-service/api-docs/**、/monitor-service/swagger-ui/** | monitor-service(StripPrefix=1) |
Swagger 访问方式
经网关访问 Swagger 需带服务前缀,例如 /auth-service/swagger-ui.html,不能直接访问下游 :8081 / :8082 的 Swagger(路由不一致)。
跨域(CORS)
浏览器从 Web 开发服务器(:5173)直连 Gateway(:8080)时,须由网关返回 CORS 响应头。实现:gateway/src/main/java/.../GatewayCorsConfig.java(读取 CORS_ORIGINS,逗号分隔,与业务服务一致)。
| 环境变量 | 说明 |
|---|---|
CORS_ORIGINS | 逗号分隔的前端源,默认 http://localhost:5173,http://localhost:3000 |
开发环境推荐
也可让 VITE_API_BASE_URL 留空,走 Web Vite 代理,无需跨域。详见 本地启动 — Web 联调。
熔断与降级
resilience4j.circuitbreaker + 路由级 CircuitBreaker filter:
| 配置 | 值 |
|---|---|
| 滑动窗口 | 10 次 |
| 失败率阈值 | 50% |
| 打开状态等待 | 10s |
| GET 重试 | 2 次(502/503) |
| 超时 | 10s |
降级:FallbackController → GET /fallback
json
{ "code": 503, "message": "服务暂时不可用,请稍后重试", "data": null }验证:停止 auth-service 后,POST /api/v1/auth/login 经网关应返回 503。
Nacos 依赖
| 环境变量 | 默认 |
|---|---|
NACOS_ADDR | localhost:8848 |
NACOS_NAMESPACE | public |
须先 启动 auth / system 并在 Nacos 注册成功,再启动 gateway;否则 lb://auth-service 无法解析。
Actuator
management.endpoints.web.exposure.include: health,info,gateway