作者:wjw0000 | 来源:互联网 | 2024-10-26 11:14
在服务网关中实现过滤器,只需继承抽象类并实现其定义的四个关键方法,即可对请求进行拦截和处理。过滤器具有两大核心功能:一是路由功能,负责将外部请求转发至具体的微服务实例,实现外部访问的统一入口;二是过滤功能,用于对请求进行预处理和后处理,增强系统的安全性和性能。通过合理配置和优化过滤器,可以显著提升服务网关的整体效能。
在服务网关中定义过滤器,只需要继承ZuulFilter
抽象类,实现其定义的四个抽象函数,就可对请求进行拦截与过滤
过滤器两个功能:
- 路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础
- 过滤器功能则负责对请求的处理过程进行预干预,是实现请求校验、服务聚合等功能的基础
请求生命周期
- pre :在请求路由到目标之前执行。一般用于请求认证、负载均衡和日志记录
- route :在路由请求时候被调用,处理目标请求
- post :在route和error过滤器之后被调用,一般会在此步骤添加响应头、收集统计和性能数据等
- error :处理请求时发生错误时被调用
第一阶段:pre类型的过滤器处理
第二个阶段:routing,路由请求转发阶段
请求将会被routing类型过滤器处理,这里的具体处理内容就是将外部请求转发到具体服务实例上去的过程
当服务实例将请求结果都返回之后,routing阶段完成
第三个阶段:post,此时请求将会被post类型的过滤器进行处理
这些过滤器在处理的时候不仅可以获取到请求信息,还能获取到服务实例的返回信息,
所以在post类型的过滤器中,我们可以对处理结果进行一些加工或转换等内容。
一个特殊的阶段:error,该阶段只有在上述三个阶段中发生异常的时候才会触发
但是它的最后流向还是post类型的过滤器,因为它需要通过post过滤器将最终结果返回给请求客户端
ZuulFilter