disruptor总结

Disruptor是一个用于在线程间通信的高效、低延时的消息组件,也想是一个增强的队列,我们可以认为它是最快的消息框架。

也可以认为它是一个观察者模式的实现,或者事件监听模式的实现。 

1、在Disruptor中,我们想实现Helloworld需要如下几步骤

  1. 建立一个Event类
  2. 建立一个工厂Event类,用于创建Event类实例对象
  3. 需要有一个监听事件类,用于处理数据(Event类),通过实现EventHandler或者WorkHandler
  4. 我们需要进行测试代码编写。实例化Disruptor实例,配置一系列参数。然后我们对Disruptor实例绑定监听事件类,接收并处理数据。
  5. 在Disruptor中,真正存储数据的核心叫做RingBuffer,我们通过Disruptor实例拿到它,然后把数据生产出来,把数据加入到RingBuffer的实例对象中即可。

2、对于单个生产者来说可以直接通过如下方式获取RingBuffer

private final RingBuffer<ValueEvent> ringBuffer = RingBuffer.createSingleProducer(ValueEvent.EVENT_FACTORY, BUFFER_SIZE, new YieldingWaitStrategy());

 

//创建disruptor
Disruptor<LongEvent> disruptor = new Disruptor<LongEvent>(factory, ringBufferSize, executor, ProducerType.SINGLE, new YieldingWaitStrategy());

在并发系统中提高性能最好的方式之一就是单一写者原则,对Disruptor也是适用的。如果在你的代码中仅仅有一个事件生产者,那么可以设置为单一生产者模式来提高系统的性能。

4、应用场景除了是最快的消息框架,业务场景中还可以处理复杂业务,如“四边形”和“六边形”

5、各组件介绍

RingBuffer:负责对通过 Disruptor 进行交换的数据(事件)进行存储和更新。
EventHandler:Disruptor 定义的事件处理接口,由用户实现,用于处理事件,是 Consumer 的真正实现。
Sequencer:Sequencer 是 Disruptor 的真正核心,定义在生产者和消费者之间快速、正确地传递数据的并发算法。
Event:生产者和消费者之间进行交换的数据类型被称为事件(Event)
Producer:泛指调用 Disruptor 发布事件的用户代码
WaitStrategy:定义 Consumer 进行等待下一个事件的策略。
EventProcessor:持有特定消费者(Consumer)的 Sequence,并提供用于调用事件处理实现的事件循环(Event Loop)。

参考文章:Disruptor入门

LMAX Disruptor——一个高性能、低延迟且简单的框架

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值