# 《高性能Polaris网关》通用过滤器-第05节:网关过滤器通用工厂类的设计与实现

作者:冰河
星球: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构建请求与响应信息的核心流程和代码设计。重点掌握整体调用链路的设计思路和设计方法,并能够将其灵活应用到自身实际项目中。

在高性能网关中,会采用责任链模式将一个个的过滤器连接成一条过滤器链,网关接收到请求时,会按照一定的规则,依次执行过滤器链中的每个过滤器,最终将请求转发到后端服务。在整体设计上,过滤器会分为:正常过滤器、异常和错误过滤器、Mock过滤器和灰度过滤器。那如何组织和编排这些过滤器的执行顺序呢?可以统一设计和实现过滤器的通用工厂类来实现这一功能。

# 一、前言

在之前的文章中,我们已经对网关的顶级核心过滤器接口进行了设计和实现,也进一步封装了请求和响应的模型,基本上完成了过滤器的整体代码框架,并对网关过滤器的两大顶级抽象类进行了设计和实现。同时,也对网关通用过滤器链进行了设计和实现。接下来,就是如何组织和编排过滤器链中的过滤器,使这些过滤器按照一定的规则和顺序执行。

# 二、本节诉求

对高性能Polaris网关的过滤器通用工厂类进行设计和实现,从全局角度掌握高性能Polaris构建请求与响应信息的核心流程和代码设计。重点掌握整体调用链路的设计思路和设计方法,并能够将其灵活应用到自身实际项目中。

# 三、核心类设计

本节,对网关的过滤器通用工厂类进行设计和封装实现,整体类图如图5-1所示。


可以看到,整体实现的类结构图还是比较简单的,本节,在上一节的基础上新增了PolarisFilterFactory接口、AbstractFilterFactory抽象类和SingleFilterFactory类。PolarisFilterFactory接口就是网关过滤器工厂的顶级接口,AbstractFilterFactory抽象类就是网关过滤器工厂的顶级抽象类,会实现PolarisFilterFactory接口。SingleFilterFactory类是一个单例类,后续组织和编排过滤器时主要使用的是SingleFilterFactory类实现对应的功能,同时,SingleFilterFactory类会继承AbstractFilterFactory抽象类。

# 四、编码实现

本节,重点给大家展示过滤器通用工厂类的设计和编码实现,其他代码的实现细节,大家可以自行到本节对应的源码分支进行查看,这里不再赘述。

(1)实现PolarisFilterFactory接口

PolarisFilterFactory接口是网关过滤器工厂的顶级接口,主要定义了构建过滤器链、获取过滤器和执行过滤器的方法。同时,执行过滤器的方法又分为执行正常过滤器、执行异常过滤器、执行Mock过滤器和执行灰度过滤器等方法。

源码详见:polaris-filter工程下的io.binghe.polaris.filter.factory.PolarisFilterFactory。

# 查看完整文章

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