이 오래된 질문이지만, 어쩌면 아직도 누군가를 위해 도움이 될 수있다, 그래서 그것을 대답하려고합니다.
클러스터에서 실행되지 않는 다른 서버간에 동일한 Timers 테이블을 공유 할 수 있다고 가정하면 (실제로 가능하다고 생각합니다) TimerService 구현과 관련된 몇 가지 문제가 나타납니다 (예 : 각 서버가 배포 된 것으로 가정). 동일한 Timers는이 테이블의 다른 레코드와 연관된 각 Timer 인스턴스가됩니다. 그렇다면 타이머가 만료되면 비즈니스 논리가 두 번 이상 실행됩니다. 배포 프로세스가 타이머 당 레코드 만 생성하는 경우 다른 TimerServices가 동일한 정보에 동시에 액세스/수정하려고하면 TimerService가 제대로 실행됩니까?
반면에이 아이디어의이면에있는 일종의 내결함성을 얻으려면 모든 서버가 동일한 타이머를 배포해야한다는 문제가 여전히 있습니다. 그렇지 않으면 TimerService가 다음과 같은 타이머를 실행하려고 시도 할 수 있습니다. 서버에 배포되지 않습니다.
고 가용성을 제공하기위한 솔루션은 이미 구현되었으며 HATimerService라고합니다.
클러스터에는 하나의 테이블 만 있지만 차이점은 TimerService를 실행하는 노드가 실패하고 다른 노드가 마스터가되므로 시간별로 고유 한 TimerService가 활성화되어 있으므로 존재하지 않는 것입니다. 정보로 인한 노드는 데이터베이스에 있습니다.