use*_*026 8 java performance ipc rmi mq
我有一个Java应用程序,需要在不同进程之间进行通信.进程可以在相同的JVM或不同的JVM中运行,但可以在同一台机器上运行.
我的应用程序需要将"消息"提交给另一个进程(相同或不同的JVM)并忘记它.类似于IBM"MQ"之类的消息传递队列,但是简单,只使用内存,没有IO到硬盘以获得性能提升.
我不确定Performance prescriptive的最佳方法是什么.
还有其他想法吗?
Pet*_*rey 17
我想知道RMI在性能方面是否有效,我认为它需要一些开销.
RMI对其功能非常有效.它比大多数人需要的要多得多,但通常足够快.您应该能够获得每秒1-3 K消息的顺序,延迟大约为1毫秒.
那么使用本地主机的TCP/IP套接字呢?
这总是一个选项,但使用普通的Java序列化,这不会比使用RMI快得多.如何进行序列化和反序列化对于高性能至关重要.
一个重要的注意的是,大部分的时间都花在序列化和deserilizing消息,而大多数传输不帮你,所以如果你想要最大的性能,你必须要考虑的一个有效的编组策略.大多数传输协议仅对基准原始字节进
具有讽刺意味的是,如果您愿意使用磁盘,它可能比TCP或UDP(如ZeroMQ)更快,而且您可以获得"免费"的持久性.
这个库(我是作者)可以在进程之间每秒执行数百万条消息,延迟低至100纳秒(比ZeroMQ低350倍)https://github.com/peter-lawrey/Java-Chronicle 优点是
| 归档时间: |
|
| 查看次数: |
8660 次 |
| 最近记录: |