当前位置:   article > 正文

SpringCloud Gateway 简介、工作流程、快速入门_springgateway的执行流程

springgateway的执行流程

1.什么是网关

网关是微服务最边缘的服务,直接暴露给用户,用来做用户和微服务的桥梁

在这里插入图片描述

  1. 没有网关:客户端直接访问我们的微服务,会需要在客户端配置很多的 ip:port,如果user-service 并发比较大,则无法完成负载均衡

  2. 有网关:客户端访问网关,网关来访问微服务,(网关可以和注册中心整合,通过服务名称找到目标的 ip:prot)这样只需要使用服务名称即可访问微服务,可以实现负载均衡,可以实现 token 拦截,权限验证,限流等操作

2.Spring Cloud Gateway 简介

你们项目里面 用的什么网关? gateway zuul

它是 Spring Cloud 官方提供的用来取代 zuul(netflix)的新一代网关组件(zuul:1.0 , 2.0 ,zuul 的本质,一组过滤器,根据自定义的过滤器顺序来执行,本质就是web 组件 web 三大组件(监听器 过滤器 servlet) 拦截 springmvc)
Zuul1.0 使用的是 BIO(Blocking IO) tomcat7.0 以前都是 BIO 性能一般
Zuul2.0 性能好 NIO
AIO 异步非阻塞 io a+nio = aio = async + no blocking io

它基于 spring5.x,springboot2.x 和 ProjectReactor 等技术。它的目地是让路由更加简单,灵活,还提供了一些强大的过滤器功能,例如:熔断、限流、重试,自义定过滤器等 token 校验 ip 黑名单等

SpringCloud Gateway作为Spring Cloud生态的网关,目标是替代Zuul,在SpringCloud2.0以上的版本中,没有对新版本的 zuul2.0 以上的最新高性能版本进行集成,仍然还是使用的zuul1.x[可以看项目依赖找到]非 Reactor 模式的老版本。而为了提升网关的性能,SpringCloud Gateway 是基于 webFlux 框架实现的,而 webFlux 框架底层则使用了高性能的 Reactor 模式通信框架的 Netty

NIO(非阻塞式 io) BIO 你只需要了解网关能做什么? 网关里面写什么代码 就可以了
在这里插入图片描述

3.Spring Cloud Gateway 工作流程

在这里插入图片描述
客户端向 springcloud Gateway 发出请求,然后在 Gateway Handler Mapping 中找到与请求相匹配的路由,将其发送到 Gateway Web Handler。Handler 再通过指定的过滤器来将请求发送到我们实际的服务的业务逻辑,然后返回。 过滤器之间用虚线分开是因为过滤器可能会在发送请求之前【pre】或之后【post】执行业务逻辑,对其进行加强或处理。

  • Filter 在 【pre】 类型的过滤器可以做参数校验、权限校验、流量监控、日志输出、协议转换
  • 在【post】 类型的过滤器中可以做响应内容、响应头的修改、日志的输出,流量监控等有着非常重要的作用。

总结:Gateway 的核心逻辑也就是 路由转发 + 执行过滤器链

4.Spring Cloud Gateway 三大核心概念

4.1 Route(路由)(重点 和 eureka 结合做动态路由)

路由信息的组成:由一个 ID、一个目的 URL、一组断言工厂、一组 Filter 组成。
如果路由断言为真,说明请求 URL 和配置路由匹配。

4.2 Predicate(断言)(就是一个返回 bool 的表达式)

Java 8 中的断言函数。 lambda 四大接口 供给形,消费性,函数型,断言型Spring Cloud Gateway 中 的 断 言 函 数 输 入 类 型 是 Spring 5.0 框 架 中 的ServerWebExchange。Spring Cloud Gateway 的断言函数允许开发者去定义匹配来自于Http Request 中的任何信息 比如请求头和参数。

4.3 Filter(过滤) (重点)

一个标准的 Spring WebFilter。 Web 三大组件(servlet listener filter) mvc interceptor

Spring Cloud Gateway 中的 Filter 分为两种类型的 Filter,分别是 Gateway Filter 和Global Filter。

过滤器 Filter 将会对请求和响应进行修改处理。

  • 一个是针对某一个路由(路径)的 filter 对某一个接口做限流
  • 一个是针对全局的 filter token ip 黑名单

5.Nginx 和 Gateway 的区别

  • Nginx 在做路由,负载均衡,限流之前,都有修改 nginx.conf 的配置文件,把需要负载均衡,路由,限流的规则加在里面
    Eg:使用 nginx 做 tomcat 的负载均衡

  • 但是 gateway 不同,gateway 自动的负载均衡和路由,gateway 和 eureka 高度集成,实现自动的路由,和 Ribbon 结合,实现了负载均衡(lb),gateway 也能轻易的实现限流和权限验证。

  • Nginx(c语言)比 gateway(java)的性能高一点。

  • 本质的区别呢?

    • Nginx (更大 服务器级别的)
    • Gateway (项目级别的)

在这里插入图片描述

6.Gateway快速入门

6.1本次访问流程

在这里插入图片描述

6.2新建项目选择依赖(不要选 web)

在这里插入图片描述

6.3修改启动类

在这里插入图片描述

6.4修改配置文件

在这里插入图片描述

6.5启动测试

启动 eureka-server
启动 consumer-user-service
启动 gateway
访问:http://192.168.137.1/info
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/476901
推荐阅读
相关标签
  

闽ICP备14008679号