`
xylong
  • 浏览: 191869 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

disruptor基本使用与实战

阅读更多

今天又忙里偷闲,看了下jdon框架,忍不住clone了代码,细细看了下aysnc部分的代码,主要是对disruptor的一个实践,和手中一个公司的项目部分代码很相似,看来得去看看disruptor官方提供的Test部分代码了,提供了样本吧,且不计较,大家也可以去看看。

 

 

 

 

看看这里的编码方式,看起来比较舒服。

 

这里引用别的同学的一段总结

 

 RingBuffer当然是我们的核心存储结构啦,创建一个RingBuffer的时候需要提供一个Sequencer对象,Sequencer是用来协调生产者和消费者对于RingBuffer的使用的,具体包括:保证生产者发布到RingBuffer中的消息是严格递增顺序的,保证生产者不覆盖未被消费的消息。Sequencer的实现并不复杂,其实就是追踪表示各个消费者消费状态的Sequence对象与自身的cursor(Sequence)之间的关系。

对于一个生产者来说,主要是使用的是Sequencer的next()和publish()方法,next方法是申请空间,publish是发布消息,申请和发布都包括单条和批量两种类型。
下面来看消费者,在disruptor中,消费者就是一个EventProcessor, 其中主要包含两个成员,一个是SequenceBarrier, 一个是EventHandler。SequenceBarrier则用来表示该消费者对生产者和其它消费者的依赖关系,例如如果消费者1的消费数据必须要被消费者2处理过才可以,那么需要将表示消费者1的sequence加入到消费者2的sequenceBarrier中。。EventHandler的意义很明显,就是消息事件的处理函数。从EventHandler我们也可以看出EventProcessor是一个actor角色

 

 

 

 

https://github.com/runc    后面找个时间把代码放上去,目前还空空如也!

分享到:
评论

相关推荐

    15、CPU缓存架构详解&高性能内存队列Disruptor实战

    Disruptor通过使用多个生产者和消费者共享的序列号,实现了低延迟的并发操作。它采用“生产者—发布者”和“消费者—订阅者”的模式,使得数据一旦被生产者写入,消费者就可以立即读取,无需等待其他操作完成。这种...

    Disruptor学习.7z

    2. **实战演练**:通过提供的示例代码,了解如何创建和配置Disruptor,以及如何在多线程环境中使用它。 3. **性能测试**:对比使用Disruptor前后的性能,理解其在高并发场景下的优势。 4. **深入研究**:学习...

    54丨算法实战(三):剖析高性能队列Disruptor背后的数据结构和算法1

    《剖析高性能队列Disruptor背后的数据结构与算法》 在计算机科学中,队列作为一种基本的数据结构,因其“先进先出”的特性在各种场景中得到了广泛应用。Disruptor,作为一个高性能的消息队列,以其出色的性能表现...

    大学计算机基础PPt

    【大学计算机基础PPT】是针对初学者设计的教育材料,旨在教授如何使用Microsoft PowerPoint 2000创建和编辑演示文稿。本课件详细介绍了PowerPoint的基础知识和操作步骤,适合大学计算机课程的教学使用。 1. **...

    华为面试题1.rar

    4. **结构体与联合体**:如何定义和使用结构体和联合体,以及它们在内存中的布局。 5. **预处理器和宏**:预处理器的功能,如宏定义、条件编译等,以及它们的优缺点。 6. **函数**:函数的声明和定义,递归函数,...

    无锁队列

    通过以上的学习,你将能够掌握无锁队列的基本原理和应用场景,提升你的并发编程能力。在《Java并发编程实战》等书籍中,也可以找到更多关于无锁数据结构的深入讨论。在实践中,可以尝试将无锁队列应用到自己的项目中...

    13、线程池ForkJoinPool实战及其工作原理分析(1).pdf

    - **任务的分割与合并**: 在`ForkJoinPool`中,任务通过`ForkJoinTask`接口表示,并可以通过`ForkJoinPool`的`invoke()`方法提交。当一个任务被提交时,它会被分解成更小的任务,直到达到一定的阈值(通常称为基础...

    开涛高可用高并发-亿级流量核心技术

    15.9 Disruptor+Redis队列 303 15.9.1 简介 303 15.9.2 XML配置 304 15.9.3 EventWorker 305 15.9.4 EventPublishThread 307 15.9.5 EventHandler 308 15.9.6 EventQueue 308 15.10 下单系统水平可扩展架构 311 ...

    log4j2所需要的jar包资源

    《深入理解Log4j2:核心组件与实战应用》 在Java开发中,日志记录是不可或缺的一部分,它能够帮助开发者追踪程序运行状态,定位错误和异常,优化性能。Log4j2作为Apache软件基金会的一个项目,是Log4j的升级版本,...

    Java高级开发学习路径.pdf

    在并发编程方面,文档涉及了JUC并发工具包、无锁并发框架Disruptor和线程基础与高级特性,这些都是提升Java并发处理能力的必备知识点。 此外,文档还包含Java虚拟机(JVM)深入知识的学习路径,如内存模型、垃圾...

Global site tag (gtag.js) - Google Analytics