我正在尝试使用一些服务器和一些管理器(应用程序监视和配置服务器)在Java中设计分布式应用程序。服务器和管理器之间的大部分流量将是管理器向服务器发出的请求,但服务器应该能够在发生事件时通知管理器。管理人员彼此不关心,服务器彼此不关心,但管理员应管理所有正在运行的服务器,服务器应由所有正在运行的管理器管理。 我不希望每个请求都通过一个中央实体。
实现此之间的通信链接的最佳方法是什么?
我的想法:
RESTful API:单向通信,因此我们需要轮询,响应速度较慢,浪费了大量资源。
在每个服务器/经理对之间打开一个套接字:看起来对我来说是最好的方式,但我觉得我会重新发明轮子......
Java RMI:看起来很不错但需要一个中心实体(rmiregistry)。另外,如果我使用它,我会坚持使用Java,看起来它更适合点对点通信。
JMS:同样的事情,它需要一个中央实体(JMS Provider),它只是Java ......
谢谢!
答案 0 :(得分:0)
查看 AMPQ / RabbitMQ
并且它非常快速,可扩展且稳定
答案 1 :(得分:0)
JMS代理只是Java,但客户端可以是任何东西。
如果您不想要中央实体,则可以拥有专用于每台服务器的嵌入式代理或代理。
我会使用ActiveMQ,因为它是最容易入手(和快速)
之一