Disruptor 是一个高性能的线程间消息传递库。
简介
要理解 Disruptor 是什么,最好的办法就是把它与人们理解得很透彻、目的很相似的东西进行比较。
在 Disruptor 的情况下,这将是Java的阻塞队列(BlockingQueue)。
与队列一样,Disruptor 的目的是在同一进程的线程之间移动数据(例如消息或事件)。
然而,Disruptor 提供的一些关键特性将它与队列区分开来。它们是:
2018年7月2日大约 7 分钟
Disruptor 是一个高性能的线程间消息传递库。
要理解 Disruptor 是什么,最好的办法就是把它与人们理解得很透彻、目的很相似的东西进行比较。
在 Disruptor 的情况下,这将是Java的阻塞队列(BlockingQueue)。
与队列一样,Disruptor 的目的是在同一进程的线程之间移动数据(例如消息或事件)。
然而,Disruptor 提供的一些关键特性将它与队列区分开来。它们是:
com.lmax
disruptor
3.4.2
Disruptor 是 LMAX一种新型零售金融交易平台, 后台架构的核心组件之一,能够在无锁的情况下实现网络的Queue并发操作, 官方描述: 一个线程里每秒处理6百万订单。
在设计Disruptor时要避免写竞争,让数据更久的留在cache里, 避免JMV 过度GC。
Disruptor的核心是一个circular array,有个cursor,里面有sequence number,数据类型是long。如果不考虑consumer,只有一个producer在写,就是不停的往entry里写东西,然后增加cursor上的sequence number。为了避免cursor里的sequence number和其他variable造作false sharing,disruptor定义了7个long型,并没有给它们赋值,然后再定义cursor。