无锁并发框架Disruptor

概述

在逛并发编程网的时候,看到了并发框架Disruptor译文这个系列文章。

Martin Fowler在自己网站上写了一篇LMAX架构(译文)的文章,在文章中他介绍了LMAX是一种新型零售金融交易平台,它能够以很低的延迟产生大量交易。这个系统是建立在JVM平台上,其核心是一个业务逻辑处理器,它能够在一个线程里每秒处理6百万订单。业务逻辑处理器完全是运行在内存中,使用事件源驱动方式。业务逻辑处理器的核心是Disruptor

Disruptor它是一个开源的并发框架,能够在无锁的情况下实现网络的Queue并发操作。感兴趣的同学可以去他的官网阅读论文

我对Disruptor为什么能那么快的总结如下:

1. CAS代替锁 

2. Ringbuffer的设计,考虑到CPU L1 Cache的大小(一般64字节),Ringbuffer是数组(不是链表实现),填充到和Cache大小一样(8个long),来避免伪共享(两个线程额外加载各自的long,而导致对方缓存不命中的情况)的无形性能开销 

3. Ringbuffer上消费者和生产者各自维护一个cursor,是volatile,在写volatile变量的时候是CPU指令级别的,会插入一次内存屏障,保证之前的操作先刷入缓存行(CPU Cache),使得其他线程对这个线程的cursor及时可见,另一方面内存屏障避免了JVM的重排序。虽然volatile不好用,而且也有一定开销,但是开销已经非常小,而且它做了一些批量的手段,具体在读写ringbuffer的实现中还有一些别的设计。


更多Disruptor的设计和介绍,希望参考开头给出的那个系列文章,并且参考Disruptor代码实现,我就不做多余的搬运和总结工作了。

Martin Fowler            博客地址
Martin Thompson    博客地址


全文完 :)  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值