동일한 물리적 컴퓨터에있을 수있는 JVM 간의 마스터 - 슬레이브 통신이 필요한 Java 응용 프로그램을 만들고 있습니다. Java EE 응용 프로그램 서버 (예 : JBoss) 내부에서 실행되는 "마스터"서버가 "슬레이브"클라이언트에 연결되어 통신을 위해 동적으로 등록됩니다 (즉 마스터는 해당 서버의 IP 주소/포트를 알지 못합니다). 노예는 미리 구성 할 수 없습니다). 마스터 서버는 슬레이브로 작업을 수행 할 컨트롤러 역할을하며 슬레이브는 주기적으로 알림으로 응답하므로 양방향 통신이 가능합니다.Java 기반의 마스터 - 슬레이브 통신 메커니즘은 무엇입니까?
원래 각 측이 서버가 될 RPC 기반 시스템을 생각했지만 복잡 할 수 있으므로 개방형 소켓이있는 메커니즘을 선호하며 앞뒤로 이야기합니다.
메시지가 대부분 기본 유형이기 때문에 대기 시간이 짧은 통신 메커니즘을 찾고 있으므로 심각한 직렬화가 필요하지 않습니다.
- RMI : 내장 된 자바의 "노예"클라이언트가 애플리케이션 서버의 기존 ConnectionFactory를 연결할 것 여기에 내가 검토 한 것입니다.
- JAX-WS/RS : 마스터와 슬레이브 모두 양방향 통신을 위해 RPC 인터페이스를 제공하는 서버입니다.
- JGroups/Hazelcast : 공유 분산 데이터 구조를 사용하여 통신을 용이하게합니다.
- Memcached/MongoDB : 클라이언트가 폴링해야 대기 시간이 생길 수 있지만 통신을 용이하게하기 위해이를 "대기열"로 사용하십시오.
- 드리프트 : 이것은 영구 연결을 유지하는 것처럼 보인다, 그러나 /는
- 웹 소켓/원자재 소켓이 보스로 드리프트 서버 포함 통합하는 방법을 잘 : 이것은 일 것이다, 그러나 더 많은 사용자 정의 코드를 필요로 나보다이 좋겠 처럼.
누락 된 기술이 있습니까?
편집 :
- JMX : 또한 바라 보았다 클라이언트가 JBoss의 'JMX 서버에 연결하고 양방향 COMMS에 대한 JMX 알림을받을 수 있나요.
두 앱과 SafeWord 프로토콜 둘레에 가죽 또는 PVC 층이 필요하다고 상상해보십시오. – FrustratedWithFormsDesigner