# 《高性能Polaris网关》通用处理器-第07节:MPMC模式缓冲队列自定义抽象等待Condition的设计和实现
作者:冰河
星球: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)
沉淀,成长,突破,帮助他人,成就自我。
- 本章难度:★★☆☆☆
- 本节重点:对MPMC模式缓冲队列自定义抽象等待Condition进行设计与实现,结合Java并发编程中的Condition接口深入理解Polaris网关MPMC模式队列的Condition设计。重点掌握整体调用链路的设计思路和设计方法,并能够将其灵活应用到自身实际项目中。
在网关的整体架构设计中,MPMC模式下非常重要的一环就是Condition设计,网关中的Condition总体设计思路与并发编程中的Condition设计思路类似。同时,抽象和等待Condition也借鉴了Java并发编程中,Condition的设计思想,大家可以通过抽象自旋和等待Condition的学习来深刻理解Java并发编程中的Condition设计。
# 一、背景
在网关的整个架构设计中,我们引入了处理器,由处理器来驱动过滤器链的执行,也对网关处理器的顶层接口和核心实现类进行了设计和实现。同时,基于disruptor和Holder模式对BatchEvent模式的缓冲队列进行了设计和实现。但对于一个可以实际投入使用的网关来说,只是实现了BatchEvent模式的缓冲队列是远远不够的。所以,我们着手设计和实现MPMC模式的缓冲队列。
在设计和实现MPMC缓冲队列的过程中,已经对MPMC模式缓冲队列的Condition接口和ThreadWait类进行了设计和实现,并且对抽象Condition类和抽象自旋Condition类进行了设计和实现。接下来,就对抽象等待Condition进行设计和实现。
# 二、本节重点
对MPMC模式缓冲队列自定义抽象等待Condition进行设计与实现,结合Java并发编程中的Condition接口深入理解Polaris网关MPMC模式队列的Condition设计。重点掌握整体调用链路的设计思路和设计方法,并能够将其灵活应用到自身实际项目中。
# 三、核心类设计
自定义抽象等待Condition类的类图如图7-1所示。

可以看到,自定义抽象等待Condition主要由AbstractWaitCondition类实现。
注意:这里重点给大家展示通用核心处理器,其他代码的实现细节,大家可以自行到本节对应的源码分支进行查看,这里不再赘述。
# 四、编码实现
本节,就对MPMC模式缓冲队列自定义抽象等待Condition类进行编码实现,其他代码的实现细节,大家可以自行到本节对应的源码分支进行查看,这里不再赘述。
AbstractWaitCondition类是抽象等待Condition,实现了自定义Contidion接口。
源码详见:polaris-processor-api工程下的io.binghe.polaris.processor.api.concurrent.queue.mpmc.condition.AbstractWaitCondition。
# 查看完整文章
加入冰河技术 (opens new window)知识星球,解锁完整技术文章、小册、视频与完整代码