더북(TheBook)

모든 노드가 접속해 자신의 상태를 저장할 수 있는 서버를 만들어 보겠습니다. 이름은 Distributor로 설정합니다.

안정적으로 분산 처리를 하려면 Distributor의 다음 세 가지 상태를 고려해야 합니다. 서비스 중Distributor에 문제가 발생해도 마이크로서비스는 안정적으로 동작하도록 하는 것이 가장 중요합니다.

1. Distributor가 실행되지 않았을 때도 노드들은 Distributor에 주기적으로 접속을 시도해야 합니다.

2. 노드가 Distributor에 접속하거나 접속이 종료되었을 때 Distributor는 이를 인지하고, 다른 노드에 이 사실을 전파해야 합니다.

3. Distributor가 종료되어도 각 노드는 알고 있는 정보를 이용해 노드 간 접속 상태를 유지해야 하며, 1 상태로 되돌아가 Distributor에 다시 접속될 때까지 주기적으로 접속을 시도해야 합니다.


앞에서 HTTP 서버와 TCP 서버를 만들었습니다. Distributor는 둘 중 어떤 타입으로 만드는 것이 더 좋을까요? 노드들의 접속 상태를 알려면 접속 종료 이벤트를 인지할 수 있는 TCP 서버로 만드는 것이 더 유리합니다.

Distributor 입장에서 각 노드는 클라이언트이지만, 요청을 처리하는 서버가 되기도 합니다. 생산성을 높일 수 있도록 Distributor와 각 노드에서 공통으로 사용할 ClientServer 클래스를 만들고, 이 클래스를 상속받아 구현해 보겠습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.