发布Disruptor 3.0.0

我决定对整个版本的Disruptor放置beta标签感到有点无聊,所以决定将Disruptor 3.0.0发行到全世界。 此版本的最大挑战是清理代码并提出一种更好的算法来处理多个生产者。 如果我很幸运,可以更快。 最初,在此版本中,我走了几个阴暗的小巷,但与2.x版本的区别不大,但是又带来了一些好处。 我本来想进行更多的功能测试并改善文档,但是我可以一直等到那些方面达到100%满意的水平。

改进了对多个生产者的支持

Disruptor的2.x版本真正令人讨厌的问题之一是,它附带了ClaimStrategy的2种实现。 一种是用于线程多于CPU的情况,另一种用于线程少的情况。 这有点难看。 现在,第3版只有一个MultiProducerSequencer(稍后会在Sequencers / ClaimStrategies上提供更多信息),在两种情况下都可以正常运行。 对于无竞争的情况,我们先前的实现大约是18M ops / sec v 15M ops / sec *,但速度较慢,但​​是随着线程数量的增加和CPU数量的增加,扩展性会更好。 去年,我在TechMesh和JAX London上做了一些关于新实现的讨论。 如果您对算法的细节感兴趣,可以观看有关JAX London演讲YouTube视频

没有更多的索赔策略

内部设计和API的主要变化之一是,我摆脱了ClaimStrategy接口。 通过对多生产者用例进行的一些更改,它变得很麻烦。 因此,我删除了它,而是提供了覆盖2个重要用例的Sequencer,SingleProducerSequencer和MultiProducerSequencer的2种实现。 很抱歉,我们不再允许用户在其中插入自己的实现,但是代码变得更加简洁,简单和快捷。

单生产者案例更快

从一个生产者到一个消费者基准测试*,第3版的运行速度约为2.2亿次/秒,而第2版的运行速度为8000万次/秒,这主要是由于一般清理(例如删除ClaimStrategies)和一些小优化的结果。

改进的用于RingBuffer的EventTranslator API

现在,RingBuffer支持的EventTranslator API具有用于传递给EventTranslator实现的1、2、3和Varargs参数的变体。 这意味着不必通过匿名内部类或通过EventTranslator实现中的字段推送值来完成对EventTranslator的输入。 它还使将EventTranslators编写为易于测试的独立单元变得更加容易。 代码隔离FTW!

定序器的批量生产者接口

我不是我们现有的批量生产者界面的忠实拥护者,最初我打算将其转储。 经过一番思考,我将其部分重新添加了。即,它仅在Sequencer上可用。 如果我可以提出一个干净安全的API来公开该功能,则可以稍后将其添加到RingBuffer中。 出于兴趣,我添加了使用批处理接口的原始定序器吞吐量测试。 该测试没有实际工作,只是在线程之间发出信号。 但是,我证明了Disruptor不能做任何有用的事情,在10批中以超过4000000000000 ops / sec的速度进行。 无论如何,这都不是一个有用的基准,但是对于吹牛的权利来说却是个好选择!

特别提及

有一些人帮助将Disruptor从版本2状态升级到版本3:
  • Jason Koch:亲自做了大量JavaDoc。 自合并他的请求请求以来,我一直在努力使其保持最新状态。
  • Dalibor Novak和Danny Yates:Github和Gradle迁移。
  • Adrian Sutton:有关DSL的进一步工作。
  • 马丁·汤普森(Martin Thompson):对于他的许多有用想法,尤其是围绕支持多个生产者的算法。
*所有测试都是在3.40 GHz – YMMV的Intel Core i7-3770(Ivy Bridge)上完成的。

参考:来自Bad Concurrency博客的JCG合作伙伴 Michael Barker 发布了Disruptor 3.0.0

翻译自: https://www.javacodegeeks.com/2013/04/release-of-disruptor-3-0-0.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值