You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
gloddy 서버는 알림 전송을 위해 1분마다 스케줄러가 수행되고, 이벤트를 발행합니다. 추후 트래픽이 증가해 오토 스케일링을 사용한다면, 각 서버에서 스케줄러가 실행되어 이벤트가 중복 발행될 위험이 있습니다.
해결 방법
ShedLock을 구현해 해결할 수 있습니다. ShedLock은 데이터 저장소에 스케줄링 작업에 대한 데이터를 삽입/갱신하여 각 인스턴스들이 해당 작업의 진행 여부를 공유할 수 있도록 합니다. ShedLock은 작업을 수행하기 전 데이터 저장소에 해당 작업에 대한 데이터를 삽입합니다. 데이터 삽입에 성공하면, 해당 인스턴스에서 작업을 수행합니다. 데이터 삽입에 실패하면 다른 인스턴스에서 수행 중인 작업이므로 작업 실행을 건너뜁니다. 작업이 완료되면 데이터 저장소에서 해당 작업에 대한 레코드를 삭제하여 잠금을 해제합니다.
그리고 만약 잠금을 보유한 즉, 작업 수행 중에 인스턴스가 다운되는 경우 ShedLock은 일정 시간 이후 잠금을 해제해 다른 인스턴스가 작업을 수행할 수 있도록 합니다. 스케줄 작업에 대한 분산 락과 같은 개념입니다.
문제 상황
gloddy 서버는 알림 전송을 위해 1분마다 스케줄러가 수행되고, 이벤트를 발행합니다. 추후 트래픽이 증가해 오토 스케일링을 사용한다면, 각 서버에서 스케줄러가 실행되어 이벤트가 중복 발행될 위험이 있습니다.
해결 방법
ShedLock을 구현해 해결할 수 있습니다. ShedLock은 데이터 저장소에 스케줄링 작업에 대한 데이터를 삽입/갱신하여 각 인스턴스들이 해당 작업의 진행 여부를 공유할 수 있도록 합니다. ShedLock은 작업을 수행하기 전 데이터 저장소에 해당 작업에 대한 데이터를 삽입합니다. 데이터 삽입에 성공하면, 해당 인스턴스에서 작업을 수행합니다. 데이터 삽입에 실패하면 다른 인스턴스에서 수행 중인 작업이므로 작업 실행을 건너뜁니다. 작업이 완료되면 데이터 저장소에서 해당 작업에 대한 레코드를 삭제하여 잠금을 해제합니다.
그리고 만약 잠금을 보유한 즉, 작업 수행 중에 인스턴스가 다운되는 경우 ShedLock은 일정 시간 이후 잠금을 해제해 다른 인스턴스가 작업을 수행할 수 있도록 합니다. 스케줄 작업에 대한 분산 락과 같은 개념입니다.
The text was updated successfully, but these errors were encountered: