타이머 서비스를 위해 클러스터된 환경 고려사항

단일 서버 환경에서는 지정된 Bean에서 Bean의 제한시간 메소드를 호출해야 하는 서버 인스턴스는 분명합니다. 다중 서버 클러스터된 환경에서는 동작을 제어하는 다른 고려사항이 있습니다.

WebSphere® Application Server는 EJB(Enterprise JavaBeans) 타이머 서비스를 구현합니다. 사용자 비즈니스 필요에 따라, 지속적 타이머 또는 비지속적 타이머를 사용할 수 있습니다. 서버의 라이프사이클을 벗어나 서버가 종료 및 다시 시작되더라도 지속될 수 있는 타이머 존재성을 보장받기 위해 타이머 기반 이벤트에 대한 타이머를 작성하려는 경우, 지속적 타이머가 유용합니다. 서버를 시작하면 이전에 시작된 지속적 타이머는 자동으로 시작되며 데이터베이스 인스턴스를 요구합니다. 애플리케이션 서버가 중지되거나 활성 상태에 남아있는데 실패한 경우, 비지속적 타이머는 취소된 데이터 저장소를 사용하지 않습니다. 비지속적 타이머는 이들이 작성된 서버에만 존재합니다. 클러스터 환경에서, 사용자 EJB 애플리케이션은 자동으로 비지속적 타이머를 작성하고, 이 애플리케이션은 여러 서버로 미러되며, 각 서버는 그 서버 환경 내에서 실행하는 자신만의 비지속적 타이머를 갖습니다. 프로그래밍 방식으로 작성된 비-지속적 타이머만이 작성되었던 클러스터 멤버에서 실행됩니다.

다중 서버 클러스터된 서버 환경에서 지속적 타이머를 구성하면, 서버 인스턴스가 지정된 Bean에서 제한시간 메소드를 호출하는 다음 가능성을 고려하십시오.

  • 서버 프로세스나 클러스터 멤버마다 타이머 서비스 데이터베이스를 분리합니다. 이것이 기본 구성입니다. 타이머를 작성한 서버 인스턴스나 클러스터 멤버만이 타이머에 액세스하고 Bean의 제한시간 메소드를 실행할 수 있습니다. 서버 인스턴스를 사용할 수 없는 경우, 타이머는 지정된 시간에 실행되지 않으며 서버가 다시 시작될 때까지 실행되지 않습니다. 또한 엔터프라이즈 Bean이 getTimers() 메소드를 호출하는 경우, 서버 인스턴스에서 작성된 이 타이머만이 발견됩니다. 엔터프라이즈 Bean이 이와 연관된 모든 타이머를 취소하려는 경우 엔터프라이즈 Bean이 제거되는 경우와 같이 예기치 않은 동작이 발생할 수 있습니다. 이 구성은 프로덕션 레벨 시스템에 대해 권장되지 않습니다.
  • 클러스터의 공유된 또는 공통 타이머 서비스 데이터베이스입니다. 타이머는 서버 프로세스나 클러스터 멤버에서 작성되며 액세스될 수 있습니다. 서버 프로세스에서 작성된 타이머는 클러스터의 다른 서버 프로세스의 getTimers() 메소드에서 발견됩니다. 엔티티 Bean이 제거되면 작성된 위치와 상관 없이 모든 타이머가 취소됩니다. 그러나 클러스터의 단일 서버에서 모든 타이머가 실행됩니다. 즉, Bean의 제한시간 메소드는 단일 서버의 모든 타이머에 대해 실행됩니다. 타이머를 실행하는 서버는 공통 데이터베이스 테이블에서 잠금을 얻는 서버 프로세스에 따라 다릅니다. 타이머를 실행하는 서버가 사용 불가능하게 되면 다른 서버나 클러스터 멤버가 승계하여 스케줄된 시간에 모든 타이머를 실행하기 시작합니다. 이 구성은 모든 프로덕션 레벨 시스템에 대해 권장됩니다.
  • 문제점 방지 문제점 방지: 다중 스레드 데이터베이스 액세스를 사용하여 애플리케이션에서 EJB 타이머 서비스를 사용하면, 애플리케이션 플로우는 교착 상태 문제가 발생할 수 있습니다.gotcha
    이를 방지하려면 wsPessimisticUpdate 액세스 인텐트을 사용합니다. 이 액세스 인텐트로 사용자 애플리케이션의 파인더 메소드가 일반 select 대신 select for update 명령문을 실행하게 됩니다. 다중 스레드가 잠금을 에스컬레이션하여 업데이트를 수행하면 결국 잠금 에스컬레이션 교착 상태를 방지합니다.
엔터프라이즈 Bean에 대한 EJB 타이머 서비스 사용에 대한 정보를 참조하여 각 서버 프로세스 타이머 서비스에 사용될 데이터 소스(데이터베이스)를 구성하는 방법에 대해 배웁니다.
문제점 방지 문제점 방지: 타이머 서비스를 위한 데이터 소스가 변경되어 다른 데이터베이스를 가리키면, 서버 프로세스는 다음 서버 시작 시 자동으로 해당 데이터베이스에 필요한 테이블을 작성하도록 시도합니다.gotcha
서버 프로세스 시작과 연관된 사용자 ID가 구성된 타이머 서비스 데이터베이스에 데이터베이스 테이블을 작성하도록 권한 부여되지 않으면, 테이블이 수동으로 작성되어야 합니다.
문제점 방지 문제점 방지: 제품에서 프록시 서버를 사용하는 경우, 스케줄러가 EJB 타이머 서비스에 사용할 스케줄러로 구성되면 셀 레벨에 스케줄러를 정의하지 마십시오. 이를 수행하면 지속적 타이머가 실행되지 않습니다. 프록시 서버가 스케줄러 리스를 가져오면 발생할 수 있습니다. 프록시 서버에서 실행되는 애플리케이션이 없기 때문에, 스케줄러에서 전송된 타이머 이벤트를 처리할 애플리케이션 코드가 없습니다. gotcha
문제점 방지 문제점 방지: EJB Timer/Scheduler를 구성할 때, 기본 스케줄러는 단순한 파일 기반 Apache Derby 데이터베이스를 기본값으로 사용하기 때문에 기능 환경을 신속하게 가져와 실행할 수 있다는 점을 기억하십시오. Derby 데이터베이스는 프로덕션 환경에 사용하지 마십시오. 더구나 기본 Derby 데이터베이스는 클러스터된 작업 스케줄러 또는 클러스터된 일괄처리 컨테이너도 지원하지 않습니다. gotcha

주제 유형을 표시하는 아이콘 참조 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rejb_timerservice_v8
파일 이름:rejb_timerservice_v8.html