并发框架Disruptor1.Disruptor概述1.1背景 Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级),基于Disruptor开发的系统单线程能支撑每秒600万订单,2010年在QCon演讲后,获得了业界关注,2011年,企业应用软件专家MartinFowler专门撰写长文介绍。同年它还获得了Oracle官方的Duke大奖。 目前,包括ApacheStorm、Camel、Log4j2在内的很多知名项目都应用了Disruptor以获取高性能。 需要特别指出的是,这里所说的
并发框架Disruptor1.Disruptor概述1.1背景 Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级),基于Disruptor开发的系统单线程能支撑每秒600万订单,2010年在QCon演讲后,获得了业界关注,2011年,企业应用软件专家MartinFowler专门撰写长文介绍。同年它还获得了Oracle官方的Duke大奖。 目前,包括ApacheStorm、Camel、Log4j2在内的很多知名项目都应用了Disruptor以获取高性能。 需要特别指出的是,这里所说的
前言Disruptor是一个高性能的无锁并发框架,其主要应用场景是在高并发、低延迟的系统中,如金融领域的交易系统,游戏服务器等。其优点就是非常快,号称能支撑每秒600万订单。需要注意的是,Disruptor是单机框架,对标JDK中的Queue,而非可用于分布式系统的MQ本文基于Disruptorv3.4.*版本Demo既然是简单使用,这阶段只需要关注:生产者消费者:EventHandler消息的传递:消息的载体Event简单例子首先,我们定义消息的载体Event,生产者向消费者传递的消息通过Event承载classLongEvent{privatelongvalue;publicvoidset
前言Disruptor是一个高性能的无锁并发框架,其主要应用场景是在高并发、低延迟的系统中,如金融领域的交易系统,游戏服务器等。其优点就是非常快,号称能支撑每秒600万订单。需要注意的是,Disruptor是单机框架,对标JDK中的Queue,而非可用于分布式系统的MQ本文基于Disruptorv3.4.*版本Demo既然是简单使用,这阶段只需要关注:生产者消费者:EventHandler消息的传递:消息的载体Event简单例子首先,我们定义消息的载体Event,生产者向消费者传递的消息通过Event承载classLongEvent{privatelongvalue;publicvoidset
MyDisruptorV6版本介绍在v5版本的MyDisruptor实现DSL风格的API后。按照计划,v6版本的MyDisruptor作为最后一个版本,需要对MyDisruptor进行最终的一些细节优化。v6版本一共做了三处优化:解决伪共享问题支持消费者线程优雅停止生产者序列器中维护消费者序列集合的数据结构由ArrayList优化为数组Array类型(减少ArrayList在get操作时额外的rangeCheck检查)由于该文属于系列博客的一部分,需要先对之前的博客内容有所了解才能更好地理解本篇博客v1版本博客:从零开始实现lmax-Disruptor队列(一)RingBuffer与单生产者
MyDisruptorV6版本介绍在v5版本的MyDisruptor实现DSL风格的API后。按照计划,v6版本的MyDisruptor作为最后一个版本,需要对MyDisruptor进行最终的一些细节优化。v6版本一共做了三处优化:解决伪共享问题支持消费者线程优雅停止生产者序列器中维护消费者序列集合的数据结构由ArrayList优化为数组Array类型(减少ArrayList在get操作时额外的rangeCheck检查)由于该文属于系列博客的一部分,需要先对之前的博客内容有所了解才能更好地理解本篇博客v1版本博客:从零开始实现lmax-Disruptor队列(一)RingBuffer与单生产者
MyDisruptorV5版本介绍在v4版本的MyDisruptor实现多线程生产者后。按照计划,v5版本的MyDisruptor需要支持更便于用户使用的DSL风格的API。由于该文属于系列博客的一部分,需要先对之前的博客内容有所了解才能更好地理解本篇博客v1版本博客:从零开始实现lmax-Disruptor队列(一)RingBuffer与单生产者、单消费者工作原理解析v2版本博客:从零开始实现lmax-Disruptor队列(二)多消费者、消费者组间消费依赖原理解析v3版本博客:从零开始实现lmax-Disruptor队列(三)多线程消费者WorkerPool原理解析v4版本博客:从零开始实
MyDisruptorV5版本介绍在v4版本的MyDisruptor实现多线程生产者后。按照计划,v5版本的MyDisruptor需要支持更便于用户使用的DSL风格的API。由于该文属于系列博客的一部分,需要先对之前的博客内容有所了解才能更好地理解本篇博客v1版本博客:从零开始实现lmax-Disruptor队列(一)RingBuffer与单生产者、单消费者工作原理解析v2版本博客:从零开始实现lmax-Disruptor队列(二)多消费者、消费者组间消费依赖原理解析v3版本博客:从零开始实现lmax-Disruptor队列(三)多线程消费者WorkerPool原理解析v4版本博客:从零开始实