com.lmax.disruptor.Sequence
- 通过顺序递增的序号来编号,管理进行交换的数据(事件);
- 对数据(事件)的处理过程总是沿着序号逐个递增处理;
- 一个Sequence用于跟踪标识某个特定的事件处理者(RingBuffer/Producer/Consumer)的处理进度,Producer有自己的Sequence,Consumer也有自己的Sequence,如果Producer和Consumer有多个,每个Producer和Consumer都有自己的Sequence;
- Sequence可以看成是一个AtomicLong,用于标识进度,只不过其比AtomicLong更强大;
- Sequence还有另外一个目的是防止不同Sequence之间CPU缓存伪共享(False Sharing)的问题,Sequence胖着呢,会把缓存行沾满的,所以不会有伪共享的问题;
com.lmax.disruptor.Sequencer
- Sequencer表示一个对象,其包含了Sequence;
- Sequencer是Disruptor真正的核心;
- 此接口有两个重要实现类
- com.lmax.disruptor.SingleProducerSequencer;
- com.lmax.disruptor.MultiProducerSequencer;
- 主要实现生产者和消费者之间快速、正确地传递数据的并发算法;
com.lmax.disruptor.SequenceBarrier
- 充当了Producer和Consumer之间的平衡的角色,或者说定义了Consumer要如何等着;
- SequenceBarrier还定义了决定Consumer是否还有可处理的事件的逻辑;