高性能的异步处理框架Disruptor(一)——认识RingBuffer与Disruptor

Disruptor是一个由LMAX创建的高性能异步处理框架,其核心是RingBuffer数据结构。RingBuffer是一种无尾指针的环形缓冲区,通过序号管理和"与"操作快速定位元素,避免了竞争条件,从而实现高效率的消息传递。Disruptor适用于多线程环境中的任务工作流,确保数据的有序处理,且不依赖传统的CAS锁,提供更优的性能。
摘要由CSDN通过智能技术生成

Disruptor是什么

Disruptor 基于线程内通信框架,用于线程里共享数据。也是一个高性能的异步处理框架。

LMAX 创建Disruptor 作为可靠消息架构的一部分并将它 设计成一种在不同组件中共享数据非常快的方法。

在这种最简单的情况下,Disruptor 可以用来代替队列作为在不同的线程传递消息的工具

可以认为是最快的消息框架(轻量的JMS),也可以认为是一个观察者模式的实现,或者事件监听模式的实现。它允许开发者使用多线程技术去创建基于任务的工作流。Disruptor 能用来并行创建任务,同时保证多个处理过程的有序性。Disruptor 的目标就是快,高效。

ArrayBlockingQueue也是一个非常优秀的有界队列实现,但是低延迟队列Disruptor与之相比,性能更加的优秀。

Disruptor的核心——RingBuffer

Ringbuffer数据结构是整个模式(Disruptor)的核心,但是Disruptor对Ringbuffer的访问控制策略才是真正的关键点所在。

在数据结构的角度上来看,Ringbuffer是一个线性表(顺序式存储,首尾相接),为简单理解可以把它想想成一个环。可以把它用做在不同上下文(线程)间传递数据的 buffer。

基本来说,RingBuffer中的每个数据节点Entry都拥有一个序号,同时RingBuffer也维护了一个指向数组中下一个可用的元素的指针cursor(也可以理解指向最后一个填充了数据的元素)。随着你不停地填充这个 buffer(可能也会有相应的读取),数据节点Entry序号会一直增长,直到绕过这个环并覆盖掉之前的数据,如此循环。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值