微服务架构-服务网关(Gateway)-过滤器原理和生命周期

过滤器原理和生命周期

前面我们学习了Gateway的路由和断言功能,这一节我们来了解下过滤器原理,再挑几个常用的过滤器学习一下。

1、过滤器的工作模式

所有开源框架实现过滤器的模式都是大同小异,通过一种类似职责链的方式,传统的职责链模式中的事件会传递直到有一个处理对象接手,而过滤器和传统的职责链有点不同,它更像是足球队开场握手一样,所有队员一字排开,你要从头到尾依次和所有球员握过手。

Gateway中的过滤器也是一样的模型,他们经过优先级的排列,所有网关调用请求从最高优先级的过滤器开始。一路走到头,直到被最后一个过滤器处理。

2、过滤器的实现方式

在Gateway中实现一个过滤器非常简单,只要实现GatewayFilter接口的默认方法就好了

@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
   
    // 随意发挥
    return chain.filter(exchange);    
}

这里面有两个关键信息:
ServerWebExchange: 这是Spring封装的HTTP request-response交互协议,从中我们可以获取request和response中的各种请求参数,也可以向其中添加内容;

GatewayFilterChain: 它是过滤器的调用链,在方法结束的时候我们需要将exchange对象传入调用链中的下一个对象。

3、过滤器的执行阶段

不同于Spring Cloud中上一代网关组件Zuul里对过滤器的Pre和Post的定义,Gateway是通过Filter中的代码来实现类似Pre和Post的效果。

Pre和Post是指代当前过滤器的执行阶段,Pre是在下一个过滤器之前被执行,Post是在过滤器执行过后再执行,我们在Gateway Filter中也可以同时定义Pre和Post执行逻辑。

3.1、Pre类型

我们就拿 AddResponseHeaderGatewayFilterFactory 举例,它可以向 Response 中添加 Header 信息:

@Over
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值