Disruptor快速入门
2011年,企业应用软件专家Martin Fowler在自己的网站上写了一篇LMAX架构的文章。在文章中他介绍了LMAX是一种新型零售金融交易平台,它能以很低的延迟产生大量的交易。这个LMAX系统是建立在JVM平台上,其核心是一个业务逻辑处理器。能够在一个线程里每秒处理六百万订单。
通过上面的介绍,相比大家对这个东西都有一个大大的问号吧,它能处理这么高的并发,那么它到底是采用了什么样的机制呢?或者有什么好的优化手段呢?
其实我们也不难猜测,一个线程里既然能处理六百万订单,那么很显然它的业务逻辑一定是在内存中处理的,因为如果要走IO的话,那性能肯定没有那么高,当然无论是互联网任何一个高性能的体现,无非就是走内存。 那么可能有的小伙伴会说缓存也可以啊,但是缓存性能肯定也是没有内存高的。
事实上Disruptor也使用了一个事件驱动的方式,这也是他的一个核心编程模型。
真正要想使用Disruptor,需要以下步骤:
- 建立一个工厂Event类,用于创建Event类实例对象。
- 需要一个事件监听类,用于处理数据(Event类)
- 实例化Disruptor实例,配置一系列参数,编写Disruptor核心组件
- 编写生产者组件,向Disruptor容器中去投递数据
让我们开始coding吧~
1.添加依赖
首先创建一个Maven项目并添加disruptor依赖:
<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>3.4.2</version>
</dependency>
2.建立Event类与Event工厂
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TestEvent {
private long value;
}
public class TestEventFactory implements EventFactory<TestEvent> {
@Override
public TestEvent newInstance() {
return new TestEvent();//这个方法就是为了返回空的数据对象
}
}
3.创建事件监听类
public class TestEventHandler implements EventHandler