Disruptor框架入门
来源:互联网 发布:淘宝下载到桌面 编辑:程序博客网 时间:2024/06/04 18:01
Disruptor是LMAX出品的一个高效的无锁并发框架,它高效核心在于其无锁队列RingBuffer的独特设计。
1.Disruptor是什么?
Disruptor是一个高性能的异步处理框架,或者可以认为是最快的消息框架(轻量的JMS),也可以认为是一个观察者模式的实现,或者事件监听模式的实现。
Disruptor 比传统的基于锁的消息框架的优势在于:它是无锁的、CPU友好;它不会清除缓存中的数据,只会覆盖,降低了垃圾回收机制启动的频率。
2.Disruptor的原理
Disruptor提供的编程模型:它有一个或多个作者和读者。有一排从旧到新的条目(从左到右)。作者可以在右侧新增条目。每个读者按从左到右的顺序读取条目。读者显然不能跳过作者先读取。条目不能被删除。我用“读者”代替“消费者”来避免让人以为条目会被消费掉。不过我们知道最后一个读者左边的条目是没有用处的。通常读者可以并发地独立地读取条目。
Disruptor的主要目标就是性能。Disruptor使用一个预分配的条目环。这个环足够大,但是有上限,从而不会超出容量。如果环满了,作者会一直等待,直到最慢的作者前进而腾出空间。条目对象是预分配的并且会一直存在,以减少GC的消耗。我们不会增加新的条目对象或是删除旧的,相反的,作者会请求一个已存在的条目,填充它的字段,然后通知读者。
3.Disruptor为什么快?
不使用锁。通过内存屏障和原子性的CAS操作替换锁。
缓存基于数组而不是链表,用位运算替代求模。缓存的长度总是2的n次方,这样可以用位运算
i & (length - 1)
替代i % length
。预分配缓存对象,通过更新缓存里对象的属性而不是删除对象来减少垃圾回收。
0 0
- Disruptor框架入门
- Disruptor框架入门
- Disruptor框架入门
- Disruptor并发框架入门
- Disruptor 无锁同步框架入门
- Disruptor入门
- Disruptor入门
- Disruptor入门
- Disruptor入门
- Disruptor入门
- Disruptor入门
- Disruptor入门
- 架构师入门笔记七 并发框架Disruptor快速入门
- 架构师入门笔记八 并发框架Disruptor场景应用
- 并发框架Disruptor译文
- 并发框架Disruptor译文
- Disruptor 框架源码分析
- disruptor - 并发编程框架
- 初学JavaWeb需要知道的目录结构与配置
- HDU 1342 Lotto(DFS)
- 时间转换
- 树莓派FTP文件传输小记
- mybaits 多个参数传入用#{0,1,....}或者@Param注释
- Disruptor框架入门
- Oracle的自动增长序列时提示 : ORA-02287: 此处不允许序号
- Servlet学习笔记
- iOS 异步图片加载优化与常用开源库分析
- ubuntu14.04不能上网“没有可用的网络设备”
- 读写锁ReadWriteLock
- 一种高效无锁内存队列的实现
- PL/SQL 游标
- mybatis 查询参数为list、数组、map的情况