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 | filters: |
常见配置
1 | gateway: |
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