# 《高性能Polaris网关》通用过滤器-第01节:网关顶级核心过滤器接口设计

作者:冰河
星球:http://m6z.cn/6aeFbs (opens new window)
博客:https://binghe.gitcode.host (opens new window)
文章汇总:https://binghe.gitcode.host/md/all/all.html (opens new window)
源码获取地址:https://t.zsxq.com/0dhvFs5oR (opens new window)

沉淀,成长,突破,帮助他人,成就自我。

  • 本章难度:★★☆☆☆
  • 本节重点:对高性能Polaris网关的顶级过滤器接口进行设计,从全局角度掌握高性能Polaris网关过滤器与过滤器链的核心设计。重点掌握整体调用链路的设计思路和设计方法,并能够将其灵活应用到自身实际项目中。

大家好,我是冰河~~

在高性能Polaris网关的通用模型设计中,已经完成了网关的请求与响应模型,调用链路,服务定义与实例模型,服务配置缓存模型的设计与实现,也对网关上下文属性顶层接口、抽象类、工厂类和实现类进行了精心的设计。为最终设计通用模型中网关的核心上下文做好了铺垫,同时,也设计了网关上下文顶层抽象接口和抽象类,最终实现了网关的核心上下文。可以这么说,网关的通用模型设计篇,是高性能Polaris网关的核心基石。

# 一、前言

对于高性能Poalris网关来说,我们已经完成了整个通用模型的设计,为整个Polaris网关后续的设计和研发奠定了坚实的基础。相信小伙伴们对网关并不模型,一个网关本质上最基础和最核心的功能就是接收客户端请求,根据一定的策略将请求转发至后端服务,随后接收后端服务的响应结果,再将结果响应给客户端。在此基础上,网关可以实现各种策略功能,例如:限流、熔断、降级、重试、负载均衡、流控、灰度、蓝绿发布等等一系列的功能。

其中,在网关的核心链路设计中,我们第一印象就是使用责任链设计模式。没错,在高性能Polaris网关的设计中,我们会采用责任链设计模式来实现过滤器链和拦截器链。

# 二、本节诉求

从本节开始,我们就正式进入高性能Polaris网关的通用过滤器篇章,在通用过滤器篇章,我们会设计和实现高性能Polaris网关的通用过滤器和过滤器链。本节,主要是对高性能Polaris网关的顶级过滤器接口进行设计,从全局角度掌握高性能Polaris网关过滤器与过滤器链的核心设计。让大家重点掌握整体调用链路的设计思路和设计方法,并能够将其灵活应用到自身实际项目中。

# 三、核心接口设计

本节,我们对网关的过滤器进行了高度抽样,设计了网关过滤器的最顶层接口,在顶层接口中,我们只会设计通用的、普适度高的方法。如下所示。


可以看到,网关的顶级核心过滤器接口是一个泛型接口,接口中的方法参数也都带有泛型参数,在网关的顶级核心过滤器接口中,主要设计了如下方法:

  • check()方法:校验是否执行当前过滤器。
  • execute()方法:触发下一个过滤器的执行。
  • executeEntry()方法:执行某个对象的方法。
  • initFilter():初始化方法,不做强制实现处理,可以交由子接口或者实现类进行实现。
  • destroyFilter():销毁方法,不做强制实现处理,可以交由子接口或者实现类进行实现。
  • refreshFilter():刷新方法,不做强制实现处理,可以交由子接口或者实现类进行实现。

# 四、编码实现

# 查看完整文章

加入冰河技术 (opens new window)知识星球,解锁完整技术文章、小册、视频与完整代码