Skip to content

micro-java Gateway

模块:packages/micro-java/gateway
入口:com.xichen.micro.gateway.GatewayApplication
端口:8080(与 server-java 对外端口一致)

职责

  • 对外统一入口,隐藏 auth-service / system-service 内网端口
  • 通过 Nacos lb:// 做服务发现与负载均衡
  • Resilience4j 熔断 + GET 重试;失败降级到 /fallback
  • 全局 CORSGatewayCorsConfig + CORS_ORIGINS),供 Web :5173 直连 Gateway 时跨域
  • 不做 JWT 校验(由各业务服务 xichen-common 完成)

路由表

配置:gateway/src/main/resources/application.yml

路由 id路径目标
auth-service/api/v1/auth/**/api/v1/healthlb://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

降级:FallbackControllerGET /fallback

json
{ "code": 503, "message": "服务暂时不可用,请稍后重试", "data": null }

验证:停止 auth-service 后,POST /api/v1/auth/login 经网关应返回 503。

Nacos 依赖

环境变量默认
NACOS_ADDRlocalhost:8848
NACOS_NAMESPACEpublic

须先 启动 auth / system 并在 Nacos 注册成功,再启动 gateway;否则 lb://auth-service 无法解析。

Actuator

management.endpoints.web.exposure.include: health,info,gateway

相关文档

Xichen Full Stack 内部文档