无锁并发框架Disruptor学习入门
刚刚听说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学习入门的更多相关文章
- 并发框架Disruptor译文
Martin Fowler在自己网站上写了一篇LMAX架构的文章,在文章中他介绍了LMAX是一种新型零售金融交易平台,它能够以很低的延迟产生大量交易.这个系统是建立在JVM平台上,其核心是一个业务逻辑 ...
- 并发框架Disruptor浅析
1.引言 Disruptor是一个开源的Java框架,它被设计用于在生产者—消费者(producer-consumer problem,简称PCP)问题上获得尽量高的吞吐量(TPS)和尽量低的延迟.D ...
- 加锁并发算法 vs 无锁并发算法
Heinz Kabutz 在上周举办了一次成功 JCrete研讨会,我在会上参加了对一种新的 StampedLock(于JSR166中 引入) 进行的评审.StampedLock (邮戳锁) 旨在解决 ...
- Lock Free (无锁并发)
CAS( compare and swap) 原子操作,保证了如果需要更新的地址没有被其他进程(线程)改动过,那么它可以安全的写入.而这也是我们对于某个数据或者数据结构加锁要保护的内容,保证读写的一致 ...
- lock free(无锁并发)是什么
一.非阻塞同步(Non-blocking Synchronization) 1. 无锁编程 / lock-free / 非阻塞同步 无锁编程,即不使用锁的情况下实现多线程之间的变量同步,也就是在没有线 ...
- rpc框架dubbo学习入门及环境搭建(spring boot+Kotlin)
学习之前,确保有以下知识基础: Java网络编程 Socket传输数据 IO流 rpc简介及实现 rpc是remote procedure call的简写,意思为远程过程调用. rpc应用较多的情景是 ...
- 基于 CAS 无锁实现的 Disruptor.NET 居然慢于 BlockingCollection,是真的吗?
StackOverflow 有人说自己的Disruptor.NET 代码比 BlockingCollection 还有慢 2 倍,并且把完整代码贴出,楼下几个老外也的回复说了一堆,但是没研究出个所以然 ...
- 并发框架Disruptor场景应用
今天用一个停车场问题来加深对Disruptor的理解.一个有关汽车进入停车场的问题.当汽车进入停车场时,系统首先会记录汽车信息.同时也会发送消息到其他系统处理相关业务,最后发送短信通知车主收费开始.看 ...
- Java 并发框架Disruptor(七)
Disruptor VS BlockingQueue的压测对比: import java.util.concurrent.ArrayBlockingQueue; public class ArrayB ...
随机推荐
- mysql学习(2)-Navicat Premium 12 链接MySQL8.0.11数据库报2059错误
Navicat Premium 12 链接MySQL8.0.11数据库报2059错误 1,问题现象 安装完MySQL8.0.11和Navicat Premium12后,我们会用Navicat去测试连接 ...
- PAT甲题题解-1050. String Subtraction (20)-水题
#include <iostream> #include <cstdio> #include <string.h> #include <algorithm&g ...
- Linux内核实验作业七
实验作业:Linux内核如何装载和启动一个可执行程序 20135313吴子怡.北京电子科技学院 [第一部分]理解编译链接的过程和ELF可执行文件格式 1.编译链接的过程 2.ELF可执行文件格式 一个 ...
- C++:多态浅析
1.多态 在C++中由两种多态性: • 编译时的多态性:通过函数的重载和运算符的重载来实现的 • 运行时的多态性:通过类继承关系和虚函数来实现的 特别注意: a.运行时的多态性是指程序执行前,无法根据 ...
- kickstart自动化安装
preboot execute environment预启动执行环境--intel开发的技术,计算机可以通过pxe协议从网络引导启动. 工作模式为客户端/服务器端的c/s模式 客户端从远端服务器下载镜 ...
- 侧边导航栏css示例
效果展示: html: <div class="sidebar"> <ul> <li>优先级 <ul> <li>< ...
- CentOS75 安装Oracle18c
1. 参考地址 https://blog.csdn.net/u010257584/article/details/50902472https://www.cnblogs.com/kerrycode/a ...
- Android dimen
转自:Android:dimen尺寸资源文件的使用 dimen.xml在values文件夹下面 <resources> <!-- Default screen margins, pe ...
- Git查看与修改用户名、邮箱
用户名和邮箱的作用: 用户名和邮箱地址相当于你的身份标识,是本地Git客户端的一个变量,不会随着Git库而改变. 每次commit都会用用户名和邮箱纪录. github的contributions跟你 ...
- Navicat Premium和Navicat for MySQL哪个好用?
之前在Navicat官网下载了Navicat Premium和Navicat for MySQL使用.Navicat官网产品下载地址:https://www.navicat.com.cn/produc ...