前言
前几节提到的队列的实现都是基于并发量不是特别大的场景,而且需要消息消费的数据数据达到最终一致性做了折中的处理,而本节针对超高并发量的场景下使用lMax,这节就重点提及disruptor的使用,以及从各大厂对disruptor的使用情况,简单的介绍disruptor的文章。文中介绍了disruptor的性能,以及特有的数据结构,分析了缓存的三种级别,分别对那种情况下能使用到最高速的L1缓存做了处理,使用到了ringBuffer来实现占据8个字节的mainMemory实现数据在L1缓存处理。如果想从源码角度分析发现disruptor的设计思想可以从这里得到一系列的参考
本节从实际项目中的代码来介绍disruptor的使用,目前电商项目里面使用的redis能实现的分布式锁,以及redis实现了guava的限流令牌桶算法,而disruptor主要就是基于强大的性能实现订单的下单队列的业务逻辑,这里大致的架构图后续有时间补上。
初始化disruptor工具类
import java.util.concurrent.ThreadFactory;
import com.lmax.disruptor.RingBuffer;
import com.lmax.disruptor.dsl.Disruptor;
/**
*这个类实现了disruptor初始化
*/
public class DisruptorUtil {
static Disruptor<SeckillEvent> disruptor = null;
static{