2012-04-03 2 views
3

Quartz 문서를 살펴 봤는데 다음 질문에 대한 명확한 답을 찾을 수없는 것 같습니다 : 클러스터 환경에서 Quartz Scheduler를 사용하고 있지만 시스템이 동기화되지 않으면 어떻게됩니까? 우리는 JobStoreTX를 사용할 것입니까?) Quartz가 여러 작업을 시작합니까? 데이터베이스 행 항목을 잠그면 하나만 실행됩니까?Quartz Scheduler 클러스터 시간 동기화

답변

1

불행히도 나는 그것이 문서화되어 있다고 생각하지 않지만 결과가 그렇게 파괴적이고 오류가 없다고 생각합니다.

클러스터 여론 조사의 각 석영 스케줄러 인스턴스 데이터베이스마다 몇 (나는 그것이 now - 30now + 60 초 사이에 다음 예약 된 시간에 모든 작업에 대해 검색 기본적으로 생각 발사 할 수있는 새로운 일자리를 찾기 위해 노력하고 초 -하지만이 관계가 없으며 달려있다 on 구성). 이 작업은 여러 인스턴스가 동시에 새 작업을 폴링 할 가능성이 높기 때문에 클러스터에서 분명 안전합니다.

서버 시간이 클러스터에서 동기화되지 않은 경우 서버 중 하나에 미래의 시계가 있다고 가정합니다. 이 서버는 실제 서버보다 늦었다 고 생각하여 작업을 너무 일찍 시작하거나 적어도 다른 모든 서버보다 먼저 시작합니다. 즉, 단일 서버가 모든 작업이 아니라면 더 많은 작업을 실행하여 나머지 클러스터에서 작업을 도용합니다. 이것은 안전하지 않습니다 ,하지만 비대칭 클러스터로드가 발생합니다.

이 문제를 피하기 위해 모든 서버에서 데이터베이스 시간 사용을 제안하는 문제를 제기하는 것이 고려되었습니다. 그러나 의 인기와 외부 시간 소스 사용의 복잡성은 나쁜 생각입니다.

관련 문제