本月博客排行
-
第1名
龙儿筝 -
第2名
lerf -
第3名
fantaxy025025 - johnsmith9th
- xiangjie88
- zysnba
年度博客排行
-
第1名
青否云后端云 -
第2名
宏天软件 -
第3名
gashero - wy_19921005
- vipbooks
- benladeng5225
- e_e
- wallimn
- javashop
- ranbuijj
- fantaxy025025
- jickcai
- gengyun12
- zw7534313
- qepwqnp
- 解宜然
- ssydxa219
- zysnba
- sam123456gz
- sichunli_030
- arpenker
- tanling8334
- gaojingsong
- kaizi1992
- xpenxpen
- 龙儿筝
- jh108020
- wiseboyloves
- ganxueyun
- xyuma
- xiangjie88
- wangchen.ily
- Jameslyy
- luxurioust
- lemonhandsome
- mengjichen
- jbosscn
- zxq_2017
- lzyfn123
- nychen2000
- forestqqqq
- wjianwei666
- ajinn
- zhanjia
- Xeden
- hanbaohong
- java-007
- 喧嚣求静
- mwhgJava
- kingwell.leng
最新文章列表
高性能队列——Disruptor
Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级)。基于Disruptor开发的系统单线程能支撑每秒600万订单,2010年在QCon演讲后,获得了业界关注。2011年,企业应用软件专家Martin Fowler专门撰写长文介绍。同年它还获得了Oracle官方的Duke大奖。
目前,包括Apa ...
Disruptor应用实例
Disruptor是什么可以阅读《高性能线程间队列DISRUPTOR简介》一文,下面重点讲讲在实际应用中如何去使用Disruptor。
项目结构如下:
CreateReqEvent.java
package com.bijian.study;
import com.lmax.disruptor.EventFactory;
public class Creat ...
Disruptor的深度解析 (2) 生产者的写入
本文主要讲一下Disruptor的写入部分,也就是生产者怎么将数据成功的写入RingBuffer
写入RingBuffer需要关注的几个问题
1:如何避免生产者的生产速度过快而造成的新消息覆盖了未被消费的旧消息的问题
2:如何解决多个生产者抢 ...
并发框架之Disruptor
Disruptor它是一个开源的并发框架
官方地址|:https://github.com/LMAX-Exchange/disruptor/wiki/Getting-Started
https://github.com/LMAX-Exchange/disruptor
public class LongEvent {
private Long value;
public L ...
Disruptor的简单介绍及使用
本文介绍的是版本是3.3.6的,参考了以下文章
http://11246272.blog.51cto.com/11236272/1745472
http://www.php.cn/java-article-370582.html
http://zhangfengzhe.blog.51cto.com/885510 ...
Disruptor并发框架
Disruptor:高效的并发组件(框架),可以认为是没有锁的生产者消费者模型,所以效率高,内部使用RingBuffer机制,做到无锁并发,
代码示例
Disruptor服务器
package com.gbcom.frame.disruptor;
import java.util.concurrent.ExecutorService;
import java.util.concurren ...
disruptor-3.3.2源码解析汇总
disruptor-3.3.2源码解析汇总
disruptor-3.3.2源码解析(1)-序列
disruptor-3.3.2源码解析(2)-队列
disruptor-3.3.2源码解析(3)-发布事件
disruptor-3.3.2源码解析(4)-处理事件
disruptor-3.3.2源码解析(5)-框架支持
完毕!
欢迎加入扣扣群一起 ...
disruptor-3.3.2源码解析(5)-框架支持
disruptor-3.3.2源码解析(5)-框架支持
作者:大飞
更方便的使用Disruptor:
前面几篇看了Disruptor中的一些重要组件和组件的运行方式,也通过手动组合这些组件的方式给出了一些基本的用例。框架也提供了一个DSL-style API,来帮助我们更容易的使用框架,屏蔽掉一些细节(比如怎么构建RingBuffer、怎么关联追踪序列等), ...
disruptor-3.3.2源码解析(4)-处理事件
disruptor-3.3.2源码解析(4)-处理事件
作者:大飞
Disruptor中如何处理事件:
disruptor中提供了专门的事件处理器接口,先看下接口定义:
/**
* 事件处理器会等待RingBuffer中的事件变为可用(可处理),然后处理可用的事件。
* 一个事件处理器通常会关联一个线程。
*/
public interf ...
disruptor-3.3.2源码解析(3)-发布事件
disruptor-3.3.2源码解析(3)-发布事件
作者:大飞
Disruptor中如何发布事件:
前面两篇看了disruptor中的序列和队列,这篇说一下怎么往RingBuffer中发布事件。这里也需要明确一下,和一般的生产者/消费者模式不同(如果以生产者/消费者的模式来看待disruptor的话),disruptor中队列里面的数据一般称为事件,Ri ...
disruptor-3.3.2源码解析(2)-队列
disruptor-3.3.2源码解析(2)-队列
作者:大飞
Disruptor中的队列-RingBuffer:
RingBuffer是disruptor最重要的核心组件,如果以生产者/消费者模式来看待disruptor框架的话,那RingBuffer就是生产者和消费者的工作队列了。RingBuffer可以理解为是一个环形队列,那内部是怎么实现的呢?看下源 ...
disruptor-3.3.2源码解析(1)-序列
disruptor-3.3.2源码解析(1)-序列
作者:大飞
Disruptor中的序列-Sequence:
disruptor中较为重要的一个类是Sequence。我们设想下,在disruptor运行过程中,事件发布者(生产者)和事件处理者(消费者)在ringbuffer上相互追逐,由什么来标记它们的相对位置呢?它们根据什么从ringbuffer上发布或 ...
disruptor 异常封装小技巧
disruptor部分代码流程控制使用的是异常,抛出自定义的异常,外层捕捉,下面是它封装的异常
直接贴代码:
public final class AlertException extends Exception
{
/**
* Pre-allocated exception to avoid garbage generation
*/
...
disruptor(二) MultiProducerSequencer
在《disruptor(一) 单一生产者和WorkPool消费者源码阅读》介绍了单一生产者
当多个生产者向RingBuffer中写入数据时,创建Disruptor时要修改对应的参数:
Disruptor disruptor = new Disruptor(eventFactory, BUFFER_SIZE, executor, ProducerType.MULTI,
...
disruptor(一) 单一生产者和WorkPool消费者源码阅读
最近项目中有用到disruptor,提供一个类似队列或者数据容器的功能,并发能力很强
概念:
Sequence:就是一个增长序列,类似oracle的增长序列,生产和消费程序都有Sequence,记录生产和消费程序的序列
Sequencer: 多个概念的一个组合,持有Sequence,等待策略等一些引用,生产者引用
SequenceBarrier:直接翻译就是序列屏障,就是Sequ ...