下面看一下多生产多消费者的模式,下面的代码是模拟100个生产者,每个生产者生产100个事件,然后有3个消费者,同时进行消费,共消费1W个事件,

下面看一下代码:

无锁并行框架多生产者多消费者模型

 这边new出了3个消费者,并把消费者数组放入workPool这个消息队列中,然后在RingBuffer中获取事件,进行消费:

看一下event类:Order

无锁并行框架多生产者多消费者模型

下面看一下生产者:

无锁并行框架多生产者多消费者模型

把数据生产完成后,放入ringBuffer,然后进行事件发布

在看一下消费者:

无锁并行框架多生产者多消费者模型

通过一个原子类进行消费的记录查看哪个消费者消费了多少个事件,

查看一下打印的结果:

无锁并行框架多生产者多消费者模型

看一下最后的打印结果:

3个消费者,总共消费1000个事件,中间的协调通过SequenceBarrier进行消费协调;这种实现模式就是多消费者多生产者。需要注意的是RingBuffer和disruptor使用的范围,RingBuffer适合使用在不复杂消费模型上面,disruptor适合使用在复杂消费模型上,例如,菱形,顺序,六边形等。

 

相关文章:

  • 2021-10-14
  • 2022-12-23
  • 2022-12-23
  • 2021-07-05
  • 2021-05-20
  • 2022-01-17
  • 2022-01-29
猜你喜欢
  • 2021-11-12
  • 2022-12-23
  • 2021-09-18
  • 2021-10-26
  • 2022-12-23
  • 2021-12-09
  • 2021-09-19
相关资源
相似解决方案