# 《高性能Polaris网关》通用处理器-第04节:MPMC模式缓冲队列Condition接口和ThreadWait类的设计与实现

作者:冰河
星球: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的接口和ThreadWait类进行设计与实现,结合Java并发编程中的Condition接口深入理解Polaris网关MPMC模式队列的Condition接口和ThreadWait类。重点掌握整体调用链路的设计思路和设计方法,并能够将其灵活应用到自身实际项目中。

在网关处理器的缓冲队列中,已经基于disruptor设计和实现了BatchEvent模式的缓冲队列。对于一个可以实际投入使用的网关来说,只是实现了BatchEvent模式的缓冲队列是远远不够的。接下来,我们就开始着手实现MPMC模式的缓冲队列。

# 一、背景

在网关的整个架构设计中,我们引入了处理器,由处理器来驱动过滤器链的执行,也对网关处理器的顶层接口和核心实现类进行了设计和实现。同时,基于disruptor和Holder模式对BatchEvent模式的缓冲队列进行了设计和实现。但对于一个可以实际投入使用的网关来说,只是实现了BatchEvent模式的缓冲队列是远远不够的。接下来,我们就开始着手实现MPMC模式的缓冲队列。

所谓的MPMC模式,就是Multi Producer Multi Consumer模式,也就是多生产者多消费者模式,所以,接下来,我们就开始实现多生产者多消费者模式的缓冲队列,首先,对MPMC模式缓冲队列的Condition接口和ThreadWait类进行设计实现。

# 二、本节诉求

对MPMC模式缓冲队列Condition的接口和ThreadWait类进行设计与实现,结合Java并发编程中的Condition接口深入理解Polaris网关MPMC模式队列的Condition接口和ThreadWait类。重点掌握整体调用链路的设计思路和设计方法,并能够将其灵活应用到自身实际项目中。

# 三、核心类设计

MPMC模式缓冲队列Condition接口和ThreadWait类如图4-1所示。


可以看到,自定义的Condition接口和ThreadWait类的类图比较简单,大家可以类比Java并发编程库里的Condition进行学习。另外,关于并发编程相关知识,可参考冰河出版的《深入理解高并发编程:核心原理与案例实战》、《深入理解高并发编程:JDK核心技术》、《实战高并发设计模式》。

注意:这里重点给大家展示通用核心处理器,其他代码的实现细节,大家可以自行到本节对应的源码分支进行查看,这里不再赘述。

# 四、编码实现

本节,就对MPMC模式缓冲队列Condition的接口和ThreadWait类进行编码实现,其他代码的实现细节,大家可以自行到本节对应的源码分支进行查看,这里不再赘述。

(1)实现Condition接口

Condition接口是MPMC模式缓冲队列Condition条件的核心接口,在Condition接口中主要定义了一些缓冲队列的条件方法。

源码详见:polaris-processor-api工程下的io.binghe.polaris.processor.api.concurrent.queue.mpmc.condition.Condition。

# 查看完整文章

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