2

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

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

Q2) 计算机之间的通信或进程间通信的破坏者是什么?我最初的印象是计算机到计算机,但他们的工作被标记为“线程间”消息传递库?

4

3 回答 3

10

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

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

于 2012-04-18T12:13:32.100 回答
1

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

1)从 src 中的 perf 测试文件夹看起来他们正在使用ValueEvent类,它只是持有很长的时间,还有一些其他 xxxEvent 类用于其他性能测试,它们稍微大一点,但我可以到目前为止,在环形缓冲区中只使用了一个 long。

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

于 2012-04-18T12:09:08.347 回答
0

1、Disruptor 不在乎消息的大小。但结果应该随着消息的大小线性下降(工作量增加,速度降低)

事实上,它并不关心信息。

库的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、还有一点很重要,就是volatile 的缓存github上的一个很好的例子

5、JDK8引入了一个新的注解@Contended,看起来很性感。有关竞争的详细信息

于 2013-06-13T12:26:02.653 回答