刚刚听说disruptor,大概理一下,只为方便自己理解,文末是一些自己认为比较好的博文,如果有需要的同学可以参考。

本文目标:快速了解Disruptor是什么,主要概念,怎么用

1、Disruptor简介

Disruptor是什么?有什么特点/优点?

  --Disruptor是一个用于在线程间通信的高效低延时的消息组件,它像个增强的队列。

  --它是一个高性能、低延迟、使用简单的异步处理框架,或者可以认为是最快的消息框架(轻量的JMS),也可以认为是一个观察者模式实现,或者事件-监听模式的实现,直接称disruptor模式。

  --disruptor最大特点是高性能,其LMAX架构可以获得每秒6百万订单,用1微秒的延迟获得吞吐量为100K+。

Disruptor 相对于传统方式的优点:

  --无锁,没有竞争

  --所有访问者都记录自己的序号的实现方式,允许多个生产者与多个消费者共享相同的数据结构

  --缓存行填充,解决伪共享,提高cache命中率

  --环形数组RingBuffer,避免GC开销

2、关键概念与原理

初学,大概过一遍,先有个印象:

Disruptor原理与编程实践 - CSDN博客  http://blog.csdn.net/jeffsmish/article/details/53572043

专题:Java并发框架剖析--Disruptor_51CTO.COM  http://developer.51cto.com/art/201306/399370.htm

Disruptor 极速体验 - haiq - 博客园  http://www.cnblogs.com/haiq/p/4112689.html

并发框架Disruptor译文 | 并发编程网 – ifeve.com  http://ifeve.com/disruptor/

高性能队列Disruptor系列2--浅析Disruptor - aheizi - 博客园  http://www.cnblogs.com/aheizi/p/6883062.html

3、如何使用

新建Maven工程,选择maven仓库找用户比较多的版本,加入依赖即可,我自己选择的目前最新版本3.3.7的。

敲了一遍代码,感觉由浅入深,根据下面的顺序来比较好,感受一下它的用法:

架构师入门笔记七 并发框架Disruptor快速入门 - ITDragon博客 - CSDN博客  http://blog.csdn.net/qq_19558705/article/details/77116949

架构师入门笔记八 并发框架Disruptor场景应用 - ITDragon博客 - CSDN博客  http://blog.csdn.net/qq_19558705/article/details/77247912

Disruptor入门-博客-云栖社区-阿里云  https://yq.aliyun.com/articles/20332#4

disruptor demo(三) 复杂一点的例子 - CSDN博客  http://blog.csdn.net/qian_348840260/article/details/38321371

无锁并发框架Disruptor学习入门的更多相关文章

  1. 并发框架Disruptor译文

    Martin Fowler在自己网站上写了一篇LMAX架构的文章,在文章中他介绍了LMAX是一种新型零售金融交易平台,它能够以很低的延迟产生大量交易.这个系统是建立在JVM平台上,其核心是一个业务逻辑 ...

  2. 并发框架Disruptor浅析

    1.引言 Disruptor是一个开源的Java框架,它被设计用于在生产者—消费者(producer-consumer problem,简称PCP)问题上获得尽量高的吞吐量(TPS)和尽量低的延迟.D ...

  3. 加锁并发算法 vs 无锁并发算法

    Heinz Kabutz 在上周举办了一次成功 JCrete研讨会,我在会上参加了对一种新的 StampedLock(于JSR166中 引入) 进行的评审.StampedLock (邮戳锁) 旨在解决 ...

  4. Lock Free (无锁并发)

    CAS( compare and swap) 原子操作,保证了如果需要更新的地址没有被其他进程(线程)改动过,那么它可以安全的写入.而这也是我们对于某个数据或者数据结构加锁要保护的内容,保证读写的一致 ...

  5. lock free(无锁并发)是什么

    一.非阻塞同步(Non-blocking Synchronization) 1. 无锁编程 / lock-free / 非阻塞同步 无锁编程,即不使用锁的情况下实现多线程之间的变量同步,也就是在没有线 ...

  6. rpc框架dubbo学习入门及环境搭建(spring boot+Kotlin)

    学习之前,确保有以下知识基础: Java网络编程 Socket传输数据 IO流 rpc简介及实现 rpc是remote procedure call的简写,意思为远程过程调用. rpc应用较多的情景是 ...

  7. 基于 CAS 无锁实现的 Disruptor.NET 居然慢于 BlockingCollection,是真的吗?

    StackOverflow 有人说自己的Disruptor.NET 代码比 BlockingCollection 还有慢 2 倍,并且把完整代码贴出,楼下几个老外也的回复说了一堆,但是没研究出个所以然 ...

  8. 并发框架Disruptor场景应用

    今天用一个停车场问题来加深对Disruptor的理解.一个有关汽车进入停车场的问题.当汽车进入停车场时,系统首先会记录汽车信息.同时也会发送消息到其他系统处理相关业务,最后发送短信通知车主收费开始.看 ...

  9. Java 并发框架Disruptor(七)

    Disruptor VS BlockingQueue的压测对比: import java.util.concurrent.ArrayBlockingQueue; public class ArrayB ...

随机推荐

  1. PHP学习 安装环境和语法学习

    要回归技术了,昨天下午专门去深圳大学城图书馆借书,甚是漂亮 禁不住搞了几张照片 在图书馆里面的书真多,图书馆环境真好,清华大学 北京大学研究生院的学生们有福了,最后一句深圳政府真尼玛有钱,下图是图书馆 ...

  2. SimpleDateFormat的一些常用用法

    /** SimpleDateFormat函数语法: G 年代标志符 y 年 M 月 d 日 h 时 在上午或下午 (1~12) H 时 在一天中 (0~23) m 分 s 秒 S 毫秒 E 星期 D ...

  3. 每日scrum(2)

    今天是冲刺的第二天,小组主要做了界面的美化,加入了软件的开始动画,以及学校景点的美图介绍: 主要的问题在于除了开始界面,进入软件之后还是有待改进,功能的呈现有待加强. 任务看板: 燃尽图: 会议照片:

  4. Central Control Over Distributed Routing阅读笔记

    Central Control Over Distributed Routing 0.ABSTRACT1.Introduction2.Flexible Fibbing3.Augmenting Topo ...

  5. RYU 灭龙战 fourth day (2)

    RYU 灭龙战 fourth day (2) 前言 之前试过在ODL调用他们的rest api,一直想自己写一个基于ODL的rest api,结果还是无果而终.这个小目标却在RYU身上实现了.今日说法 ...

  6. asp.net简述MVC开发模式

    详情请参考:http://www.runoob.com/aspnet/mvc-intro.html 1.MVC 是三种 ASP.NET 编程模式中的一种.MVC 是一种使用 MVC(Model Vie ...

  7. USACO 2012 December ZQUOJ 24122 Scrambled Letters(二分)

    题意:有一个字典序名单,现在把这些名单的顺序和名字的字符顺序扰乱了,要输出原先的名字在原来的名单中的最低和最高位置. 分析:先将所有的名字串按字典序从小到大和从大到小分别排序smin[]和smax[] ...

  8. pixi.js + three.js

    three.js    最好的webgl 3d渲染库之一, pixi.js    最好的webgl 2d渲染库之一,也许可以把之一去掉 两个库都很精简,如果把两个库结合起来,一定很爽很爽,你说是吧! ...

  9. dubbo的spi机制

    SPI SPI是一种扩展机制,在java中SPI机制被广泛应用,比如Spring中的SpringServletContainerInitializer 使得容器启动的时候SpringServletCo ...

  10. Berland and the Shortest Paths CodeForces - 1005F(最短路树)

    最短路树就是用bfs走一遍就可以了 d[v] = d[u] + 1 表示v是u的前驱边 然后遍历每个结点 存下它的前驱边 再用dfs遍历每个结点 依次取每个结点的某个前驱边即可 #include &l ...