什么是好的基于Java的主从通信机制?
2022-09-02 10:42:27
我正在创建一个Java应用程序,该应用程序需要JVM之间的主从通信,可能驻留在同一台物理机器上。在Java EE应用服务器(即JBoss)内将运行一个“主”服务器,该服务器将有“从”客户端连接到它并动态注册自身以进行通信(即主服务器将不知道从属服务器的IP地址/端口,因此无法提前配置)。主服务器充当控制器,它将向从站工作,从站将定期响应通知,因此将进行双向通信。
我最初想到的是基于RPC的系统,其中每一端都是一个服务器,但它可能会变得复杂,所以我更喜欢一种机制,其中有一个开放的套接字,它们来回交谈。
我正在寻找一种低延迟的通信机制,其中消息主要是基元类型,因此不需要认真的序列化。以下是我所看到的:
- 马绍尔群岛共和国
- JMS:内置于Java,“从属”客户端将连接到应用程序服务器中的现有ConnectionFactory。
- JAX-WS/RS:主服务器和从服务器都是公开 RPC 接口以进行双向通信的服务器。
- JGroups/Hazelcast:使用共享的分布式数据结构来促进通信。
- Memcached/MongoDB:将这些作为“队列”来促进通信,尽管客户端必须进行轮询,因此会有一些延迟。
- 节俭:这似乎确实保持了持久的连接,但不确定如何将节俭服务器集成/嵌入到JBoss中。
- WebSocket/Raw Socket:这可以工作,但需要比我想要的更多的自定义代码。
我错过了什么技术吗?
编辑:还看了:
- JMX:让客户端连接到 JBoss 的 JMX 服务器,并接收双向通信的 JMX 通知。