GitHub 주소 : https://github.com/er3busNote/jpa-replication-middleware-with-logging
이 프로젝트는 WebSocket을 기반으로 Profile.active 환경에서 마스터/슬레이브 설정을 위한 분기 처리를 목표로 합니다.
프로젝트 패키지 구성
지금까지 프로젝트에서 구현 특징 다음을 들었다
- 메인 서버 장애 시 백업 서비스 없이 DB 이중화를 지원하는 애플리케이션 서비스 자체가 1초 주기로 데이터를 복제하고 장애 조치(장애 대응) 기능을 지원하는 서비스 구현을 목표로 한다.
- Spring Boot 앱 자체에서 지원하는 로그백 기능을 사용하여 0.1초마다 로깅하여 실시간으로 장애 지점을 확인하는 계획을 세워야 합니다.
- 구현된 DB 복제 방법: 지금까지는 AUTO_INCREMENT 속성이 있는 기본 키만 복제를 구성할 수 있습니다.
현재까지 최종 구현 인프라 구성다음과 같다.
- 봄콩의 생명주기와 관련 IoC 컨테이너(@service note) 생성 후 bean 초기화 콜백 방법(@PostConstruct)를 호출하는 부분에서 WebSocket 클라이언트를 실행하는 초기 작업을 계속합니다.
- DI는 WebSocket 클라이언트에 주입됩니다.
accountService의 getLastId 메소드(1개의 레코드) 마지막 행의 인덱스 값을 가져옵니다. - WebSocketSession의 sendMessage 메서드를 사용하여 마지막 행의 인덱스 값을 WebSocket 서버로 보냅니다.
- WebSocket 서버 측에서 accountService의 getLastIds 메소드(N 레코드) 관련 정보를 다시 클라이언트로 보냅니다.
순차적으로 게시됨 - WebSocket 클라이언트 측에서 데이터를 수신하면 accountService의 saveReplica 메소드를 실행합니다.
마스터 DB그리고 슬레이브 DB~ 사이 동기화추가로
추가 고려 사항
- AUTO_INCREMENT 속성이 아닌 기본 키에 대한 복제 구성 고려
- 다중 슬레이브 구성 계획 생성