0. 들어가기 전에
- 이벤트 발생 시점과 동떨어진 배치를 수행하는 경우(주기적 실행) 배치서버를 단일로 구성할 경우 배치가 수행되지 않을 수 있고, 다중으로 구성할 경우 배치 중복 처리에 대한 우려가 있을 수 있다. 각 서버간 배치 수행 시간에 차등을 두어 이를 피하는 것이 가능하나 서버별로 스케줄링을 관리해야 하는 어려움이 있다. 배치의 역할과 중요도에 따라 HA 구성을 고려할 수 있고, 이 때 zookeeper 를 이용할 수 있다.
개요
Master(active) 서버와 Client(active + standby) 서버의 정보를 관리하는 persistent node 를 각각 생성하고,
배치 서버 instance 가 구동될 때 Client node 에 ephemeral node 를 추가한다.
1. 최초 batchClientServer instance 구동
- Master/Client Data Node 생성 (persistent)
- 자신의 hostname 을 Client Data Node(batchClient) 의 Child Node 로 생성 (ephemeral)
- Master Data Node(naviBatchMaster) 에 자신의 hostname 을 기록
2-1. 이후 batchClientServer instance 구동 : Master 가 정상적인 경우
- Master Data Node 에 기록된 hostname 을 가진 Client Child Node 가 존재하는 경우
- 자신의 hostname 을 Client Data Node 에 Child Node 로 생성 (ephemeral)
2-2. 이후 batchClientServer instance 구동 : Master 가 비정상적인 경우
- Master Data Node 에 기록된 hostname 을 가진 Client Child Node 에 존재하지 않는 경우
- 자신의 hostname 을 Client Data Node 에 Child Node 로 생성 (ephemeral)
- Master Data Node 에 자신의 hostname 을 기록
3. batchClientServer instance 중지
- 배치 서버가 중지되면 zookeeper 와 세션 연결이 종료되며 이때 ephemeral 로 생성한 node 가 delete 됨
- zookeeper 에 연결된 다른 서버는 watcher 를 통해 NodeDeleted 이벤트 수신
- Master Data Node 에 기록된 hostname 을 가진 Client Child Node 가 존재하는지 확인
- Master 정보가 비정상적인 경우 자신의 hostname 을 Master Data Node 에 등록
- 이 때, Master Data Node 의 version 정보를 확인하여 여러 서버가 동시에 Master Node 를 변경하는 것을 방지
4. 자체 오류 또는 외부 요인에 의해 유효하지 않은 Master Data Node 값을 가진 경우
- 배치 스케줄러 수행시 현재 Master Node 에 기록된 정보가 정상인지 확인하여 비정상인 경우 자신을 master 로 등록
5. 배치 스케줄러 수행
- 배치 스케줄러 수행시 자신이 master 인지 확인하여 master 인 경우 배치 수행
- master 가 아닌 경우 master node 데이터를 update 함 (비정상인 경우에만 자신으로 변경 됨)
(2022.09.16)
다 필요 없고.. 그냥 shedlock 사용하면 됨 ㅠㅠ;;
'소질없는 개발' 카테고리의 다른 글
Intellij 2024.1 업데이트 이후 Kotlin Lambda Hint 사라짐 (0) | 2024.04.30 |
---|---|
[H2] Database C:\\user... not found, either pre-create it or allow remote database creation 오류 (0) | 2020.12.07 |
IntelliJ code style 적용하기 (STS 사용자) (0) | 2019.02.07 |
IntelliJ 에서 Mongo 사용하기 (0) | 2019.02.07 |
IntelliJ 에서 project explorer 가 사라짐 (0) | 2019.02.07 |