SpringCloud Gateway介绍

介绍

Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.x 、 Project Reactor、Spring WebFlux 等技术开发的网关

它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。

提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控/指标,和限流。

官网:
https://cloud.spring.io/spring-cloud-gateway/2.2.x/reference/html/

功能

  • 反向代理
  • 鉴权
  • 流量控制
  • 熔断
  • 日志监控

特性

  • 基于 Spring Framework 5,Project Reactor 和 Spring Boot 2.0
  • 动态路由
  • Predicates 和 Filters 作用于特定路由
  • 集成 Hystrix 断路器
  • 集成 Spring Cloud DiscoveryClient
  • 易于编写的 Predicates 和 Filters
  • 限流
  • 路径重写

gateway与同类产品比较

gateway VS zuul 1.x

Netflix Zuul 1.x停更,基于servlet2.5使用阻塞模式,部署在Tomcat容器中
Netflix Zuul 2.x处于混乱,开发 Gateway

gateway 由spring cloud团队开发,目标是替代 Netflix Zuul
与spring其他组件集成更好
基于netty异步非阻塞模型开发,性能提升

gateway VS nginx

同样都有代理的功能,但gateway功能更为强大,与spring家族集成后,可实现更多功能

当并发量大到一定程度时,需要 nginx+gateway 实现负载均衡

概念

https://cloud.spring.io/spring-cloud-gateway/2.2.x/reference/html/#glossary

Route-路由

网关的基本构建块。它由ID,目标URI,一些断言和过滤器组成。如果断言为true,则匹配路由。

Predicate-断言

Java 8 Function Predicate,可以匹配HTTP请求中的所有内容,例如请求头或参数

Filter-过滤

Spring 框架的 GatewayFilter实例。在发送请求之前或之后修改请求和响应。

比喻

Filter相当于学生宿舍门卫,拦截来访者;
断言相当与进宿舍的要求,有学生证就能进;
路由负责把符合要求的学生送到寝室

工作流程

https://cloud.spring.io/spring-cloud-gateway/2.2.x/reference/html/#glossary

客户端向Spring Cloud Gateway发出请求。如果Gateway Handler Mapping有与请求匹配的路由,则将其发送到Gateway Web Handler。

该处理程序通过 指定的的过滤器链,过滤器由虚线分隔的原因是:过滤器可以在发送请求之前和之后执行业务逻辑。

所有“发送请求之前”的过滤器均被执行,做参数校验、权限校验、流量监控、日志输出、协议转换等。

在发送请求之后,可以做响应头的修改、日志输出等


原文出处:/show_1EF5if6TAfAn.html