首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是好的基于Java的主从式通信机制?

什么是好的基于Java的主从式通信机制?
EN

Stack Overflow用户
提问于 2010-04-08 02:15:09
回答 11查看 6.8K关注 0票数 20

我正在创建一个Java应用程序,它需要JVM之间的主从通信,可能驻留在相同的物理机上。将有一个在Java应用服务器(即JBoss)内部运行的“主”服务器,它将有“从”客户机连接到它并动态地注册自己以进行通信(也就是说,主服务器不知道从服务器的IP地址/端口,因此不能预先配置)。主服务器充当控制器,将工作分配给从服务器,从服务器将定期响应通知,因此将存在双向通信。

我最初考虑的是基于RPC的系统,其中每一端都是一台服务器,但这可能会变得复杂,所以我更喜欢一种有开放套接字的机制,它们可以来回通信。

我正在寻找一种低延迟的通信机制,其中消息将主要是原始类型,因此不需要进行认真的序列化。这是我看过的:

  • RMI
  • JMS:内置到Java中,“从属”客户端将连接到应用程序server.
  • JAX-WS/RS:中的现有ConnectionFactory主服务器和从属服务器都将是为双向
    • RMI
    • JMS:提供RPC接口的服务器使用共享分布式数据结构来促进通信,使用这些作为“队列”来促进通信,尽管客户端将不得不轮询以使得将存在一些latency.
    • Thrift:这看起来确实保持了持久连接,但不确定如何将Thrift服务器集成/嵌入到JBoss
    • WebSocket/Raw套接字中:这是可行的,但需要比我希望的更多的自定义代码。

我是不是遗漏了什么技术?

编辑:还查看了:

  • JMX :让客户端连接到JBoss的JMX服务器并接收双向通信的JMX通知。
EN

回答 11

Stack Overflow用户

发布于 2010-04-09 06:00:33

如果你正在寻找基于Java的东西,我建议你使用JMS。它具有您正在寻找的所有功能,外加一个强大的应用程序服务器,如JBoss。但是,另一种不完全基于java且不使用队列的选择是使用HTTP协议和JAXB (RESTful Web服务)。这是一种在双方之间进行交流的非常简单的方式。您的对象将使用JAXB转换为XML,并传输到另一端,然后在接收到它后将其转换回object。

票数 5
EN

Stack Overflow用户

发布于 2010-04-08 03:27:24

老实说,我只会坚持使用JMS。您有一个队列,您的从属程序可以从中取出消息,还有一个队列可以将消息放回队列中。您可以在信封上设置有关谁处理了每封邮件(用于记帐)的属性。您可以使用许多J2EE提供程序(glassfish、jboss)获得持久性。

此外,您可以使用它轻松地迁移到多服务器分布式JVM,而无需额外的编程。

然而,在某些情况下,它可能不符合“低延迟”的定义。

票数 4
EN

Stack Overflow用户

发布于 2010-04-08 03:21:55

另外两个选项:

Zookeeper (http://hadoop.apache.org/zookeeper/)还没有使用过它,但在这里听起来很合适。RabbitMQ (http://www.rabbitmq.com/)低延迟消息队列。这里有很大的灵活性。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2594815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档