相同机器JVM之间最快的通信

Nic*_*ick 4 java jvm rmi pipe

我需要从同一台机器上运行的另一个JVM调用一个方法.需要使用Java /类似本机的性能来调用此方法很多次.它是一种小输入小输出方法.另一个JVM在同一台机器上运行.

进行此调用并从运行"附近"的其他JVM检索结果的最快方法是什么?

一些选项可能是RMI,管道,套接字,JMS,优化的同一机器JVM间通信支持,以及JVM中的一些低级别攻击.任何想法都是受欢迎的,无论它是多么专业.

Pet*_*rey 5

在同一台机器上JVM之间进行通信的最快方法是使用共享内存,例如通过内存映射文件.这比使用Socket over loopback快100倍.例如,200ns往返时间与套接字的10-20微秒往返时间相比.

一种实现是Java Chronicle BTW.100 ns延迟包括消息的持久性.

无论您是否需要这些解决方案,都不应该理所当然.通常,当人们说他们必须拥有"最快"时,他们真的意味着他们不知道需要多快,所以如果他们选择最快,它应该是正确的解决方案.这通常是不正确的,因为采用最快的解决方案通常意味着在设计和实施方面做出妥协,如果只知道要求是什么,它可能永远不会需要.

简而言之,除非您有特定的,可测量的延迟和/或吞吐量要求,否则您应该假设最简单的解决方案是您真正想要的.如果你更好地理解了什么是必要的,那么当它结果不合适时,可以用更快的东西代替.