Active-Standby를 위한


Active-Standby를 위한 1
능동대기용 DB복제 기반기술 개발의 개략도

GitHub 주소 : https://github.com/er3busNote/jpa-replication-middleware-with-logging

이 프로젝트는 WebSocket을 기반으로 Profile.active 환경에서 마스터/슬레이브 설정을 위한 분기 처리를 목표로 합니다.

프로젝트 패키지 구성


Active-Standby를 위한 2
프로젝트 패키지 구성

지금까지 프로젝트에서 구현 특징 다음을 들었다

  • 메인 서버 장애 시 백업 서비스 없이 DB 이중화를 지원하는 애플리케이션 서비스 자체가 1초 주기로 데이터를 복제하고 장애 조치(장애 대응) 기능을 지원하는 서비스 구현을 목표로 한다.

  • Spring Boot 앱 자체에서 지원하는 로그백 기능을 사용하여 0.1초마다 로깅하여 실시간으로 장애 지점을 확인하는 계획을 세워야 합니다.

  • 구현된 DB 복제 방법: 지금까지는 AUTO_INCREMENT 속성이 있는 기본 키만 복제를 구성할 수 있습니다.

현재까지 최종 구현 인프라 구성다음과 같다.


Active-Standby를 위한 3
활성-대기 인프라 구성

  1. 봄콩의 생명주기와 관련 IoC 컨테이너(@service note) 생성 후 bean 초기화 콜백 방법(@PostConstruct)를 호출하는 부분에서 WebSocket 클라이언트를 실행하는 초기 작업을 계속합니다.

  2. DI는 WebSocket 클라이언트에 주입됩니다.

    accountService의 getLastId 메소드(1개의 레코드) 마지막 행의 인덱스 값을 가져옵니다.

  3. WebSocketSession의 sendMessage 메서드를 사용하여 마지막 행의 인덱스 값을 WebSocket 서버로 보냅니다.

  4. WebSocket 서버 측에서 accountService의 getLastIds 메소드(N 레코드) 관련 정보를 다시 클라이언트로 보냅니다.

    순차적으로 게시됨
  5. WebSocket 클라이언트 측에서 데이터를 수신하면 accountService의 saveReplica 메소드를 실행합니다.

    마스터 DB그리고 슬레이브 DB~ 사이 동기화추가로

추가 고려 사항

  • AUTO_INCREMENT 속성이 아닌 기본 키에 대한 복제 구성 고려
  • 다중 슬레이브 구성 계획 생성