Spring Cloud Gateway过滤器GlobalFilter详解

这篇具有很好参考价值的文章主要介绍了Spring Cloud Gateway过滤器GlobalFilter详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、过滤器的场景

在springCloud架构中,网关是必不可少的组件,它用于服务路由的转发。对客户端进行屏蔽微服务的具体细节,客户端只需要和网关进行交互。所以网关顾名思义,就是网络的一个关卡。它就是一座城的城门守卫。所以这个守卫就可以做很多工作,比如对来访者身份的认证,盘查等。最后才是放行。所以在微服务开发中,我们可以在这一层做过滤器,这是非常好的场景。

Spring Cloud Gateway过滤器GlobalFilter详解,java,java

二、 GatewayFilter与GlobalFilter

Spring Cloud Gateway 根据作用范围划分为 GatewayFilter 和 GlobalFilter,二者区别如下:

  1. GatewayFilter : 需要通过spring.cloud.routes.filters 配置在具体路由下,只作用在当前路由上或通过spring.cloud.default-filters配置在全局,作用在所有路由上。
  2. GlobalFilter : 不需要在配置文件中配置,作用在所有的路由上,最终通过GatewayFilterAdapter包装成GatewayFilterChain可识别的过滤器,它为请求业务以及路由的URI转换为真实业务服务的请求地址的核心过滤器,不需要配置,系统初始化时加载,并作用在每个路由上。

GlobalFilter应用

@Component
public class TestGlobalFilter implements GlobalFilter, Ordered {

	@Override
	public int getOrder() {
		return 0;
	}

	@Override
	public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {

		ServerHttpRequest request = exchange.getRequest();
		
		ServerHttpResponse response = exchange.getResponse();
		
		//获取url
		String path = request.getURI().getPath();
		//获取请求头中信息
		String source =  request.getHeaders().getFirst("source");
		
		//做一些动作和业务
		
		return chain.filter(exchange);
	}

}

Spring Gateway是一个基于Spring Boot的API网关,用于构建微服务架构的应用程序。它提供了一种简单而灵活的方式来路由和管理API请求,并提供了一些额外的功能,如安全、监控和动态路由。以下是关于Spring Gateway的详细解释:

一、概述

Spring Gateway是Spring Cloud生态系统中的一部分,旨在提供一个易于使用和集成的API网关解决方案。它基于Spring Boot框架构建,使用Java编写,因此可以与现有的Spring应用程序无缝集成。通过使用Spring Gateway,开发人员可以轻松地构建具有高度可扩展性和可维护性的微服务应用程序。

二、核心功能

  1. 路由管理:Spring Gateway的核心功能是路由管理,它允许开发人员定义一系列的路由规则,根据不同的条件将API请求路由到不同的微服务。开发人员可以使用简单的条件表达式或断言来定义路由规则,例如基于URL路径、请求头、参数等进行匹配。
  2. 动态路由:Spring Gateway支持动态路由,这意味着开发人员可以根据运行时的条件动态地更改路由规则。例如,根据用户的身份验证状态或请求的上下文信息来动态决定请求的路由。
  3. 过滤器链:Spring Gateway允许开发人员定义一系列的过滤器链,用于在请求到达目标微服务之前进行预处理和后处理。过滤器链可以用于实现各种功能,如身份验证、授权、限流、日志记录等。
  4. 集成断言:Spring Gateway集成了许多断言,这些断言可用于定义路由规则和过滤器链的条件。常见的断言包括Path、Header、Cookie、Query等。
  5. 响应处理:Spring Gateway支持对API请求的响应进行自定义处理。开发人员可以使用ResponseSpec对象来自定义响应的状态码、头部信息和正文内容。
  6. 健康检查和监控:Spring Gateway提供了开箱即用的健康检查和监控功能,可以轻松地与现有的监控系统集成。通过暴露特定的端点,开发人员可以获取网关的健康状态和性能指标。
  7. 动态配置:Spring Gateway支持动态配置,这意味着开发人员可以在运行时更改路由规则和过滤器链的定义,而无需重启应用程序。这为开发人员提供了更大的灵活性,并加快了开发周期。

三、使用场景文章来源地址https://www.toymoban.com/news/detail-631338.html

  1. API网关:Spring Gateway可以作为API网关使用,将多个微服务暴露为一个统一的入口点。通过路由管理,开发人员可以定义规则将请求路由到正确的微服务,并处理跨多个服务的调用。
  2. 流量管理:Spring Gateway可以帮助开发人员进行流量管理,例如实现限流、熔断、超时控制等功能。通过在过滤器链中实现相应的逻辑,开发人员可以有效地控制流量和防止潜在的性能问题。
  3. 身份验证和授权:在微服务架构中,身份验证和授权是一个重要的考虑因素。Spring Gateway可以与安全框架(如Spring Security)集成,对API请求进行身份验证和授权控制,确保只有合法的用户才能访问特定的微服务。
  4. 集成第三方服务:Spring Gateway可以轻松地与第三方服务集成,例如消息队列、缓存系统等。通过集成这些服务,开发人员可以构建更加强大和灵活的微服务应用程序。
  5. 监控和日志记录:通过与监控系统集成,Spring Gateway可以帮助开发人员进行性能分析和故障排查。它提供了内置的监控端点,可以轻松地收集和报告关键指标,并与日志框架(如Logback或Log4j)集成以记录详细的日志信息。

到了这里,关于Spring Cloud Gateway过滤器GlobalFilter详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Cloud Gateway快速入门(三)——过滤器

    Gateway过滤器是Spring Cloud Gateway提供的一种机制,用于对进入网关的请求和返回进行处理和转换。它可以用于实现各种功能,如请求鉴权、请求转发、请求限流、请求重试等。 网关过滤器是Spring Cloud Gateway提供的一种机制,用于在请求进入网关和响应离开网关时进行一些预处理

    2024年02月04日
    浏览(48)
  • Spring Cloud Gateway 过滤器 StripPrefix=1 的作用

    StripPrefix=1 是 Spring Gateway 中的一个过滤器,它用于去除请求的前缀路径。 当配置了 StripPrefix=1 过滤器后,如果请求的路径中存在前缀路径,该过滤器将会去除指定数量的前缀路径。具体而言,StripPrefix=1 表示去除请求路径的第一个路径片段(即前缀路径)。 例如,假设你的路

    2024年02月04日
    浏览(45)
  • Spring Cloud Gateway内置的断言和过滤器作用

    对应版本3.1.7对应SpringCloud版本2021.0.7 AfterRoutePredicateFactory 作用:判断当请求时间是否在指定配置时间之后 使用方式 使用场景:当上线一新服务时在未来某个时间提供服务 两种配置方式的区别: 第一种便捷方式配置的值是按逗号分隔,再按shortcutFieldOrder方法返回的字段顺序

    2024年02月06日
    浏览(49)
  • Spring-Cloud-Gateway如何自定义路由过滤器?

    遇到这么一个面试题:自定义网关过滤器实现把url中的请求参数放到http的header中传递给微服务。 我们知道网关的一个重要的作用就是路由转发,路由表的配置大概是这个样子: 其中的filters就是配置的路由过滤器,Spring已经内置了31个路由的过滤器,这些过滤器都是 org.spring

    2024年02月16日
    浏览(40)
  • 【Spring Cloud】深入探索统一网关 Gateway 的搭建,断言工厂,过滤器工厂,全局过滤器以及跨域问题

    在微服务架构中,网关是至关重要的组件,具有多重职责,为整个系统提供了一系列关键功能。从下面的微服务结构图中,我们可以明确网关的几项主要作用: 微服务结构图: 请求过滤与安全: 用户的所有请求首先经过网关,这使得网关成为系统的第一道防线。通过对传入

    2024年02月07日
    浏览(57)
  • 从Spring Cloud Gateway过滤器中获取请求体的最优方案

    在spring cloud gateway出现这个问题的时候我们第一反应应该很简单,但是真正实现的时候却有点困难。我看了很多相关的文档,感觉太多都不清晰而且解决不了问题。下面我就把我的方便理解的解决方案写下来。 1. 先重写请求体(过滤器优先级一定要在要获取body之前执行) 这

    2024年02月16日
    浏览(47)
  • SpringCloud - Spring Cloud 之 Gateway网关,Route路由,Predicate 谓词/断言,Filter 过滤器(十三)

    阅读本文前可先参考 ​​​​​​SpringCloud - Spring Cloud根/父项目,开发准备(二)_MinggeQingchun的博客-CSDN博客 SpringCloud - Spring Cloud 之 Gateway网关(十三)_MinggeQingchun的博客-CSDN博客 Web 有三大组件(监听器 过滤器 servlet),Spring Cloud GateWay 最主要的功能就是路由转发,而在定义

    2024年02月14日
    浏览(67)
  • gateway之过滤器(Filter)详解

    在Spring Cloud中,过滤器(Filter)是一种关键的组件,用于在微服务架构中处理和转换传入请求以及传出响应。过滤器位于服务网关或代理中,并通过拦截请求和响应流量来提供各种功能。 过滤器在请求的不同生命周期阶段执行特定的操作,例如鉴权、认证、请求转发、限流、

    2024年02月05日
    浏览(44)
  • 网关 GateWay 的使用详解、路由、过滤器、跨域配置!

    SpringCloudGateway网关是所有微服务的统一入口。 1.1 它的主要作用是: 反向代理(请求的转发) 路由和负载均衡 身份认证和权限控制 对请求限流 1.2 相比于Zuul的优势: SpringCloudGateway基于Spring5中提供的WebFlux,是一种响应式编程的实现,性能更加优越。 Zuul的实现方式比较老式

    2024年02月07日
    浏览(60)
  • 网关 GateWay 的使用详解、路由、过滤器、跨域配置

    SpringCloudGateway网关是所有微服务的统一入口。 1.1 它的主要作用是: 反向代理(请求的转发) 路由和负载均衡 身份认证和权限控制 对请求限流 1.2 相比于Zuul的优势: SpringCloudGateway基于Spring5中提供的WebFlux,是一种响应式编程的实现,性能更加优越。 Zuul的实现方式比较老式

    2024年02月14日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包