spring cloud gateway的作用(面试)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring cloud gateway的作用(面试)相关的知识,希望对你有一定的参考价值。

参考技术A  网关是整个微服务API请求的入口,负责拦截所有请求,分发到服务上去。可以实现日志拦截、权限控制、解决跨域问题、限流、熔断、负载均衡,隐藏服务端的ip,黑名单与白名单拦截、授权等,常用的网关有zuul(netflix的,但是已经停更了)和spring cloud gateway (springcloudalibaba)。这里主要讲springcloud gateway,springcloud gateway是一个全新的项目,其基于spring5.0 以及springboot2.0和项目Reactor等技术开发的网关,其主要的目的是为微服务架构提供一种简单有效的API路由管理方式.

过滤器:对单个服务器的请求进行拦截控制

网关:对所有的服务器的请求进行拦截控制

zuul:是Netflix的,是基于servlet实现的,阻塞式的api,不支持长连接。

gateway:是springcloud自己研制的微服务网关,是基于Spring5构建,能够实现响应式非阻塞式的Api,支持长连接

相同点:都是可以实现对api接口的拦截,负载均衡、反向代理、请求过滤等,可以实现和网关一样的效果。

不同点:nginx采用C语言编写,Gateway属于Java语言编写的, 能够更好让我们使用java语言来实现对请求的处理。

Nginx 属于服务器端负载均衡器。

Gateway 属于本地负载均衡器。 

路由 : 网关的基本模块,有ID,目标URI,一组断言和一组过滤器组成

断言:就是访问该旅游的访问规则,可以用来匹配来自http请求的任何内容,例如headers或者参数

过滤器:这个就是我们平时说的过滤器,用来过滤一些请求的,gateway有自己默认的过滤器,具体请参考官网,我们也可以自定义过滤器,但是要实现两个接口,ordered和globalfilter

a. 客户端发送请求,会到达网关的DispatcherHandler处理,匹配到RoutePredicateHandlerMapping。

b. 根据RoutePredicateHandlerMapping匹配到具体的路由策略。

c. FilteringWebHandler获取的路由的GatewayFilter数组,创建 GatewayFilterChain 处理过滤请求

d. 执行我们的代理业务逻辑访问。

spring cloud gateway 的执行流程

参考技术A 请求分发处理器,是WebFlux的访问入口。看这似曾相识的样子,没错,对应到Spring MVC中,跟它承担类似作用的,就是DispatcherServlet。DispatcherHander也和DispatcherServlet的请求处理流程类似:

执行他的核心方法:

她的本职工作是将GlobalFilter(全局过滤器)、GatewayFilter(一般来说是我们自己配置的,当然也默认内置了一些,也内含了自己在application配置文件中配的defaultFilter[如果有陪置的话]),放到同一个List里进行优先级排序,生成一个过滤器链。执行过滤器链,就能顺序执行链中保存的所有Filter。

参考文章:

spring cloud gateway 专题收录1

spring cloud gateway 专题收录2

以上是关于spring cloud gateway的作用(面试)的主要内容,如果未能解决你的问题,请参考以下文章

spring cloud gateway的作用(面试)

Spring Cloud Gateway 初体验

Spring Cloud Gateway 路由不起作用,Hystrix Dashboard 崩溃加载

Spring Cloud Gateway面试攻略,微服务网关的作用以及案例

spring cloud gateway 的执行流程

Spring cloud Gateway HTTS配置