Java中断器模式和低延迟

Java中断器模式和低延迟,java,performance,disruptor-pattern,Java,Performance,Disruptor Pattern,Q1)熟悉Java Disruptor模式的人知道他们对结果进行基准测试的消息的大小吗?我正在编写一个类似的系统(出于纯粹的兴趣),当我阅读他们的测试描述时,没有提到发送的消息大小 问题2)计算机对计算机通信或进程间通信的干扰因素是什么?我最初的印象是计算机对计算机,但他们的工作被标记为“线程间”消息传递库?虽然我不太熟悉,但只是在探索它 1) 从src中的perf test文件夹中可以看出,他们正在使用这个类,这个类只包含一个long,还有一些其他xxxEvent类,它们在其他perf测试中

Q1)熟悉Java Disruptor模式的人知道他们对结果进行基准测试的消息的大小吗?我正在编写一个类似的系统(出于纯粹的兴趣),当我阅读他们的测试描述时,没有提到发送的消息大小


问题2)计算机对计算机通信或进程间通信的干扰因素是什么?我最初的印象是计算机对计算机,但他们的工作被标记为“线程间”消息传递库?

虽然我不太熟悉,但只是在探索它

1) 从src中的perf test文件夹中可以看出,他们正在使用这个类,这个类只包含一个long,还有一些其他xxxEvent类,它们在其他perf测试中使用,这些perf测试稍大一些,但从我目前收集的信息来看,在环缓冲区中只使用了一个long


2) 我假设它是用于完全相同的机器线程间通信。跨机器通信的延迟和不确定性将使其速度极慢。(相对而言)然后项目还需要处理套接字通信,这在本库中我没有看到。

Disruptor不只是在同一台机器中,它是一个进程。当他们说“inter-thread”时,他们的意思是它用于在一个进程的线程之间发送消息


消息大小实际上几乎不相关,因为消息不会被复制。这些消息在开始时都是固定的,可以重复使用,因此它们有多大并不重要。

1,Disruptor不关心消息的大小。但结果应该按消息大小线性下降(工作负载增加,速度降低)

事实上,它不在乎信息

库的键是缓冲区的ID。指针、位置、光标、指示器,它们都是相同的意思。 破坏者自称为“序列”

一旦得到了身份证,整个世界就只属于你了!:)因此,只有一位作者。真正的关键点:)

2,不是C2C,也不是P2P:)。就是T2T。T是线,可以在P2P的情况下使用。关于java dzone的新文章:

3、核心模式应该能够克隆到跨边界用例。每件事都是身份证。 至于消息,定制

4,另一个重要点是volatile的缓存


5、JDK8简介一个新的注解@contemped,看起来很性感

我不会说几乎不相关。理想情况下,环形缓冲区应该是空的,但在崩溃的情况下,您可能希望所有的消息都能放入二级缓存,或者您会得到一些不希望出现的缓存行为。@TrevorBernard:是的,您希望消息足够大,不会得到错误共享,但足够小,可以将整个环形缓冲区放入缓存。如果您的整个环形缓冲区不适合缓存,则消息的大小可能无关紧要。@TrevorBernard:写道“环形缓冲区很大:输入缓冲区有2000万个插槽,输出缓冲区有400万个插槽。”但是,这并不会阻止每个组件的当前工作集被高效缓存。