双向Java客户端/服务器通信

时间:2011-06-28 10:10:29

标签: java sockets communication distributed

我正在尝试使用一些服务器和一些管理器(应用程序监视和配置服务器)在Java中设计分布式应用程序。服务器和管理器之间的大部分流量将是管理器向服务器发出的请求,但服务器应该能够在发生事件时通知管理器。管理人员彼此不关心,服务器彼此不关心,但管理员应管理所有正在运行的服务器,服务器应由所有正在运行的管理器管理。 我不希望每个请求都通过一个中央实体。

实现此之间的通信链接的最佳方法是什么?

我的想法:

  • RESTful API:单向通信,因此我们需要轮询,响应速度较慢,浪费了大量资源。

  • 在每个服务器/经理对之间打开一个套接字:看起来对我来说是最好的方式,但我觉得我会重新发明轮子......

  • Java RMI:看起来很不错但需要一个中心实体(rmiregistry)。另外,如果我使用它,我会坚持使用Java,看起来它更适合点对点通信。

  • JMS:同样的事情,它需要一个中央实体(JMS Provider),它只是Java ......

谢谢!

2 个答案:

答案 0 :(得分:0)

查看 AMPQ / RabbitMQ

  1. 可以对RabbitMQ进行群集 - 请参阅http://www.rabbitmq.com/clustering.html
  2. 它具有大多数编程语言的绑定
  3. 并且它非常快速,可扩展且稳定

答案 1 :(得分:0)

JMS代理只是Java,但客户端可以是任何东西。

如果您不想要中央实体,则可以拥有专用于每台服务器的嵌入式代理或代理。

我会使用ActiveMQ,因为它是最容易入手(和快速)

之一