一个开箱即用的业务网关服务,基于 Spring Cloud Gateway 和 Nacos 实现动态路由、流量控制和监控支持。
- 动态路由:通过 Nacos 配置中心实现路由规则的动态管理。
- 流量控制:集成 Sentinel,支持基于路由和 API 的限流。
- 服务发现:通过 Nacos Discovery 实现服务注册与路由。
- 监控支持:集成 Prometheus,提供网关性能指标。
基础配置,用于服务发现和静态路由定义。
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
username: nacos
password: nacos
namespace: api
gateway:
discovery:
locator:
enabled: true # 启用服务发现路由
lower-case-service-id: true # 服务 ID 小写化
routes:
- id: sample-route
uri: lb://sample # 通过服务名路由
predicates:
- Path=/sample/**
filters:
- StripPrefix=1在 Nacos 中配置动态路由规则,支持实时更新。
- Namespace:
api - Data ID:
gateway-routes.yaml - Group:
infra-gateway - 格式: JSON OR YAML
- id: sample-route
uri: lb://sample
predicates:
- Path=/sample/**
filters:
- StripPrefix=1通过 Sentinel 实现网关的限流配置,规则存储在 Nacos 中。
- Namespace:
sentinel - Data ID:
infra-gateway-flow-rules - Group:
infra-gateway - 格式: JSON
[
{
"resource": "sample-route",
"resourceMode": 0,
"grade": 1,
"count": 1,
"intervalSec": 1,
"controlBehavior": 0,
"burst": 0
},
{
"resource": "sample-api",
"resourceMode": 1,
"grade": 1,
"count": 1,
"intervalSec": 1,
"controlBehavior": 0,
"burst": 0
}
]| 参数 | 说明 | 可选值 |
|---|---|---|
resource |
限流资源(如路由 ID 或 API) | 自定义字符串 |
resourceMode |
资源类型 | 0(路由)/ 1(API) |
grade |
限流类型 | 0 (线程数) / 1(QPS) |
count |
限流阈值 | 数值(如 5、10) |
intervalSec |
统计时间窗口(秒) | 整数(如 1) |
controlBehavior |
限流行为 | 0 (直接拒绝) / 1(预热) / 2(限流) / 3(预热 + 限流) |
burst |
突发流量容量 | 0(禁用)或正整数 |
集成 Prometheus 收集网关指标,便于性能监控。
spring:
cloud:
gateway:
metrics:
enabled: true # 启用 Gateway Metrics
management:
endpoints:
web:
exposure:
include: "*" # 暴露所有端点
base-path: /management # 自定义端点路径
metrics:
export:
prometheus:
enabled: true # 启用 Prometheus 指标导出- URL:
http://localhost:10101/management/prometheus - 说明: Prometheus 可通过此端点拉取指标,如请求延迟、吞吐量等。
- 启动 Nacos:确保 Nacos 服务运行在
127.0.0.1:8848,并创建api和sentinel命名空间。 - 配置路由与限流:在 Nacos 中添加上述配置。
- 运行网关:启动 Spring Boot 应用。
- 测试路由:访问
http://localhost:10101/sample/xxx,验证路由和限流是否生效。 - 监控指标:配置 Prometheus 拉取指标,并结合 Grafana 可视化。
- 版本兼容性:确保 Spring Boot、Spring Cloud 和 Spring Cloud Alibaba 版本匹配。
- 安全性:生产环境中为 Nacos 和 Prometheus 端点添加认证。
- 动态刷新:路由和限流规则修改后会自动生效,无需重启服务。