【问题标题】:Alternatives to RMI for IPC?IPC 的 RMI 替代方案?
【发布时间】:2023-04-07 07:15:01
【问题描述】:

我有 2 个进程需要通过同一台 PC 和不同的 PC 进行通信。在本地情况下,进程通信是在不同进程之间进行的,例如 Process A 和 Process B
在远程情况下,它将位于在不同 PC 上运行的 2 个 Process A 实例中。
我将从头开始创建它们,我想知道最好的方法是什么。我知道 RMI 和套接字,但我想知道我所描述的情况,并且还考虑到交换的消息很小并且 API 的数量非常少,如果有一个标准的方法/库的话。
任何建议都非常欢迎

@EJP cmets 后更新:
我的兴趣是 1)以轻松的方式实现通信要求,因为暴露的 API 非常小,消息也是如此 2)如果可能的话,使用和学习一个新的流行框架(我已经知道 RMI 和套接字)

【问题讨论】:

  • 鉴于您的 API 数量很少,很难理解为什么您需要比 RMI 更进一步,特别是因为您实际上并没有提供动机。
  • @EJP:我认为既然这是一个新项目,如果有一些新的库我可以学习它是否合适,那就太好了。例如,我听说过 JMS,但从未使用过它,我不知道是否在我的范围内。这就是我问的原因
  • 你需要定义你的范围,不是吗?例如,JMS 不是 IPC 机制,它是一个消息接口。
  • @EJP:Ok!Updated OP.Hopefully now it is more clear
  • 看看 Apache Camel

标签: java ipc rmi rpc


【解决方案1】:

【讨论】:

  • JMX 只是 RMI 上的反射层。鉴于他的 API 数量非常少,很难理解您为什么会推荐 JMX。
  • RMI 也很容易实现:比 JMX,恕我直言;它也不需要第三方 API。这些不是您推荐的正当理由。
  • 这里比较为什么 JMX stackoverflow.com/questions/5100793/…
  • @EJP:RMI 现在不被认为是“弃用”/过时的吗?
  • @Jim 不,当然不是。首先,它是 J2EE 的基础。
【解决方案2】:

我强烈建议看看 Thrift。在我使用过的所有技术(Web 服务、RMI、XML-RPC、Corba)中,它是我目前最喜欢的。基本上涉及的步骤是:

  1. 下载 Thrift 编译器。
  2. 添加Maven依赖(确保它与编译器版本相同!)我目前使用0.8.0。
  3. 编写您的 Thrift IDL(非常简单,google 一下,因为有很多示例)。
  4. 为 Java 编译它。
  5. 编写您的服务器/客户端。

通常,您可以用大约 30 行代码将服务器和客户端组合在一起。在速度和可靠性方面,它从来没有让我失望过。

【讨论】:

  • 为什么这会比套接字或 RMI 更快/更好?
  • 嗨,吉姆,没必要更快;但它绝对不慢(它肯定比 XML-RPC 快,因为它是二进制协议)。我更喜欢它而不是 RMI,因为它更好地支持向后兼容性、协议选择和可扩展性。我发现这可以帮助您选择:jnb.ociweb.com/jnb/jnbJun2009.html
【解决方案3】:

如果您只是在寻找消息传递框架,有很多可用的,例如

但是,当您使用 3rd 方框架时,您将在应用程序中添加额外的依赖项。如果它像您的情况一样非常简单,也许编写一个 TCP 客户端/服务器对于客户端/服务器范例就足够了,或者如果您正在寻找发布者/订阅者范例,那么您可以考虑使用 UDP 多播。如果您希望能够编组和解组您的数据以缓冲并使用典型的 JAVA 套接字 API 将其发送到网络,您只需要您的数据类来扩展 Serializable。

【讨论】:

    【解决方案4】:

    您可以看看Versile Java(完全披露:我是开发人员之一),它至少满足您的标准#1。在 API 文档中,这里有一些编写 remote-enabled objects、运行 serviceconnecting 到服务的示例。

    【讨论】:

    • 1) 这是在 RMI 之上吗?2) 你的库有多大?你有依赖吗?
    • 1) 不使用Java RMI;它实现了另一个记录在案的标准“Versile Platform”,2)当前 JAR 为 911k(可从网站下载,AGPL 许可证),3)没有依赖关系
    【解决方案5】:

    如果您想学习新的东西,那么我会看看 OpenSplice。原因很简单,在上面建议的技术中,只有一种技术可以为您提供以数据为中心的抽象。

    OpenSplice 最酷的地方在于它为您提供了全局数据空间的抽象,而这个全局数据空间的实现是完全分布式的并且性能非常高。

    看看http://www.slideshare.net/angelo.corsaro提供的一些幻灯片,我相信你会爱上这项技术。

    OpenSplice 终于开源了。

    黑客愉快。

    A+

    【讨论】:

      猜你喜欢
      • 2016-03-15
      • 2012-12-06
      • 1970-01-01
      • 2020-07-16
      • 2021-08-16
      • 1970-01-01
      • 1970-01-01
      • 2015-06-13
      相关资源
      最近更新 更多