双向Java客户机/服务器通信
我正在尝试用Java设计一个分布式应用程序,其中包含一些服务器和一些管理器(应用程序监视和配置服务器)。服务器和管理器之间的大部分流量都是管理器向服务器发出的请求,但是服务器应该能够在发生某些事情时通知管理器。管理者不关心彼此,服务器也不关心彼此,但是管理者应该管理所有正在运行的服务器,服务器应该由所有正在运行的管理者管理。 我不想让每个请求都通过一个中心实体 实现这两者之间通信链接的最佳方式是什么 我的想法是:双向Java客户机/服务器通信,java,sockets,communication,distributed,Java,Sockets,Communication,Distributed,我正在尝试用Java设计一个分布式应用程序,其中包含一些服务器和一些管理器(应用程序监视和配置服务器)。服务器和管理器之间的大部分流量都是管理器向服务器发出的请求,但是服务器应该能够在发生某些事情时通知管理器。管理者不关心彼此,服务器也不关心彼此,但是管理者应该管理所有正在运行的服务器,服务器应该由所有正在运行的管理者管理。 我不想让每个请求都通过一个中心实体 实现这两者之间通信链接的最佳方式是什么 我的想法是: RESTfulAPI:单向通信,因此我们需要轮询,轮询响应性较差,浪费大量资源
- RESTfulAPI:单向通信,因此我们需要轮询,轮询响应性较差,浪费大量资源
- 在每对服务器/管理器之间打开一个套接字:对我来说似乎是最好的方式,但我觉得我会重新发明轮子
- JavaRMI:看起来不错,但它需要一个中心实体(rmiregistry)。另外,如果我使用Java,我会被它困住,而且它看起来更适合点对点通信
- JMS:同样,它需要一个中心实体(JMS提供程序),而且它只支持Java
谢谢 查看AMPQ/RabbitMQ
而且它非常快速、可扩展和稳定JMS代理仅限于Java,但客户端几乎可以是任何东西 如果您不想要一个中心实体,您可以为每台服务器配备一个嵌入式代理或专用代理 我会使用ActiveMQ,因为它是最容易入门的(而且速度很快)