고가용 서버

고가용 서버는 개별 서버와 약간 다르게 실행됩니다.

모두 서버가 동일한 데이터베이스와 공통 파일 공유를 사용합니다. 파일 공유는 특히 다음과 같은 로그와 몇 개의 기타 디렉토리에 사용됩니다. logs, var/email, var/pluginsvar/repository. 각 서버는 몇 가지 구성 정보(예: 포트 및 호스트)를 개별적으로 유지보수합니다. 데이터베이스는 구성 정보, 런타임 데이터 등에 사용됩니다.

서버가 데이터베이스를 공유하므로 모든 서버는 동일한 간격으로 실행됩니다.

데이터베이스와 JMS 연결 정보 등의 몇 가지 구성 특성은 서버에 남아 있습니다. 데이터베이스 구성은 제품 설치 중에 처리됩니다. 설치 후에 추가로 구성할 필요가 없습니다.

파일 가져오기(CodeStation)

모든 서버에서 컴포넌트 버전 변경을 폴링합니다. 폴링 간격은 사용자가 구성한 매개변수로 지정됩니다(기본값으로 15분). 데이터베이스는 서버 동기화를 처리합니다. 저장소에 쓰기 전에 서버에서 데이터베이스의 잠금을 확보합니다. 폴링 시간은 작업 완료 후에 재설정됩니다.

이벤트

이벤트는 이벤트를 실행하는 서버에서 처리합니다.

워크플로우 엔진

워크플로우는 활동으로 구성됩니다. 활동은 순차적으로 실행되거나 다른 활동과 병렬로 실행 또는 이 두 방식을 조합하여 실행됩니다. 일반 워크플로우는 다음과 같은 여러 순차 활동으로 구성될 수 있습니다.

JMS 기반 통신의 경우 다음과 같은 여러 방법으로 에이전트를 구성할 수 있습니다.

모든 서버에서 보류 중인 워크플로우가 있는지 지속적으로 폴링하므로 임의의 서버가 워크플로우를 시작할 수 있습니다. 이 워크플로우를 확보하는 서버가 다음 태스크를 실행합니다.

  1. 활동 A의 런타임 인스턴스를 작성하고 데이터베이스 잠금을 획득합니다.
  2. 보낼 명령을 데이터베이스 기록합니다.
  3. JMS를 통해 에이전트에 명령을 전송합니다.
  4. 데이터베이스 잠금을 해제합니다.

작업을 완료한 후 에이전트가 JMS를 통해 응답 메시지를 보냅니다. 메시지는 데이터베이스(서버 중 하나에서 수행)와 시작된 다음 활동(서버 중 하나에서 수행)에 기록됩니다. 활동 B를 시작한 서버가 위에 설명된 단계를 실행합니다.

여기에 요약된 단순 워크플로우에서는 동일한 서버 또는 다른 서버(또는 이 둘을 조합)에서 활동을 처리할 수 있습니다. 이 워크플로우가 세 개의 병렬 활동으로 구성된 경우에도 마찬가지입니다.

애플리케이션 워크플로우는 데이터베이스의 한 레코드에서 유지보수합니다(동시에 하나의 스레드만 하나의 워크플로우를 처리함).

실패 처리

애플리케이션 처리 중에 명령 실패가 워크플로우에 표시됩니다. 오류 처리는 애플리케이션 작성자의 책임입니다. 컴포넌트 롤백은 롤백 명령/단계를 통해 처리할 수 있습니다. 여기에서 사용되는 롤백의 의미는 이전 컴포넌트 버전을 다시 설치하는 것입니다.

에이전트가 명령을 실행하는 중에 서버가 중단되면 JMS 메시(mesh)가 워크플로우를 다른 서버에 지정합니다.

명령을 실행하는 중에 에이전트가 중단되거나 사라지면(실패한 단계로 인해 에이전트 자체가 실패하지는 않음) 서버는 명령이 여전히 실행 중이라고 가정하며, 자동으로 제한시간이 초과되지 않습니다. 일반적으로 제한시간 간격을 지정하는 것은 가능하지도 않으며 실용적이지도 않습니다.


피드백