Can Chronicle队列可以像RMI一样使用吗?
问题描述:
我希望我的两个JVM应用程序在同一台机器上互相对话。我考虑使用RMI,但后来我发现Chronicle Queue声称它非常快。我想知道是否可以使用Chronicle在其他JVM上调用方法并等待返回值。有没有用例呢?Can Chronicle队列可以像RMI一样使用吗?
答
这是可行的,但可能是矫枉过正(尤其是如果你不必保留请求/响应的历史记录)。想象一下两个进程的简单场景:C(客户端)和S(服务器)。创建两个IndexedChronicles
:发送从C
请求S
Q2
从S
发送到C
服务器响应
-
Q1
有一个线程是轮询(忙自旋与回退)在Q1
。当接收到一个请求(与id=x
它的任何需要,并写出反应Q2
(与id=x
。C
民调Q2
一些政策,因为他们似乎读出响应。它使用id
绑到请求的响应。主要任务是为客户端设计一个用于串行化命令(相当于方法调用)的线级协议,这是应用程序特定的,可以通过Chronicle工具高效地完成。
- 客户应该如何处理启动时的历史响应?
- 一些心跳系统,使客户端知道服务器是活着的老队列
- 归档(
VanillaChronicle
在一定的成本使得它更容易)
+0
我同意你,这是一个矫枉过正。我决定使用RMI。它使我免受你提到的许多麻烦。 – Hakan
我看不到任何基于磁盘的系统如何能够更快比非基于磁盘的系统,或为什么你会认为,否则。 – EJP
它使用共享内存。磁盘仅用于最终持久性。只要你有很多的RAM,并且活动时间较短,可以将脏页面刷新到磁盘上,它的速度就会非常快。 – Anonymous