
Disruptor
文章平均质量分 93
lifallen
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
深入解析EventPoller:Disruptor的轮询式事件处理机制
Disruptor框架中的EventPoller是一个实验性的基于轮询的事件消费接口,与BatchEventProcessor不同,它允许用户控制执行流程。EventPoller不管理线程,而是通过poll()方法由调用者主动发起事件处理,提供更大的灵活性。它依赖于四个核心字段:数据提供者、序列号管理器、消费进度序列和门控序列。Handler接口定义了事件处理逻辑,其返回值控制是否继续处理。EventPoller适用于需要在现有线程中执行消费逻辑或实现复杂调度策略的场景。原创 2025-08-20 21:47:02 · 680 阅读 · 0 评论 -
Disruptor核心接口EventHandler解析
EventHandlerBase是Disruptor框架内部的基础接口,整合了事件处理的核心生命周期方法(如onEvent、onStart、onShutdown等),供BatchEventProcessor统一调用。用户通常实现其子接口EventHandler(处理业务逻辑)或LifecycleAware(管理资源生命周期)。RewindableEventHandler是特殊变体,通过抛出RewindableException支持批次回滚重试,适用于网络抖动等可恢复错误场景。原创 2025-08-20 21:40:06 · 588 阅读 · 0 评论 -
Disruptor 消费者核心:BatchEventProcessor解析
BatchEventProcessor是Disruptor框架的核心消费者组件,负责从RingBuffer批量获取事件并交由EventHandler处理。其核心机制包括:1)通过sequenceBarrier.waitFor()高效等待可用事件;2)支持maxBatchSize控制的批处理;3)采用原子状态管理确保线程安全;4)提供可扩展的异常处理机制,包括RewindableException重试策略;5)通过Sequence进度跟踪实现无锁并发控制。关键设计在于将事件获取与业务逻辑解耦,通过批处理减少原创 2025-08-07 22:26:31 · 972 阅读 · 0 评论 -
Disruptor核心组件ProcessingSequenceBarrier解析
ProcessingSequenceBarrier是Disruptor框架的核心组件,负责协调生产者与消费者以及消费者之间的处理进度。它通过waitFor()方法确保事件处理器(EventProcessor)在获取可用序号前等待依赖条件满足,并提供alert机制实现优雅中断。该组件整合了等待策略(WaitStrategy)、依赖序号(dependentSequence)和生产者游标(cursorSequence)等关键元素,支持构建复杂的消费者依赖关系图。其设计实现了等待逻辑与策略的分离,确保数据处理的有序原创 2025-08-05 10:45:13 · 840 阅读 · 0 评论 -
Disruptor核心:Sequencer解析
摘要:AbstractSequencer是Disruptor框架中所有序列器的基类,为单生产者和多生产者序列器提供通用功能。它管理消费者序列号(GatingSequences)以确保数据安全,并维护生产者游标(cursor)。SingleProducerSequencer通过无锁设计和缓存优化实现单线程高性能,而MultiProducerSequencer使用原子操作和availableBuffer机制支持多线程安全操作。两者在内存布局上采用不同策略:单生产者使用填充避免伪共享,多生产者依赖对象内存隔离。原创 2025-08-04 16:38:51 · 885 阅读 · 0 评论 -
Disruptor高性能 线程 WaitStrategy解析
Disruptor框架提供了多种等待策略。BlockingWaitStrategy是最保守的策略,使用锁机制降低CPU占用但延迟较高;BusySpinWaitStrategy最激进,通过忙循环实现最低延迟但CPU占用最高;YieldingWaitStrategy和SleepingWaitStrategy采用渐进式策略,在自旋和让步之间平衡;PhasedBackoffWaitStrategy则综合多种策略,根据等待时间自动降级。此外还有LiteBlockingWaitStrategy等优化变体。原创 2025-08-03 16:36:51 · 853 阅读 · 0 评论 -
深入解析 Disruptor 门面类 以及和JCTools比较
Disruptor是一个高性能线程间消息传递库,由LMAX开发,采用环形缓冲区(RingBuffer)和无锁设计实现极低延迟和高吞吐量。其核心优势包括:1) 内存预分配避免GC;2) 通过缓存行填充解决伪共享问题;3) 支持单/多生产者模式;4) 灵活的消费者依赖关系管理。主要组件包括RingBuffer、Sequence、Sequencer和SequenceBarrier等。相比JCTools队列,Disruptor更适用于复杂事件处理场景,支持多播和消费者依赖图构建。原创 2025-08-01 10:05:01 · 762 阅读 · 0 评论 -
Disruptor高性能基石:Sequence并发优化解析
本文分析了Disruptor框架中Sequence类的核心设计思想。该类通过缓存行填充技术(LhsPadding/Value/RhsPadding三层继承结构)防止伪共享问题,确保value字段独占64字节缓存行。同时利用VarHandle实现精细的并发控制:通过releaseFence()保证写入顺序和内存可见性,acquireFence()确保读取顺序,配合CAS和原子操作方法构建高效的无锁同步机制。作为Disruptor协调基础,Sequence用于跟踪生产者游标、消费者进度和门控序列原创 2025-07-31 19:17:31 · 920 阅读 · 0 评论 -
揭秘Disruptor RingBuffer高性能核心机制
RingBuffer是一种高性能的循环数据结构,用于线程间高效数据交换。其核心特点是:1)数据对象预分配避免GC开销;2)通过位运算替代取模实现快速索引;3)采用缓存行填充解决伪共享问题;4)生产者通过两阶段提交(申请槽位+发布事件)写入数据;5)消费者通过SequenceBarrier协调读取进度。RingBuffer将存储职责与并发控制解耦,通过Sequencer接口支持单/多生产者模式,并提供了推/拉两种消费模型。这种设计结合了多种底层优化,使其成为高吞吐、低延迟并发编程的理想选择。原创 2025-07-31 16:01:31 · 1733 阅读 · 0 评论