Spring Cloud Gateway要点整理

网关的作用

  • 用户验证登陆权限等管理
  • 限流、熔断、日志
  • 统一接口地址,统一跨域控制,方便https证书等管理
  • 安全控制、黑名单白名单

zuul网关和gateway 网关对比

zuul是第一代spring cloud网关,由netfix开发,使用servlet阻塞式的api,不支持长连接,目前基本已经被gateway替代,
gateway是spring cloud第二代网关,由spring cloud开发,使用webflux、reactive异步非阻塞(响应式)api,性能优于zuul

nginx 和 gateway的区别

共同点:api拦截、负载均衡、反向代理、请求过滤
差异:nginx使用lua语言,对于开发来讲,相对难管理

网关持久化方案

当网关服务器启动的时候,从数据库查询路由配置,将数据读入内存中,并定时从数据库拉取最新数据

gateway核心技术点

路由配置核心字段

  • id(如果没填,会自动生成)
  • url(转发地址,支持负载均衡形式,ld://application-name)
  • filter(过滤器GatewayFilter,GatewayFilterFactory)
  • predicates(谓词匹配路由规则,PredicateFactory)

核心流程

client -> handler maping -> filter -> 代理 -> 输出

失败重试filter配置

1
2
3
4
5
filters:
- name: Retry
args:
retries: 3
statuses: BAD_GATEWAY

常见配置

1
2
3
4
5
6
7
8
9
10
11
12
gateway:
discovery:
locator:
enabled: true
lower-case-service-id: true
routes:
- id: orderPayCenterService
uri: lb://order-pay-center-service
predicates:
- Path=/orderPayCenterService/**
filters:
- StripPrefix=1

Global Filter与Gateway Filter的区别

Global Filter作用在所有的路由上面,Gateway Filter作用在某些路由上面

参考:https://img2018.cnblogs.com/blog/292888/201810/292888-20181014143215674-1048839967.png

查看路由(RestControllerEndpoint,GatewayControllerEndpoint)

http://127.0.0.1/actuator/gateway/routes
http://127.0.0.1/actuator/gateway/routes/save(增删改查)

查看 filter

http://127.0.0.1/actuator/gateway/globalfilters
http://127.0.0.1/actuator/gateway/routefilters