disruptor - Concurrent Programming Framework 并发编程框架
disruptor发布了Java的2.0版本(.Net版本见这里),disruptor是一个高性能的异步处理框架,或者可以认为是最快的消息框架(轻量的JMS),也可以认为是一个观察者模式实现,或者事件-监听模式的实现,直接称disruptor模式。
disruptor最大特点是高性能,其LMAX架构可以获得每秒6百万订单,用1微秒的延迟获得吞吐量为100K+。
disruptor与传统高性能模型是不同的,LMAX团队通过测试发现热门的Actor模型在高并发设计有瓶颈,disruptor的RingBuffer根据多核CPU的高速缓存设计特点进行了优化,让每个CPU运行一个线程,多个CPU就是多线程并发模式了,正如团队所言:我们想出一个更好,更快的线程之间共享数据的方式,不与世界分享将是自私的,不共享知识让我们看上去是死聪明。
传统消息框架使用Queue队列,如JDK LinkedList等数据结构实现,RingBuffer比Linked之类数据结构要快,因为没有锁,是CPU友好型的。另外一个不同的地方是不会在清除RingBuffer中数据,只会覆盖,这样降低了垃圾回收机制启动频率。
disruptor - Concurrent Programming Framework 并发编程框架的更多相关文章
- java并发编程框架 Executor ExecutorService invokeall
首先介绍两个重要的接口,Executor和ExecutorService,定义如下: public interface Executor { void execute(Runnable command ...
- concurrent.futures进行并发编程
Python中进行并发编程一般使用threading和multiprocessing模块,不过大部分的并发编程任务都是派生一系列线程,从队列中收集资源,然后用队列收集结果.在这些任务中,往往需要生成线 ...
- java架构《并发编程框架篇 __Disruptor》
Disruptor入门 获得Disruptor 可以通过Maven或者下载jar来安装Disruptor.只要把对应的jar放在Java classpath就可以了. 基本的事件生产和消费 我们从 ...
- Akka并发编程框架 -概念模型(Akka.net或者Orleans)
Akka 来构建具备高容错性.可以横向扩展的分布式网络应用程序. Akka 通常是指一个强大的分布式工具集,用于协调远程计算资源来进行一些工作 Akka 工具集以及Actor 模型的介绍. Actor ...
- Java并发编程 - Executor,Executors,ExecutorService, CompletionServie,Future,Callable
一.Exectuor框架简介 Java从1.5版本开始,为简化多线程并发编程,引入全新的并发编程包:java.util.concurrent及其并发编程框架(Executor框架). Executor ...
- GitHub标星120K+的JDK并发编程指南,连续霸榜GitHub终于开源了
前言 在编程行业中,有一个东西是和广大程序员形影不离的,在最一开始接触编程就是配置它的运行环境,然后java / javac,对,这个东西就是jdk 昨天项目刚上线,可以稍微休息一下了,但是猛的闲下来 ...
- 并发编程(Concurrent programming)
并发编程(Concurrent programming) 1.并发编程概述 2.委托(delegate) 3.事件(event) 4.线程(thread) 5.线程池(threadPool) 6.任务 ...
- 《The java.util.concurrent Synchronizer Framework》 JUC同步器框架(AQS框架)原文翻译
一.论文简介 闲来无事,看看源码,发现了一篇JDK作者的论文<The java.util.concurrent Synchronizer Framework>主要描述了作者对Abstrac ...
- java并发编程(十七)Executor框架和线程池
转载请注明出处:http://blog.csdn.net/ns_code/article/details/17465497 Executor框架简介 在Java 5之后,并发编程引入了一堆新的启动 ...
随机推荐
- Training little cats_矩阵快速幂
Description Facer's pet cat just gave birth to a brood of little cats. Having considered the health ...
- Hooks
function getValType(elem) { var ret = elem.tagName.toLowerCase() return ret === "input" &a ...
- Quantum & r2q
Quantum & r2q Let's assume we have 2 classes with the same parent : Parent : ceil = rate = 100 c ...
- Hashing filters for very fast massive filtering
If you have a need for thousands of rules, for example if you have a lot of clients or computers, al ...
- OpenFlow Switch学习笔记(四)——Matching
这次我们着重详述来自于网络中的数据包在OpenFlow Switch中与Flow Entries的具体匹配过程,以及当出现Table Miss时的处理方式,下面就将从这两方面说起. 1.Matchin ...
- 刻通云KeyTone Cloud测试
注:本文转自陈沙克的博客,原文见http://www.chenshake.com/carved-through-the-keytone-cloud-cloud-testing/ 一直都很希望有更多的O ...
- hexo系列教程
hexo系列教程来源: http://zipperary.com/2013/05/28/hexo-guide-1/ hexo系列教程:(一)hexo介绍 什么是hexo hexo是一个基于Node.j ...
- 多个Tomcat同时运行环境配置 - imsoft.cnblogs
解压下载好的Tomcat压缩包,两次.此例中分别命名为tomcat和tomcat2. 1. 在MyEclipse中配置好第一个Tomcat环境,可以正常运行项目后. 2. 再配置tomcat2这个项目 ...
- SQLITE LIMIT
sqlite> create table t_user(userid int,username varchar(20)); sqlite> insert into t_user value ...
- jq中阻止元素的默认行为
event.preventDefault();//阻止元素的默认行为