热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Gateway全局过滤器

Gateway全局过滤器文章目录Gateway全局过滤器概述组合使用GlobalFilter和GatewayFilterLoadBalancerClientReactiveLoad

Gateway全局过滤器


文章目录

  • Gateway全局过滤器
    • 概述
    • 组合使用GlobalFilter和GatewayFilter
    • LoadBalancerClient
    • ReactiveLoadBalancerClientFilter


概述

全局过滤器GlobalFilte 接口与 GatewayFilter 具有相同的签名,这些特定的过滤器有条件的应用到所有的路由上。


https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.0.RC1/reference/html/#global-filters



组合使用GlobalFilter和GatewayFilter

当请求进来的时候,过滤器Web处理器将会将所有的GlobalFilter 实例和所有特定的GatewayFilter 路由实例添加到过滤器filter链中,该组合的过滤器按org.springframework.core.Ordered接口排序,通过实现getOrder()方法来设置。

由于Spring Cloud Gateway 区分了过滤器逻辑执行器的"前"阶段和"后"阶段,因此优先级最高的过滤器在pre 阶段中处于第一个,而在post 阶段处于最后一个。

CustomGlobalFilter.java

public class CustomGlobalFilter implements GlobalFilter,Ordered {&#64;Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {return chain.filter(exchange);}&#64;Overridepublic int getOrder() {return 0;}
}

注意&#xff1a;数值越小&#xff0c;越靠前执行。


LoadBalancerClient

LoadBalancerClientFilter在交换属性查找一个URI ServerWebExchangeUtils.GATEWAY_REQUEST_URL_ATTR。如果url有一个lb方案&#xff08;即lb://myservice&#xff09;&#xff0c;它将使用Spring Cloud LoadBalancerClient将名称&#xff08;myservice在前面的示例中&#xff09;解析为实际的主机和端口&#xff0c;并在同一属性中替换URI。未经修改的原始url将附加到ServerWebExchangeUtils.GATEWAY_ORIGINAL_REQUEST_URL_ATTR属性中的列表。过滤器还将在ServerWebExchangeUtils.GATEWAY_SCHEME_PREFIX_ATTR属性中查找是否相等lb&#xff0c;然后应用相同的规则

application.yaml

spring:cloud:gateway:routes:- id: myRouteuri: lb://servicepredicates:- Path&#61;/service/**

上面的介绍难以理解&#xff0c;其实通过代码可以看出&#xff0c;就是使用lb 来指定是否使用ribbon负载均衡。可以发现&#xff0c;这里Gateway也是使用ribbon来实现负载均衡的。

默认情况下&#xff0c;当一个服务示例不能被LoadBalancer发现,将会返回503, 我们可以配置spring.cloud.gateway.loadbalancer.use404 &#61; false 来使得Gateway返回404.

我们建议使用ReactiveLoadBalancerClientFilter。您可以通过设置spring.cloud.loadbalancer.ribbon.enabled的值为false来使用ReactiveLoadBalancerClientFilter.


ReactiveLoadBalancerClientFilter

如上&#xff0c;见识使用这个&#xff0c;只需要将spring.cloud.loadbalancer.ribbon.enabled设置为false就可以了。


推荐阅读
author-avatar
大叔丶你好哇塞
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有