Disruptor
wbj0110
这个作者很懒,什么都没留下…
展开
-
LMAX Disruptor——一个高性能、低延迟且简单的框架(转)
Disruptor是一个用于在线程间通信的高效低延时的消息组件,它像个增强的队列,并且它是让LMAX Exchange跑的如此之快的一个关键创新。关于什么是Disruptor、为何它很重要以及它的工作原理方面的信息都呈爆炸性增长 —— 这些文章很适合开始学习Disruptor,还可跟着LMAX BLOG深入学习。这里还有一份更详细的白皮书。 虽然disruptor模式使用起来很简单,但...原创 2014-01-03 09:25:31 · 295 阅读 · 0 评论 -
Disruptor(无锁并发框架)-发布(转)
假如你生活在另外一个星球,我们最近开源了一套高性能的基于消息传递的开源框架。下面我给大家介绍一下如何将消息通过Ring buffer在无锁的情况下进行处理。在深入介绍之前,可以先快速阅读一下Trish发表的文章,该文章介绍了ring buffer和其工作原理。 这篇文章的要点如下:1.ring buffer是由一个大数组组成的。2.所有ring buffer的“指针”(...原创 2014-01-03 09:26:20 · 232 阅读 · 0 评论 -
如何使用 Disruptor(三)写入 Ringbuffer(转)
本文的 重点 是:不要让 Ring 重叠;如何通知消费者;生产者一端的批处理;以及多个生产者如何协同工作。ProducerBarriersDisruptor 代码 给 消费者 提供了一些接口和辅助类,但是没有给写入 Ring Buffer 的 生产者 提供接口。这是因为除了你需要知道生产者之外,没有别人需要访问它。尽管如此,Ring Buffer 还是与消费端一样提供了一个 Prod...原创 2014-01-03 09:27:30 · 142 阅读 · 0 评论 -
如何使用Disruptor(二)如何从Ringbuffer读取(转)
ConsumerBarrier与消费者这里我要稍微反过来介绍,因为总的来说读取数据这一过程比写数据要容易理解。假设通过一些“魔法”已经把数据写入到Ring Buffer了,怎样从Ring Buffer读出这些数据呢?(好,我开始后悔使用Paint/Gimp 了。尽管这是个购买绘图板的好借口,如果我继续写下去的话… UML界的权威们大概也在诅咒我的名字了。)消费者...原创 2014-01-03 09:31:04 · 192 阅读 · 0 评论 -
剖析Disruptor:为什么会这么快?(一)Ringbuffer的特别之处(转)
最近,我们开源了LMAX Disruptor,它是我们的交易系统吞吐量快(LMAX是一个新型的交易平台,号称能够单线程每秒处理数百万的订单)的关键原因。为什么我们要将其开源?我们意识到对高性能编程领域的一些传统观点,有点不对劲。我们找到了一种更好、更快地在线程间共享数据的方法,如果不公开于业界共享的话,那未免太自私了。同时开源也让我们觉得看起来更酷。从这个站点,你可以下载到一篇解释什么是D...原创 2014-01-03 09:31:33 · 513 阅读 · 0 评论 -
剖析Disruptor:为什么会这么快?(三)揭秘内存屏障(转)
主题是什么?我写这个系列的博客主要目的是解析Disruptor是如何工作的,并深入了解下为什么这样工作。理论上,我应该从可能准备使用disruptor的开发人员的角度来写,以便在代码和技术论文[Disruptor-1.0.pdf]之间搭建一座桥梁。这篇文章提及到了内存屏障,我想弄清楚它们到底是什么,以及它们是如何应用于实践中的。什么是内存屏障?它是一个CPU指令。没错,又一次,我们...原创 2014-01-04 16:55:03 · 301 阅读 · 0 评论 -
剖析Disruptor:为什么会这么快?(三)伪共享(转)
原文地址:http://ifeve.com/false-sharing/缓存系统中是以缓存行(cache line)为单位存储的。缓存行是2的整数幂个连续字节,一般为32-256个字节。最常见的缓存行大小是64个字节。当多线程修改互相独立的变量时,如果这些变量共享同一个缓存行,就会无意中影响彼此的性能,这就是伪共享。缓存行上的写竞争是运行在SMP系统中并行线程实现可伸缩性最重要的限制因素。...原创 2014-01-04 16:56:44 · 129 阅读 · 0 评论 -
剖析Disruptor:为什么会这么快?(二)神奇的缓存行填充(转)
我们经常提到一个短语Mechanical Sympathy,这个短语也是Martin博客的标题(译注:Martin Thompson),Mechanical Sympathy讲的是底层硬件是如何运作的,以及与其协作而非相悖的编程方式。(译注:Martin Thompson很喜欢用Mechanical Sympathy这个短语,这个短语源于赛车驾驶,它反映了驾驶员对于汽车有一种天生的感觉,所...原创 2014-01-04 16:57:46 · 105 阅读 · 0 评论 -
剖析Disruptor:为什么会这么快?(一)锁的缺点(转)
“Disruptor究竟是什么?"。目前我正准备在回答这个问题,但首先回答"为什么它会这么快?"这些问题持续出现,但是我不能没有说它是干什么的就说它为什么会这么快,不能没有说它为什么这样做就说它是什么东西。所以我陷入了一个僵局,一个如何写博客的僵局。要打破这个僵局,我准备以最简单方式回答第一个问题,如果幸运的话,在以后博文里,如果需要解释的话我会重新提回:Disruptor提...原创 2014-01-04 16:58:38 · 356 阅读 · 0 评论