2015年的Java进程间通信(不需要样板代码)?

7

我的使用情况:

  • process-1 "数据库"从数据文件中加载> 1GB的数据到内存中(仅加载需要30-60秒)
  • process-2 "客户端"希望快速访问该数据,而无需全部加载

它们是在同一台机器上运行的单独进程。我想在进程之间传输的数据是包含基本类型(整数、字符串、布尔值)的集合(列表、映射)。

我知道可以通过打开套接字连接(创建某些特定协议来序列化数据)或通过RMI(更多或更少相同的事情)来完成此操作。我们已经在15年前做过这两个。难道现在没有人自动化这个过程吗?通过使用某个库,您只需设置@InterProcessMethod("some", "details")就能够在不同的JVM上调用方法,而无需每次实现序列化等(由于主要类型,这应该不会太复杂)。

一个名为Caucho的公司曾经有一些产品来解决这个问题,但我无法从他们的网页中找到它。反过来,这是一种Web服务而不是RPC。


好的,我喜欢这个问题。 - Mordechai
3
他们还没有……因为问题比你想象的更加复杂。 - Stephen C
一个好问题。但是离题了。 - Chetan Kinger
如果我理解正确的话,唯一的方法就是如果Oracle本身将其嵌入JVM中。没有外部库可以做到这一点。 - Mordechai
RMI仍然是最好的方法,特别是现在不需要rmic。另一个选择是JAX-WS:使SEI类对两个进程都可用,并让服务器发布Endpoint。 - VGR
显示剩余3条评论
1个回答

0

我不知道有没有这样的方法。更符合"2015"年的方式是使用RMI,或将后端重构为REST API并通过JSON进行连接,然后根据需要,可以使用Jackson甚至手动序列化/反序列化(在某些性能导向的场景下)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接