2017-11-13 20 views
0

클라이언트와 서버 간의 재 연결은 클라이언트가 초기 메시지를 보내고 서버로부터 응답을받는 초기화를 사용하여 수행됩니다. 이 초기화는 연결이 설정되기 전에 여러 번 반복 될 수 있습니다. 클라이언트와 서버는 연결 유지 연결을 통해 통신합니다. 오직 하나의 클라이언트와 많은 서버가 있습니다.서버와 클라이언트간에 재 연결 논리를 설계하는 방법은 무엇입니까?

  1. 클라이언트는
  2. 클라이언트는 항상 시도
  3. 클라이언트가, 서버 중 하나가 바람직하고 선택에 연결할 수있는 서버가 포함 된 서버 목록을 가지고 주어진 시간에 최대 1 개 서버에 연결할 수 있습니다 처음에는 기본 설정에 연결하고 그렇지 않으면 다른 서버에 연결하려고 시도합니다.
  4. 시작시 클라이언트가 처음 연결되기 전에 클라이언트의 서버 목록에 1 명의 구성원이 포함됩니다.
  5. 클라이언트가 시도 할 때 처음 연결하거나 다시 연결하면 서버에 초기 메시지를 보냄 -> 3 중 1 응답 > CHANGE_SERVER, OK, ERROR
  6. CHANGE_SERVER하고 확인 응답이 또한 기존의 하나가
  7. OK 응답을 대체 할 새로운 서버 목록을 포함 - ->는 클라이언트가 올바른 서버에 연결되어 있고이 유지 의미 SES 가능 연결
  8. CHANGE_SERVER이 -> 클라이언트가 성공적으로 지정된 서버에 연결되어 있지만 다른 하나에 연결하라고
  9. 오류를 다시 연결을 시도한다 -> 해당 서버에 연결할 수 없습니다, 다른 하나
  10. 시도 클라이언트가 연결되어 이제 메시지를 보낼 수없는 경우 다시 연결을 시도합니다.
  11. 클라이언트가 이미 연결되어 있으면 (확인을 수신함) 다시 연결을 시도하지 않습니다.

이 문제에 대한 가능한 해결책을 설계하는 데 도움이되기를 바랍니다. 내가 찾고있는 것은 클래스와 메소드 (코드 없음) 또는 이와 비슷한 메소드가있는 고급 모델이다. 구현시 전역 변수를 피할 수있게 해주는 일부 디자인. 나는 실제 구현을 위해 자바를 사용할 것이다. 나의 짧은 연구는 Actor 모델과 Akka 프레임 워크의 방향으로 나를 가리키고있다.

+0

여기에는 많은 수업이없고 프레임 워크가 아닙니다. 먼저 뭔가를 쓰고 어떻게 생겼는지보십시오. – rghome

답변

0

연결 논리를 처리하는 데 필요한 상태 시스템에 대해 잘 알고있는 것 같습니다. 따라서 akke : FSM의 Finite State Machine 도우미를 사용하는 것이 좋습니다. 그렇게하면 쉽게 설명했던 것을 구현할 수 있습니다.

액서스와 메시지 전달을 사용하여 연결을 관리하기 때문에 Akka를 사용하여 네트워크 I/O를 처리하려는 경우 특히 유용합니다. https://doc.akka.io/docs/akka/current/java/io.html.

+0

고맙습니다. 유망한 길로 보입니다. 조사 할 것입니다. –