다음을 통해 공유


오케스트레이션 디하이드레이션 및 리하이드레이션

여러 개의 장기 실행 비즈니스 프로세스를 동시에 실행하면 메모리 및 성능 문제가 발생할 수 있습니다. 오케스트레이션 엔진은 오케스트레이션 인스턴스를 "디하이드레이션" 및 "리하이드레이션"하여 이러한 문제를 해결합니다.

디하이드레이션은 오케스트레이션의 상태를 SQL Server 데이터베이스로 serialize하는 프로세스입니다. 리하일레이션은 데이터베이스에서 오케스트레이션의 마지막 실행 상태를 역직렬화하는 프로세스의 반대입니다. 디하이드레이션은 메모리에서 한 번에 인스턴스화되어야 하는 오케스트레이션 수를 줄여 시스템 리소스의 사용을 최소화하는 데 사용됩니다.

Dehydration

오케스트레이션 엔진에서 오케스트레이션 인스턴스가 비교적 긴 시간 동안 유휴 상태에 있었음을 감지하는 경우가 있습니다. 엔진은 임계값을 계산하여 여러 작업이 수행되기까지 기다리는 시간을 결정하고 임계값이 초과되면 인스턴스를 디하이드레이션합니다. 이러한 상황은 다음과 같은 경우에 발생할 수 있습니다.

  • 오케스트레이션이 메시지 수신을 기다리는 중 대기 시간이 엔진에서 결정한 임계값보다 긴 경우

  • 오케스트레이션이 메시지에 대해 "수신 대기"되는 경우, 수신 대기 셰이프를 사용할 때와 마찬가지로 엔진에서 결정하는 임계값 전에 분기가 트리거되지 않습니다. 이에 대한 유일한 예외는 수신 대기 셰이프에 활성화 수신이 포함된 경우입니다.

  • 오케스트레이션의 지연 시간이 엔진에서 결정한 임계값보다 긴 경우

    엔진은 상태를 저장하여 인스턴스를 디하이드레이션하고 이 인스턴스에 사용되던 메모리를 비웁니다. 엔진은 유휴 오케스트레이션 인스턴스를 디하이드레이션하여 여러 장기 실행 비즈니스 프로세스가 동일한 컴퓨터에서 동시에 실행될 수 있도록 만듭니다.

    BizTalk Server에서 디하이드레이션이 작동되는 방법을 구성하기 위해 설정할 수 있는 속성에는 12가지가 있습니다. 이 섹션의 항목에서는 이러한 속성 및 기본값을 나열하여 설명하고 다양한 값이 디하이드레이션 동작에 미치는 영향에 대해 설명합니다.

리하드레이션

메시지가 수신되거나 Delay 셰이프에 지정된 시간 제한이 만료될 때 오케스트레이션 인스턴스를 리하이드레이션하도록 오케스트레이션 엔진을 트리거할 수 있습니다. 그런 다음 엔진은 저장된 오케스트레이션 인스턴스를 메모리에 로드하고, 해당 상태를 복원하고, 중단된 시점에서부터 인스턴스를 다시 실행합니다. 오케스트레이션에서 셰이프를 사용하는 방법에 대한 자세한 내용은 오케스트레이션 셰이프를 참조하세요.

오케스트레이션을 두 개 이상의 서버에서 실행하도록 구성할 수 있습니다. 오케스트레이션 인스턴스를 디하이드레이션한 다음에 이러한 서버 중 한 곳에서 리하이드레이션할 수 있습니다. 한 서버가 다운되면 엔진이 다른 서버에서 이전 상태에 이어서 오케스트레이션을 계속 실행합니다. 엔진은 또한 이 기능을 사용하여 서버 간 로드 균형 조정을 구현합니다.

다음 단계