# 《高性能Polaris网关》通用处理器-第14节:基于自定义SPI扩展实现MPMC模式处理器
作者:冰河
星球: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结合MPMC模式缓冲队列扩展实现MPMC模式处理器。重点掌握整体调用链路的设计思路和设计方法,并能够将其灵活应用到自身实际项目中。
在网关的整体架构设计中,在设计处理器时,我们设计了BatchEvent模式的缓冲队列和MPMC模式的缓冲队列,为后续设计和实现BatchEvent模式的处理器和MPMC模式的处理器打下了良好的基础。目前,已经实现了在BatchEvent模式缓冲队列的基础上基于自定义SPI扩展实现BatchEvent模式处理器。接下来,就在MPMC模式缓冲队列的基础上基于自定义SPI扩展实现MPMC模式处理器。
# 一、背景
在网关的处理器设计中,我们重点设计和实现了通用处理器接口,基于Netty实现了核心处理器的功能,并且基于BatchEvent和MPMC两种模式实现了缓冲队列。在实现缓冲队列时,重点参考了JDK的队列实现,并且在JDK队列实现的基础上,做了进一步优化。所以,各位小伙伴们在学习自定义缓冲队列时,可以结合JDK的Queue接口及其实现类等深入学习和理解。
目前,已经实现了在BatchEvent模式缓冲队列的基础上基于自定义SPI扩展实现BatchEvent模式处理器。接下来,就在MPMC模式缓冲队列的基础上基于自定义SPI扩展实现MPMC模式处理器。
# 二、本节重点
基于自定义SPI结合MPMC模式缓冲队列扩展实现MPMC模式处理器。重点掌握整体调用链路的设计思路和设计方法,并能够将其灵活应用到自身实际项目中。
# 三、核心类设计
基于自定义SPI结合MPMC模式缓冲队列扩展实现MPMC模式处理器的类图如图14-1所示

可以看到,MPMC模式的处理器主要由MpmcProcessor类实现,MpmcProcessor类实现了Processor接口,并实现了Processor接口定义的方法。同时,MpmcProcessor类又会依赖Processor接口,实际上会依赖NettyCoreProcessor类,实际上MpmcProcessor类中同样会对NettyCoreProcessor类的方法进行进一步的封装和处理。
注意:这里重点给大家展示通用核心处理器,其他代码的实现细节,大家可以自行到本节对应的源码分支进行查看,这里不再赘述。
# 四、编码实现
本节,就对MPMC模式的处理器类进行编码实现,其他代码的实现细节,大家可以自行到本节对应的源码分支进行查看,这里不再赘述。
MpmcProcessor类是MPMC模式处理器的核心实现类,主要基于SPI扩展实现并实现了Processor接口。
源码详见:polaris-processor-mpmc工程下的io.binghe.polaris.processor.mpmc.MpmcProcessor。
# 查看完整文章
加入冰河技术 (opens new window)知识星球,解锁完整技术文章、小册、视频与完整代码