我正在创建一个Java应用程序,它需要JVM之间的主从通信,可能驻留在相同的物理机上。将有一个在Java应用服务器(即JBoss)内部运行的“主”服务器,它将有“从”客户机连接到它并动态地注册自己以进行通信(也就是说,主服务器不知道从服务器的IP地址/端口,因此不能预先配置)。主服务器充当控制器,将工作分配给从服务器,从服务器将定期响应通知,因此将存在双向通信。
我最初考虑的是基于RPC的系统,其中每一端都是一台服务器,但这可能会变得复杂,所以我更喜欢一种有开放套接字的机制,它们可以来回通信。
我正在寻找一种低延迟的通信机制,其中消息将主要是原始类型,因此不需要进行认真的序列化。这是我看过的:
我是不是遗漏了什么技术?
编辑:还查看了:
发布于 2010-04-09 06:00:33
如果你正在寻找基于Java的东西,我建议你使用JMS。它具有您正在寻找的所有功能,外加一个强大的应用程序服务器,如JBoss。但是,另一种不完全基于java且不使用队列的选择是使用HTTP协议和JAXB (RESTful Web服务)。这是一种在双方之间进行交流的非常简单的方式。您的对象将使用JAXB转换为XML,并传输到另一端,然后在接收到它后将其转换回object。
发布于 2010-04-08 03:27:24
老实说,我只会坚持使用JMS。您有一个队列,您的从属程序可以从中取出消息,还有一个队列可以将消息放回队列中。您可以在信封上设置有关谁处理了每封邮件(用于记帐)的属性。您可以使用许多J2EE提供程序(glassfish、jboss)获得持久性。
此外,您可以使用它轻松地迁移到多服务器分布式JVM,而无需额外的编程。
然而,在某些情况下,它可能不符合“低延迟”的定义。
发布于 2010-04-08 03:21:55
另外两个选项:
Zookeeper (http://hadoop.apache.org/zookeeper/)还没有使用过它,但在这里听起来很合适。RabbitMQ (http://www.rabbitmq.com/)低延迟消息队列。这里有很大的灵活性。
https://stackoverflow.com/questions/2594815
复制相似问题