Java 中断器模式和低延迟



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

http://code.google.com/p/disruptor/wiki/PerformanceResults

问题 2)是计算机到计算机通信的中断者,还是进程间的中断者?我最初的印象是计算机对计算机,但他们的工作被标记为"线程间"消息传递库?

中断器不仅在同一台机器中,而且在单个进程中。当他们说"线程间"时,他们的意思是它用于在一个进程的线程之间发送消息。

邮件

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

虽然我并不完全熟悉,只是探索它......

1)从src中的perf测试文件夹中看起来他们正在使用ValueEvent类,该类仅保存一个长,还有其他一些xxxEvent类用于其他性能测试,这些类稍大,但从我目前所能收集的信息来看,在环形缓冲区中只使用了长整型。

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

1,中断者不在乎消息的大小。 但结果应按消息大小线性减小(工作负载增加,速度降低)

在行动上,它不在乎信息。

库的 KEY 是缓冲区的 ID。 指针、位置、光标、指标,都是一样的意思。破坏者自我称之为"序列"

一旦有了ID,整个世界只属于你!:)所以只有一个作家。 真正的关键点:)

2,不是C2C,也不是P2P:)。 只是 T2T。 T 是线程。 Peter-Lawrey有一个很棒的Java-Chronicle库,可用于P2P案例。关于Java dzone的新文章:http://java.dzone.com/articles/ultra-fast-reliable-messaging

3、核心模式应该能够克隆到跨界用例。 每件事都是ID。至于消息,客户化。

4,另一个重要的点,是易失性的缓存。 GitHub上的一个很好的例子

5、JDK8介绍全新注解@Contended,显得性感。 关于争用的详细信息

最新更新