Disruptor

disruptor介绍 Martion Foler 在自己网站上写了一篇LMAX文章,LMAX是一种新型零售金融交易平台,能够以很低的延迟产生大量的交易。这个系统是建立在jvm平台,核心是一个业务逻辑处理器,能够在一个线程里美妙处理6百万订单。业务逻辑完全是运行在内存中,使用事件源驱动方式。业务所及处理器的核心是disruptor disruptir 是一个开源并发框架,能够在无馊的情况下实现网络的queue并发操作 生产端将消息传入disruptor,disruptor主动将消息传送给消费端,而不是消费端来取数据。可以将disruptor理解为一个高效的队列。并且disruptor做了大量的缓存和无锁的并行计算。不是说disruptor能一个线程1秒内能消费6百万,而是能将6百万消息发送给消费者 Disruptor是一个高性能的异步处理框架,或者认为是最快的消息框架(轻量的JMS),也可以认为是一个观察者模式的实现。或者事件监听模式的实现。

在disruptor中,实现hello world 第一: 简历一个event类 第二: 简历一个工厂event类,用于创建event类实力对象 第三:需要有一个监听事件类,用于处理数据Event类 第四:测试:实例化disruptor实例,配置一系列参数。然后对disruptor绑定监听事件类,接受并处理数据 第五:在disruptor中,真正存储数据的核心叫做RingBuffer,我们通过Disruptor实例拿到他,然后把数据生产处理,把数据加入RingBuffer的实例对象中即可。 disruptor实例化的几个参数含义: 1工厂类对象用于创建继承Event的类对象, 2缓冲区大小(一定是2的n次方), 3线程池,进行disruptr内部数据接收处理调度, 4 ProducerType.SINGLE 和 ProducerType.MULTI 指定当前生产者是只有一个还是多个 5 一种策略,当生产端和消费端速度不对等时,处理的策略 - BlockingWaitsetrategy 最低效的策略,但其对cpu小号最小,并且在各种不同部署环境中能提供更加一致的性能表现

  •   sleepIngWaitsetrategy   性能表现和BlockingWaitsetrategy差不多,对cpu小号也雷士,但其对生产者线程的影响最小,适用于异步日志类似的场景
    
  •   YieldingWaitstrategy 性能最好的,适用于低延迟系统,在性能要求极高且事件处理线程数小于cpu逻辑核心数的场景中,推荐使用
    

生产者 1: ringBuffer 的next的方法获取下一个可放数据的槽,即索引 2: 通过上面的索引,get取出一个空的事件填充 3:获取要通过事件传递的业务数据 调用event的业务数据方法,如setValue 4:发布事件(publish方法必须在finnally中,发布的是索引位置) disruptor详细说明与使用 RingBuffer 是disruptor最主要的组件,在3.0后就开始仅仅负责存储和更新dis中流通的数据。 sequence disruptor使用sequence表示一个特殊的处理的序号。和disruptor一样,每个消费者EventProcessor都维持一个sequnce。大部分的并发代码以来这些sequence值的运转,因此sequence支持多种当前为AtomicLong类的特性 sequencer:这是disruptor真正的核心,实现了这个借口的两种生产者俊实现了所有的并发方法,为了在生产者和消费者之间惊醒准确快速的数据传递 sequenceBarrier 是有sequencer生成的,并且包含了已经发布的的swquence的引用,这些sequence源于sequenceer和一些对的消费者的sequence。它包含了决定是否共消费者来消费的event的逻辑。 实际就是告诉哪个环形队列哪个位置的数据已经发布了,等待消费。然后通过sequenceBarrier的算法来协调消费和生成的关系策略

disruptor应用

转载于:https://my.oschina.net/u/3357720/blog/1926126

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值