# 《高性能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)
沉淀,成长,突破,帮助他人,成就自我。
- 本章难度:★★☆☆☆
- 本节重点:对网关的通用核心处理器进行进行设计和实现,从全局角度掌握通用核心处理器的设计思想。重点掌握整体调用链路的设计思路和设计方法,并能够将其灵活应用到自身实际项目中。
在前面的文章中,我们已经通过自定义SPI对网关内置的各种过滤器进行了设计和实现,那这些过滤器是如何执行的呢?在高性能网关的设计中,过滤器的执行是由处理器来驱动的。接下来,就对网关的处理器进行设计和实现。
# 一、前言
在之前的文章中,我们已经对网关的顶级核心过滤器接口进行了设计和实现,也进一步封装了请求和响应的模型,基本上完成了过滤器的整体代码框架,并对网关过滤器的两大顶级抽象类进行了设计和实现,也对网关通用过滤器链进行了设计和实现。随后,对网关过滤器通用工厂类进行了设计和实现。
为了进一步提升过滤器的扩展性,对过滤器进行优化,使其适配自定义SPI。并且已经基于自定义SPI实现了负载均衡过滤器、超时配置过滤器、HTTP过滤器、RPC过滤器、指标分析过滤器、Mock过滤器、灰度过滤器。
截止到目前,我们已经通过SPI对网关内置的各种过滤器进行了设计实现。接下来,我们就要考虑如何驱动这些过滤器的执行。为此,在网关的整个架构设计中,我们引入了处理器,由处理器来驱动过滤器的执行。
注意:网关通过SPI内置了各种过滤器的实现,如果网关内置的过滤器不满足需求,大家也可以通过SPI扩展自己特定场景的过滤器。
# 二、本节诉求
对网关的通用核心处理器进行进行设计和实现,从全局角度掌握通用核心处理器的设计思想。重点掌握整体调用链路的设计思路和设计方法,并能够将其灵活应用到自身实际项目中。
# 三、核心类设计
本节,对通用核心处理器的功能进行设计和封装实现,整体类图如图1-1所示。

从上图可以看出,在网关内置的处理器中,定义了Processor接口,Processor接口是整个处理器的顶层接口,主要定义了执行方法process(),启动处理器的方法start()和停止处理器的方法shutdown()。
处理器的核心实现类是NettyCoreProcessor,从类名也可以看出,整体处理器是基于Netty实现的。在NettyCoreProcessor类中,定义了polarisFilterFactory对象,会在实现Processor接口的process()方法中,通过调用polarisFilterFactory的executeFilterChain()方法驱动过滤器的执行。
注意:这里重点给大家展示通用核心处理器,其他代码的实现细节,大家可以自行到本节对应的源码分支进行查看,这里不再赘述。
# 四、编码实现
本节,就对网关内置的通用处理器的核心类进行实现,其他代码的实现细节,大家可以自行到本节对应的源码分支进行查看,这里不再赘述。
(1)定义Processor接口
Processor接口是网关内置处理器的顶层接口,定义了处理器的核心执行方法。
源码详见:polaris-processor工程下的io.binghe.polaris.processor.Processor。
# 查看完整文章
加入冰河技术 (opens new window)知识星球,解锁完整技术文章、小册、视频与完整代码