#博学谷IT学习技术支持#
一、Spring Cloud Gateway的基本概念
1.网关又称网间连接器、协议转换器。默认网关在网络层以上实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。
2.SpringCloud Gateway是SpringCloud微服务体系的重要组件,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关。
二、Spring Cloud Gateway PK Zuul 1.x
1.两款网关对比
三、Spring Cloud Gateway工作原理
1.工作原理
(1) 客户端向 Spring Cloud Gateway 发出请求
(2)Gateway Handler Mapping 中找到与请求相匹配的路由,将其发送到 Gateway Web Handler
(3)Handler 再通过指定的过滤器链来将请求发送到我们实际的服务执行业务逻辑,然后返回
注: 过滤器之间用虚线分开是因为过滤器可能会在发送代理请求之前(“pre”)或之后(“post”)执行业务逻辑。
Filter在“pre”类型的过滤器可以做参数校验、权限校验、流量监控、日志输出、协议转换等,在“post”类型的过滤器中可以做响应内容、响应头的修改,日志的输出,流量监控等有着非常重要的作用。
四、Spring Cloud Gateway的特性和核心流程
1.特性
(1)基于Spring 5,Reactor(模式) 和 SpringBoot 2.0
(2)动态路由-能够在任何请求属性上匹配路由
(3)Predicates 和 Filters 作用于特定路由
(4)集成 Hystrix 断路器
(5)集成 Spring Cloud DiscoveryClient
(6)易于编写的 Predicates 和 Filters
(7)限流
(8)路径重写
2.核心概念
(1)Route(路由):网关的基本构建块。它由一个 ID,一个目标 URI,一组断言和一组过滤器定义
(2)Predicate(断言):使用它来匹配来自 HTTP 请求的任何内容
(3)Filter(过滤器):可以使用它修改请求和响应
五、Spring Cloud Gateway之路由转发
1.Predicate(断言)
(1)路由转发的判断条件,目前SpringCloud Gateway支持多种方式,常见如:Path、Query、Method、Header等
2.Cookie 方式匹配转发
(1)Spring Cloud Gateway 提供了根据Cookie值的方式匹配转发请求,如果请求中所携带的Cookie值与配置的Predicate匹配,那么就可以被允许转发到指定地址
3.Between 方式匹配转发
(1)Spring Cloud Gateway 提供了按照一定时间段内允许请求转发的方式。
3.Query 方式匹配转发
(1)Spring Cloud Gateway可以根据请求参数进行匹配,存在指定参数才能被转发
六、Spring Cloud Gateway之路由转发
1.filter(过滤器)
(1)过滤器是路由转发请求时所经过的过滤逻辑,可用于修改请求、响应内容
2.RewritePath GatewayFilter Factory
(1)在Nginx服务启中有一个非常强大的功能就是重写路径,Spring Cloud Gateway默认也提供了这样的功能,这个功能是Zuul没有的
3.RedirectTo GatewayFilter Factory
(1)Spring Cloud Gateway提供重定向地址的功能,可以配置重定向地址和返回码
4.自定义过滤器
(1)Spring Cloud Gateway内置了30种强大的过滤器工厂,能够满足很多场景的需求,那么能不能自定义自己的过滤器呢,当然是可以的。在spring Cloud Gateway中,过滤器需要实现GatewayFilter和Ordered2个接口
七、Spring Cloud Gateway之流量限制
1.限流的背景和目的
(1)限流,顾名思义就是限制系统的访问流量,对一些客流访问量比较大,存在高并发情况的系统,就需要在系统中进行限流
(2)一方面是为了防止大量的请求致使服务器宕机,导致服务不可用,另一方面是为了防止网络攻击
2.限流的原理和常见方法
(1)限流是保护系统的重要利器,通过对并发访问或请求数进行限制或者对一个时间内的请求数进行限速,用于防止大流量或突发流量导致服务崩溃。一旦达到限制速率则可以拒绝服务或进行流量控制
(2)在实践中会在网络层,接入层(Nginx),应用层进行限流。实现技术可以限制线程池,数据库连接池,瞬间并发数,接口调用速率、限制MQ消费速率。根据网络连接数、网络流量、CPU或内存负载等来限流等
3.限流算法
(1)计数器算法
(2)漏桶算法
(3)令牌桶算法
4.限流—计数器算法
5.限流—漏桶算法
6.限流—令牌桶算法