2011-01-31 9 views
11

Quartz 클러스터링에 대한 몇 가지 질문이 있습니다. 특히 클러스터 내에서 트리거/실행 작업이 실행되는 방법에 대한 질문이 있습니다.작업을 수행하기 위해 Quartz 클러스터에서 노드를 선택하십시오.

  1. 쿼츠는 작업을 실행할 때 노드를 선호합니까? 마지막으로 동일한 작업을 실행 한 노드가 항상 또는 전혀 없었던 지 아니면 먼저 작업에 가장 먼저 도달 한 노드입니까?

  2. 작업을 실행할 노드를 지정할 수 있습니까?

답변

9

이에 대한 대답은 "의존적 인"것입니다.

quartz 1.x의 경우, 작업의 실행은 더 많거나 적은 무작위 노드에서 항상 (유일한) 것입니다. "무작위성"이 실제로 어느 노드에 먼저 도착하는지에 기반합니다. "바쁜 (busy)"스케줄러의 경우 (항상 실행해야 할 작업이 많을 때) 클러스터 노드간에 꽤 균형있는로드를 제공합니다. 사용하지 않는 스케줄러의 경우 (가끔 발생하는 작업 만) 때때로 단일 노드가 모든 작업을 시작하는 것처럼 보일 수 있습니다 (스케줄러가 작업 실행이 완료 될 때마다 다음 작업을 찾기 때문에 노드가 실행을 완료하기 만합니다). 다음 작업을 실행하는 경향이 있음).

쿼츠 2.0 (베타 버전 임)은 표준 쿼츠의 경우와 동일합니다. 그러나 Terracotta 사람들은 TerracottaJobStore의 Enterprise Edition을 구축하여보다 복잡한 클러스터 제어를 제공합니다. 작업을 예약 할 때 작업의 실행에 유효한 클러스터 노드를 지정하거나 노드 특성/요구 사항을 지정할 수 있습니다 "최소 100MB RAM을 사용할 수있는 노드"로 간주합니다. 이는 ehcache와 함께 작동하여 "X가 입력 한 데이터가 로컬에있는 노드에서"실행할 작업을 지정할 수 있습니다.

+0

감사합니다. – ButterflyCoder

0

나는 스프링 + AOP + memcached를 사용하는 웹 응용 프로그램에 대해이 질문을 해결했습니다. 내 작업은 이미 작업이 실행 된 경우 트래버스하는 데이터에서 알 수 있으므로 피할 필요가있는 것은 둘 이상의 노드가 동시에 실행되는 것입니다.

당신은 여기 읽을 수 있습니다 : 정보 주셔서

http://blog.oio.de/2013/07/03/cluster-job-synchronization-with-spring-aop-and-memcached/

관련 문제