前言
上节提及到了关于队列的生成以及使用的api从应用的角度来分析了队列的各种使用,包括常用的rabbitMQ以及性能比较好的kafka等等,而对于LMAX的介绍相对来说比较少,而本节就从源码的角度来看看面试中的应答,毕竟作为消息中间件,性能方面,lmax是毋庸置疑是性能之王,单线程可以并发600w的高性能,具体是什么的结构让他拥有如此的性能,下面从冰山一角来作出解释,后续的章节会陆续在有条件的情况下再做详细的介绍。
RingBuffer的发布消息体系
这里从git上下载下来的源码中,从事件的发布测试的源码来分析ringBuffer的使用以及实现关系,而通过IDEA的debug进入里面看源码的继承关系,可以了解到ringBuffer使用squenced以及EvenFactory作为入参实现构造方法,构造方法如下
/**
* Construct a RingBuffer with the full option set.
*
* @param eventFactory to newInstance entries for filling the RingBuffer
* @param sequencer sequencer to handle the ordering of events moving through the RingBuffer.
* @throws IllegalArgumentException if bufferSize is less than 1 or not a power of 2
*/
RingBuffer(
EventFactory<E> eventFactory,
Sequencer sequencer)
{