Q1)熟悉Java Disruptor模式的人知道他们对结果进行基准测试的消息的大小吗?我正在写一个类似的系统(纯粹出于兴趣),当我读到他们测试的描述时,没有提到发送的消息大小?
http://code.google.com/p/disruptor/wiki/PerformanceResults
Q2)是计算机间通信的中断者,还是进程间通信的中断者?我最初的印象是计算机到计算机,但他们的工作被贴上了“线程间”消息库的标签?
发布于 2012-04-18 20:13:32
Disruptor不只是在同一台机器上,它只有一个进程。当他们说“线程间”时,他们的意思是它是为了在一个进程的线程之间发送消息。
消息大小实际上几乎是无关紧要的,因为消息不会被复制。消息在开始时都是固定的并被重用,所以它们有多大并不重要。
发布于 2012-04-18 20:09:08
虽然我并不完全熟悉,但我只是在探索它。
1)从src中的perf测试文件夹看起来,它们使用的是ValueEvent类,它只包含一个长整型,还有一些其他xxxEvent类,用于其他性能测试,稍大一些,但根据我目前收集的信息,在环形缓冲区中只使用了一个长整型。
2)我假设它是针对完全相同的机器线程间通信的。跨机器通信的延迟和不确定性将使其变得极其缓慢。(相对而言)然后该项目还需要处理套接字通信,这是我在这个库中没有看到的。
发布于 2013-06-13 20:26:03
1、Disruptor不关心消息的大小。但是结果应该随着消息的大小而线性下降(工作量增加,速度降低)
事实上,它并不关心信息。
库的密钥是buffer的ID。指针、位置、光标、指示器,它们的意思都是一样的。Disruptor self称之为"sequence“
一旦ID拿到了,整个世界只属于你!:)所以只有一个写手。真正的关键点。:)
2,不是C2C,也不是P2P:)。只有T2T。T是线程。 peter-lawrey have a great library Java-Chronicle,可以在P2P情况下使用。关于java dzone的新文章:http://java.dzone.com/articles/ultra-fast-reliable-messaging
3,核心模式应该能够克隆到跨边界用例。每件事都是ID。至于消息,是定制化的。
4,另一个重要的点,是易失性的缓存。a great example on github
5,JDK8引入了一个新的注解@Contended,看起来很性感。details about contended
https://stackoverflow.com/questions/10199582
复制相似问题